diff --git a/3rdparty/glslang/SPIRV/GLSL.ext.AMD.h b/3rdparty/glslang/SPIRV/GLSL.ext.AMD.h index 5121ed991..7e97be38f 100644 --- a/3rdparty/glslang/SPIRV/GLSL.ext.AMD.h +++ b/3rdparty/glslang/SPIRV/GLSL.ext.AMD.h @@ -33,7 +33,7 @@ enum Decoration; enum Op; static const int GLSLextAMDVersion = 100; -static const int GLSLextAMDRevision = 5; +static const int GLSLextAMDRevision = 6; // SPV_AMD_shader_ballot static const char* const E_SPV_AMD_shader_ballot = "SPV_AMD_shader_ballot"; @@ -106,4 +106,12 @@ static const char* const E_SPV_AMD_shader_image_load_store_lod = "SPV_AMD_shader static const Capability CapabilityImageReadWriteLodAMD = static_cast(5015); +// SPV_AMD_shader_fragment_mask +static const char* const E_SPV_AMD_shader_fragment_mask = "SPV_AMD_shader_fragment_mask"; + +static const Capability CapabilityFragmentMaskAMD = static_cast(5010); + +static const Op OpFragmentMaskFetchAMD = static_cast(5011); +static const Op OpFragmentFetchAMD = static_cast(5012); + #endif // #ifndef GLSLextAMD_H diff --git a/3rdparty/glslang/SPIRV/GlslangToSpv.cpp b/3rdparty/glslang/SPIRV/GlslangToSpv.cpp index a82867a4a..40f7508e4 100755 --- a/3rdparty/glslang/SPIRV/GlslangToSpv.cpp +++ b/3rdparty/glslang/SPIRV/GlslangToSpv.cpp @@ -453,15 +453,13 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI return spv::BuiltInCullDistance; case glslang::EbvViewportIndex: - if (!memberDeclaration) { - builder.addCapability(spv::CapabilityMultiViewport); - if (glslangIntermediate->getStage() == EShLangVertex || - glslangIntermediate->getStage() == EShLangTessControl || - glslangIntermediate->getStage() == EShLangTessEvaluation) { + builder.addCapability(spv::CapabilityMultiViewport); + if (glslangIntermediate->getStage() == EShLangVertex || + glslangIntermediate->getStage() == EShLangTessControl || + glslangIntermediate->getStage() == EShLangTessEvaluation) { - builder.addExtension(spv::E_SPV_EXT_shader_viewport_index_layer); - builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT); - } + builder.addExtension(spv::E_SPV_EXT_shader_viewport_index_layer); + builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT); } return spv::BuiltInViewportIndex; @@ -478,17 +476,14 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI return spv::BuiltInSampleMask; case glslang::EbvLayer: - if (!memberDeclaration) { - builder.addCapability(spv::CapabilityGeometry); - if (glslangIntermediate->getStage() == EShLangVertex || - glslangIntermediate->getStage() == EShLangTessControl || - glslangIntermediate->getStage() == EShLangTessEvaluation) { + builder.addCapability(spv::CapabilityGeometry); + if (glslangIntermediate->getStage() == EShLangVertex || + glslangIntermediate->getStage() == EShLangTessControl || + glslangIntermediate->getStage() == EShLangTessEvaluation) { - builder.addExtension(spv::E_SPV_EXT_shader_viewport_index_layer); - builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT); - } + builder.addExtension(spv::E_SPV_EXT_shader_viewport_index_layer); + builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT); } - return spv::BuiltInLayer; case glslang::EbvPosition: return spv::BuiltInPosition; @@ -2485,10 +2480,6 @@ bool TGlslangToSpvTraverser::filterMember(const glslang::TType& member) if (member.getFieldName() == "gl_ViewportMaskPerViewNV" && extensions.find("GL_NVX_multiview_per_view_attributes") == extensions.end()) return true; - if ((member.getFieldName() == "gl_ViewportIndex" || member.getFieldName() == "gl_Layer") && - extensions.find(glslang::E_GL_ARB_shader_viewport_layer_array) == extensions.end() && - extensions.find("GL_NV_viewport_array2") == extensions.end()) - return true; return false; }; @@ -2936,8 +2927,6 @@ void TGlslangToSpvTraverser::declareUseOfStructMember(const glslang::TTypeList& case glslang::EbvCullDistance: case glslang::EbvPointSize: #ifdef NV_EXTENSIONS - case glslang::EbvLayer: - case glslang::EbvViewportIndex: case glslang::EbvViewportMaskNV: case glslang::EbvSecondaryPositionNV: case glslang::EbvSecondaryViewportMaskNV: @@ -3204,9 +3193,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO glslang::TCrackedTextureOp cracked; node->crackTexture(sampler, cracked); - const bool isUnsignedResult = - node->getType().getBasicType() == glslang::EbtUint64 || - node->getType().getBasicType() == glslang::EbtUint; + const bool isUnsignedResult = node->getType().getBasicType() == glslang::EbtUint; // Check for queries if (cracked.query) { @@ -3358,6 +3345,45 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO } } +#ifdef AMD_EXTENSIONS + // Check for fragment mask functions other than queries + if (cracked.fragMask) { + assert(sampler.ms); + + auto opIt = arguments.begin(); + std::vector operands; + + // Extract the image if necessary + if (builder.isSampledImage(params.sampler)) + params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler); + + operands.push_back(params.sampler); + ++opIt; + + if (sampler.isSubpass()) { + // add on the (0,0) coordinate + spv::Id zero = builder.makeIntConstant(0); + std::vector comps; + comps.push_back(zero); + comps.push_back(zero); + operands.push_back(builder.makeCompositeConstant(builder.makeVectorType(builder.makeIntType(32), 2), comps)); + } + + for (; opIt != arguments.end(); ++opIt) + operands.push_back(*opIt); + + spv::Op fragMaskOp = spv::OpNop; + if (node->getOp() == glslang::EOpFragmentMaskFetch) + fragMaskOp = spv::OpFragmentMaskFetchAMD; + else if (node->getOp() == glslang::EOpFragmentFetch) + fragMaskOp = spv::OpFragmentFetchAMD; + + builder.addExtension(spv::E_SPV_AMD_shader_fragment_mask); + builder.addCapability(spv::CapabilityFragmentMaskAMD); + return builder.createOp(fragMaskOp, resultType(), operands); + } +#endif + // Check for texture functions other than queries bool sparse = node->isSparseTexture(); bool cubeCompare = sampler.dim == glslang::EsdCube && sampler.arrayed && sampler.shadow; @@ -3529,7 +3555,7 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg const glslang::TIntermSequence& glslangArgs = node->getSequence(); const glslang::TQualifierList& qualifiers = node->getQualifierList(); - // Encapsulate lvalue logic, used in two places below, for safety. + // Encapsulate lvalue logic, used in several places below, for safety. const auto isLValue = [](int qualifier, const glslang::TType& paramType) -> bool { return qualifier != glslang::EvqConstReadOnly || paramType.containsOpaque(); }; diff --git a/3rdparty/glslang/SPIRV/SPVRemapper.cpp b/3rdparty/glslang/SPIRV/SPVRemapper.cpp index e8031d022..bc7f4788f 100755 --- a/3rdparty/glslang/SPIRV/SPVRemapper.cpp +++ b/3rdparty/glslang/SPIRV/SPVRemapper.cpp @@ -215,14 +215,19 @@ namespace spv { bool spirvbin_t::isConstOp(spv::Op opCode) const { switch (opCode) { - case spv::OpConstantNull: error("unimplemented constant type"); - case spv::OpConstantSampler: error("unimplemented constant type"); + case spv::OpConstantNull: + case spv::OpConstantSampler: + error("unimplemented constant type"); + return true; case spv::OpConstantTrue: case spv::OpConstantFalse: case spv::OpConstantComposite: - case spv::OpConstant: return true; - default: return false; + case spv::OpConstant: + return true; + + default: + return false; } } diff --git a/3rdparty/glslang/SPIRV/doc.cpp b/3rdparty/glslang/SPIRV/doc.cpp index 2fe5d9ce2..f9d5254c7 100755 --- a/3rdparty/glslang/SPIRV/doc.cpp +++ b/3rdparty/glslang/SPIRV/doc.cpp @@ -847,6 +847,7 @@ const char* CapabilityString(int info) #ifdef AMD_EXTENSIONS case 5009: return "ImageGatherBiasLodAMD"; + case 5010: return "FragmentMaskAMD"; case 5015: return "ImageReadWriteLodAMD"; #endif @@ -1207,6 +1208,9 @@ const char* OpcodeString(int op) case 5005: return "OpGroupFMaxNonUniformAMD"; case 5006: return "OpGroupUMaxNonUniformAMD"; case 5007: return "OpGroupSMaxNonUniformAMD"; + + case 5011: return "OpFragmentMaskFetchAMD"; + case 5012: return "OpFragmentFetchAMD"; #endif case OpcodeCeiling: @@ -2869,6 +2873,15 @@ void Parameterize() InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandId, "X"); + + InstructionDesc[OpFragmentMaskFetchAMD].capabilities.push_back(CapabilityFragmentMaskAMD); + InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Image'"); + InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Coordinate'"); + + InstructionDesc[OpFragmentFetchAMD].capabilities.push_back(CapabilityFragmentMaskAMD); + InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Image'"); + InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Fragment Index'"); #endif } diff --git a/3rdparty/glslang/StandAlone/DirStackFileIncluder.h b/3rdparty/glslang/StandAlone/DirStackFileIncluder.h index 8d6543ab4..18734130e 100644 --- a/3rdparty/glslang/StandAlone/DirStackFileIncluder.h +++ b/3rdparty/glslang/StandAlone/DirStackFileIncluder.h @@ -54,7 +54,7 @@ public: const char* includerName, size_t inclusionDepth) override { - return readLocalPath(headerName, includerName, inclusionDepth); + return readLocalPath(headerName, includerName, (int)inclusionDepth); } virtual IncludeResult* includeSystem(const char* headerName, @@ -73,7 +73,7 @@ public: virtual void pushExternalLocalDirectory(const std::string& dir) { directoryStack.push_back(dir); - externalLocalDirectoryCount = directoryStack.size(); + externalLocalDirectoryCount = (int)directoryStack.size(); } virtual void releaseInclude(IncludeResult* result) override diff --git a/3rdparty/glslang/StandAlone/StandAlone.cpp b/3rdparty/glslang/StandAlone/StandAlone.cpp index 58be28ef4..2c46cc07f 100644 --- a/3rdparty/glslang/StandAlone/StandAlone.cpp +++ b/3rdparty/glslang/StandAlone/StandAlone.cpp @@ -553,7 +553,7 @@ void ProcessArguments(std::vector>& workItem // This is okay for one compilation unit with one entry point. entryPointName = argv[1]; if (argc <= 1) - Error("no provided for -e"); + Error("no provided for -e"); bumpArg(); break; case 'g': @@ -1214,13 +1214,13 @@ void usage() " creates the default configuration file (redirect to a .conf file)\n" " -d default to desktop (#version 110) when there is no shader #version\n" " (default is ES version 100)\n" - " -e specify entry-point name\n" + " -e specify as the entry-point name\n" " -g generate debug information\n" " -h print this usage message\n" " -i intermediate tree (glslang AST) is printed out\n" " -l link all input files together to form a single module\n" " -m memory leak mode\n" - " -o save binary to , requires a binary option (e.g., -V)\n" + " -o save binary to , requires a binary option (e.g., -V)\n" " -q dump reflection query database\n" " -r synonym for --relaxed-errors\n" " -s silent mode\n" @@ -1264,8 +1264,8 @@ void usage() " --shift-UBO-binding [stage] num base binding number for UBOs\n" " --shift-cbuffer-binding [stage] num synonym for --shift-UBO-binding\n" " --sub [stage] num synonym for --shift-UBO-binding\n" - " --source-entrypoint name the given shader source function is\n" - " renamed to be the entry point given in -e\n" + " --source-entrypoint the given shader source function is\n" + " renamed to be the given in -e\n" " --sep synonym for --source-entrypoint\n" " --stdin Read from stdin instead of from a file.\n" " You'll have to provide the shader stage\n" diff --git a/3rdparty/glslang/Test/baseResults/150.tesc.out b/3rdparty/glslang/Test/baseResults/150.tesc.out index 5cc9e804c..25e44edda 100644 --- a/3rdparty/glslang/Test/baseResults/150.tesc.out +++ b/3rdparty/glslang/Test/baseResults/150.tesc.out @@ -754,7 +754,7 @@ ERROR: 0:29: 'constructor' : cannot convert parameter 2 from ' const 2X2 matrix ERROR: 0:29: ' const 2-element array of 4-component vector of float' : cannot construct with these arguments ERROR: 0:29: '=' : cannot convert from ' const float' to ' global 2-element array of 4-component vector of float' ERROR: 0:30: 'initializer list' : wrong number of matrix columns: temp 4X2 matrix of float -ERROR: 0:40: 'constructor' : cannot convert parameter 1 from ' temp float' to ' temp structure{ global float s, global float t}' +ERROR: 0:40: 'constructor' : cannot convert parameter 1 from ' const structure{ global 4-component vector of float a, global 4-component vector of float b}' to ' temp structure{ global float s, global float t}' ERROR: 0:70: 'initializer list' : wrong number of structure members ERROR: 13 compilation errors. No code generated. diff --git a/3rdparty/glslang/Test/baseResults/420.tese.out b/3rdparty/glslang/Test/baseResults/420.tese.out index 66d41e55b..f14e1c0d3 100644 --- a/3rdparty/glslang/Test/baseResults/420.tese.out +++ b/3rdparty/glslang/Test/baseResults/420.tese.out @@ -10,7 +10,7 @@ ERROR: 0:29: 'constructor' : cannot convert parameter 2 from ' const 2X2 matrix ERROR: 0:29: ' const 2-element array of 4-component vector of float' : cannot construct with these arguments ERROR: 0:29: '=' : cannot convert from ' const float' to ' global 2-element array of 4-component vector of float' ERROR: 0:30: 'initializer list' : wrong number of matrix columns: temp 4X2 matrix of float -ERROR: 0:40: 'constructor' : cannot convert parameter 1 from ' temp float' to ' temp structure{ global float s, global float t}' +ERROR: 0:40: 'constructor' : cannot convert parameter 1 from ' const structure{ global 4-component vector of float a, global 4-component vector of float b}' to ' temp structure{ global float s, global float t}' ERROR: 0:70: 'initializer list' : wrong number of structure members ERROR: 13 compilation errors. No code generated. diff --git a/3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.bad.out b/3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.bad.out new file mode 100644 index 000000000..a88bd9494 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.bad.out @@ -0,0 +1,45 @@ +glsl.entryPointRename.vert +ERROR: Source entry point must be "main" + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 20 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "foo" 13 + Source GLSL 460 + Name 4 "foo" + Name 11 "gl_PerVertex" + MemberName 11(gl_PerVertex) 0 "gl_Position" + MemberName 11(gl_PerVertex) 1 "gl_PointSize" + MemberName 11(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 11(gl_PerVertex) 3 "gl_CullDistance" + Name 13 "" + MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 11(gl_PerVertex) Block + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeInt 32 0 + 9: 8(int) Constant 1 + 10: TypeArray 6(float) 9 +11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10 + 12: TypePointer Output 11(gl_PerVertex) + 13: 12(ptr) Variable Output + 14: TypeInt 32 1 + 15: 14(int) Constant 0 + 16: 6(float) Constant 1065353216 + 17: 7(fvec4) ConstantComposite 16 16 16 16 + 18: TypePointer Output 7(fvec4) + 4(foo): 2 Function None 3 + 5: Label + 19: 18(ptr) AccessChain 13 15 + Store 19 17 + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.out b/3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.out new file mode 100644 index 000000000..150cf412d --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/glsl.entryPointRename.vert.out @@ -0,0 +1,43 @@ +glsl.entryPointRename.vert +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 20 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "foo" 13 + Source GLSL 460 + Name 4 "foo" + Name 11 "gl_PerVertex" + MemberName 11(gl_PerVertex) 0 "gl_Position" + MemberName 11(gl_PerVertex) 1 "gl_PointSize" + MemberName 11(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 11(gl_PerVertex) 3 "gl_CullDistance" + Name 13 "" + MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 11(gl_PerVertex) Block + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeInt 32 0 + 9: 8(int) Constant 1 + 10: TypeArray 6(float) 9 +11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10 + 12: TypePointer Output 11(gl_PerVertex) + 13: 12(ptr) Variable Output + 14: TypeInt 32 1 + 15: 14(int) Constant 0 + 16: 6(float) Constant 1065353216 + 17: 7(fvec4) ConstantComposite 16 16 16 16 + 18: TypePointer Output 7(fvec4) + 4(foo): 2 Function None 3 + 5: Label + 19: 18(ptr) AccessChain 13 15 + Store 19 17 + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/glsl.entryPointRename2.vert.out b/3rdparty/glslang/Test/baseResults/glsl.entryPointRename2.vert.out new file mode 100644 index 000000000..aebd86bee --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/glsl.entryPointRename2.vert.out @@ -0,0 +1,4 @@ +glsl.entryPointRename2.vert +ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point + +SPIR-V is not generated for failed compile or link diff --git a/3rdparty/glslang/Test/baseResults/hlsl.array.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.array.frag.out index 52008e3c2..54a907ecb 100755 --- a/3rdparty/glslang/Test/baseResults/hlsl.array.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.array.frag.out @@ -2,72 +2,142 @@ hlsl.array.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence -0:8 Function Definition: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float) -0:8 Function Parameters: -0:8 'i' ( in int) -0:8 'input' ( in 3-element array of 4-component vector of float) +0:7 Sequence +0:7 move second child to first child ( temp 4-component vector of float) +0:7 'C' ( global 4-component vector of float) +0:? Constant: +0:? 1.000000 +0:? 2.000000 +0:? 3.000000 +0:? 4.000000 +0:11 Sequence +0:11 move second child to first child ( temp 2-element array of 4-component vector of float) +0:11 'c2' ( global 2-element array of 4-component vector of float) +0:11 Construct vec4 ( temp 2-element array of 4-component vector of float) +0:11 'C' ( global 4-component vector of float) +0:? Constant: +0:? 1.000000 +0:? 2.000000 +0:? 3.000000 +0:? 4.000000 +0:14 Function Definition: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float) +0:14 Function Parameters: +0:14 'i' ( in int) +0:14 'input' ( in 3-element array of 4-component vector of float) 0:? Sequence -0:10 Branch: Return with expression -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 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: direct index for structure ( uniform 4-element array of 4-component vector of float) -0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, 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: direct index for structure ( uniform 4-element array of 4-component vector of float) -0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, 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' ( in int) -0:10 direct index ( temp 4-component vector of float) -0:10 'input' ( in 3-element array of 4-component vector of float) -0:10 Constant: -0:10 2 (const int) -0:10 indirect index ( temp 4-component vector of float) -0:10 'input' ( in 3-element array of 4-component vector of float) -0:10 'i' ( in int) -0:10 direct index ( temp 4-component vector of float) -0:10 'b' ( temp 10-element array of 4-component vector of float) -0:10 Constant: -0:10 5 (const int) -0:10 indirect index ( temp 4-component vector of float) -0:10 'b' ( temp 10-element array of 4-component vector of float) -0:10 'i' ( 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: direct index for structure ( 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{ uniform 4-element array of 4-component vector of float a, 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' ( in int) -0:10 Constant: -0:10 0 (const int) -0:10 'i' ( in int) -0:8 Function Definition: PixelShaderFunction( ( temp void) -0:8 Function Parameters: +0:15 Sequence +0:15 move second child to first child ( temp 10-element array of 4-component vector of float) +0:15 'b' ( temp 10-element array of 4-component vector of float) +0:15 Construct vec4 ( temp 10-element array of 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:16 Sequence +0:16 move second child to first child ( temp 4-component vector of float) +0:16 'tmp' ( temp 4-component vector of float) +0:16 add ( temp 4-component vector of float) +0:16 add ( temp 4-component vector of float) +0:16 add ( temp 4-component vector of float) +0:16 add ( temp 4-component vector of float) +0:16 'C' ( global 4-component vector of float) +0:16 direct index ( temp 4-component vector of float) +0:16 a1: direct index for structure ( uniform 1-element array of 4-component vector of float) +0:16 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) +0:16 Constant: +0:16 2 (const uint) +0:16 Constant: +0:16 0 (const int) +0:16 Constant: +0:16 1.000000 +0:16 2.000000 +0:16 3.000000 +0:16 4.000000 +0:16 indirect index ( temp 4-component vector of float) +0:16 a2: direct index for structure ( uniform 2-element array of 4-component vector of float) +0:16 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) +0:16 Constant: +0:16 3 (const uint) +0:16 'i' ( in int) +0:16 indirect index ( temp 4-component vector of float) +0:16 'c2' ( global 2-element array of 4-component vector of float) +0:16 'i' ( in int) +0:17 Branch: Return with expression +0:17 add ( temp 4-component vector of float) +0:17 add ( temp 4-component vector of float) +0:17 add ( temp 4-component vector of float) +0:17 add ( temp 4-component vector of float) +0:17 add ( temp 4-component vector of float) +0:17 add ( temp 4-component vector of float) +0:17 add ( temp 4-component vector of float) +0:17 direct index ( temp 4-component vector of float) +0:17 a: direct index for structure ( uniform 4-element array of 4-component vector of float) +0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) +0:17 Constant: +0:17 0 (const uint) +0:17 Constant: +0:17 1 (const int) +0:17 indirect index ( temp 4-component vector of float) +0:17 a: direct index for structure ( uniform 4-element array of 4-component vector of float) +0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) +0:17 Constant: +0:17 0 (const uint) +0:17 'i' ( in int) +0:17 direct index ( temp 4-component vector of float) +0:17 'input' ( in 3-element array of 4-component vector of float) +0:17 Constant: +0:17 2 (const int) +0:17 indirect index ( temp 4-component vector of float) +0:17 'input' ( in 3-element array of 4-component vector of float) +0:17 'i' ( in int) +0:17 direct index ( temp 4-component vector of float) +0:17 'b' ( temp 10-element array of 4-component vector of float) +0:17 Constant: +0:17 5 (const int) +0:17 indirect index ( temp 4-component vector of float) +0:17 'b' ( temp 10-element array of 4-component vector of float) +0:17 'i' ( in int) +0:17 indirect index ( temp 4-component vector of float) +0:17 m: direct index for structure ( temp 7-element array of 4-component vector of float) +0:17 indirect index ( temp structure{ temp 7-element array of 4-component vector of float m}) +0:17 s: direct index for structure ( uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m}) +0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) +0:17 Constant: +0:17 1 (const uint) +0:17 'i' ( in int) +0:17 Constant: +0:17 0 (const int) +0:17 'i' ( in int) +0:17 'tmp' ( temp 4-component vector of float) +0:14 Function Definition: PixelShaderFunction( ( temp void) +0:14 Function Parameters: 0:? Sequence -0:8 move second child to first child ( temp int) +0:14 move second child to first child ( temp int) 0:? 'i' ( temp int) 0:? 'i' (layout( location=0) flat in int) -0:8 move second child to first child ( temp 3-element array of 4-component vector of float) +0:14 move second child to first child ( temp 3-element array of 4-component vector of float) 0:? 'input' ( temp 3-element array of 4-component vector of float) 0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float) -0:8 move second child to first child ( temp 4-component vector of float) +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:8 Function Call: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float) +0:14 Function Call: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float) 0:? 'i' ( temp int) 0:? 'input' ( temp 3-element array of 4-component vector of float) 0:? Linker Objects -0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s}) +0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) +0:? 'C' ( global 4-component vector of float) +0:? 'c1' ( const 1-element array of 4-component vector of float) +0:? 1.000000 +0:? 2.000000 +0:? 3.000000 +0:? 4.000000 +0:? 'c2' ( global 2-element array of 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'i' (layout( location=0) flat in int) 0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float) @@ -79,116 +149,195 @@ Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence -0:8 Function Definition: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float) -0:8 Function Parameters: -0:8 'i' ( in int) -0:8 'input' ( in 3-element array of 4-component vector of float) +0:7 Sequence +0:7 move second child to first child ( temp 4-component vector of float) +0:7 'C' ( global 4-component vector of float) +0:? Constant: +0:? 1.000000 +0:? 2.000000 +0:? 3.000000 +0:? 4.000000 +0:11 Sequence +0:11 move second child to first child ( temp 2-element array of 4-component vector of float) +0:11 'c2' ( global 2-element array of 4-component vector of float) +0:11 Construct vec4 ( temp 2-element array of 4-component vector of float) +0:11 'C' ( global 4-component vector of float) +0:? Constant: +0:? 1.000000 +0:? 2.000000 +0:? 3.000000 +0:? 4.000000 +0:14 Function Definition: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float) +0:14 Function Parameters: +0:14 'i' ( in int) +0:14 'input' ( in 3-element array of 4-component vector of float) 0:? Sequence -0:10 Branch: Return with expression -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 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: direct index for structure ( uniform 4-element array of 4-component vector of float) -0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, 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: direct index for structure ( uniform 4-element array of 4-component vector of float) -0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, 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' ( in int) -0:10 direct index ( temp 4-component vector of float) -0:10 'input' ( in 3-element array of 4-component vector of float) -0:10 Constant: -0:10 2 (const int) -0:10 indirect index ( temp 4-component vector of float) -0:10 'input' ( in 3-element array of 4-component vector of float) -0:10 'i' ( in int) -0:10 direct index ( temp 4-component vector of float) -0:10 'b' ( temp 10-element array of 4-component vector of float) -0:10 Constant: -0:10 5 (const int) -0:10 indirect index ( temp 4-component vector of float) -0:10 'b' ( temp 10-element array of 4-component vector of float) -0:10 'i' ( 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: direct index for structure ( 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{ uniform 4-element array of 4-component vector of float a, 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' ( in int) -0:10 Constant: -0:10 0 (const int) -0:10 'i' ( in int) -0:8 Function Definition: PixelShaderFunction( ( temp void) -0:8 Function Parameters: +0:15 Sequence +0:15 move second child to first child ( temp 10-element array of 4-component vector of float) +0:15 'b' ( temp 10-element array of 4-component vector of float) +0:15 Construct vec4 ( temp 10-element array of 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:15 'C' ( global 4-component vector of float) +0:16 Sequence +0:16 move second child to first child ( temp 4-component vector of float) +0:16 'tmp' ( temp 4-component vector of float) +0:16 add ( temp 4-component vector of float) +0:16 add ( temp 4-component vector of float) +0:16 add ( temp 4-component vector of float) +0:16 add ( temp 4-component vector of float) +0:16 'C' ( global 4-component vector of float) +0:16 direct index ( temp 4-component vector of float) +0:16 a1: direct index for structure ( uniform 1-element array of 4-component vector of float) +0:16 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) +0:16 Constant: +0:16 2 (const uint) +0:16 Constant: +0:16 0 (const int) +0:16 Constant: +0:16 1.000000 +0:16 2.000000 +0:16 3.000000 +0:16 4.000000 +0:16 indirect index ( temp 4-component vector of float) +0:16 a2: direct index for structure ( uniform 2-element array of 4-component vector of float) +0:16 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) +0:16 Constant: +0:16 3 (const uint) +0:16 'i' ( in int) +0:16 indirect index ( temp 4-component vector of float) +0:16 'c2' ( global 2-element array of 4-component vector of float) +0:16 'i' ( in int) +0:17 Branch: Return with expression +0:17 add ( temp 4-component vector of float) +0:17 add ( temp 4-component vector of float) +0:17 add ( temp 4-component vector of float) +0:17 add ( temp 4-component vector of float) +0:17 add ( temp 4-component vector of float) +0:17 add ( temp 4-component vector of float) +0:17 add ( temp 4-component vector of float) +0:17 direct index ( temp 4-component vector of float) +0:17 a: direct index for structure ( uniform 4-element array of 4-component vector of float) +0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) +0:17 Constant: +0:17 0 (const uint) +0:17 Constant: +0:17 1 (const int) +0:17 indirect index ( temp 4-component vector of float) +0:17 a: direct index for structure ( uniform 4-element array of 4-component vector of float) +0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) +0:17 Constant: +0:17 0 (const uint) +0:17 'i' ( in int) +0:17 direct index ( temp 4-component vector of float) +0:17 'input' ( in 3-element array of 4-component vector of float) +0:17 Constant: +0:17 2 (const int) +0:17 indirect index ( temp 4-component vector of float) +0:17 'input' ( in 3-element array of 4-component vector of float) +0:17 'i' ( in int) +0:17 direct index ( temp 4-component vector of float) +0:17 'b' ( temp 10-element array of 4-component vector of float) +0:17 Constant: +0:17 5 (const int) +0:17 indirect index ( temp 4-component vector of float) +0:17 'b' ( temp 10-element array of 4-component vector of float) +0:17 'i' ( in int) +0:17 indirect index ( temp 4-component vector of float) +0:17 m: direct index for structure ( temp 7-element array of 4-component vector of float) +0:17 indirect index ( temp structure{ temp 7-element array of 4-component vector of float m}) +0:17 s: direct index for structure ( uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m}) +0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) +0:17 Constant: +0:17 1 (const uint) +0:17 'i' ( in int) +0:17 Constant: +0:17 0 (const int) +0:17 'i' ( in int) +0:17 'tmp' ( temp 4-component vector of float) +0:14 Function Definition: PixelShaderFunction( ( temp void) +0:14 Function Parameters: 0:? Sequence -0:8 move second child to first child ( temp int) +0:14 move second child to first child ( temp int) 0:? 'i' ( temp int) 0:? 'i' (layout( location=0) flat in int) -0:8 move second child to first child ( temp 3-element array of 4-component vector of float) +0:14 move second child to first child ( temp 3-element array of 4-component vector of float) 0:? 'input' ( temp 3-element array of 4-component vector of float) 0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float) -0:8 move second child to first child ( temp 4-component vector of float) +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:8 Function Call: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float) +0:14 Function Call: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float) 0:? 'i' ( temp int) 0:? 'input' ( temp 3-element array of 4-component vector of float) 0:? Linker Objects -0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s}) +0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s, uniform 1-element array of 4-component vector of float a1, uniform 2-element array of 4-component vector of float a2}) +0:? 'C' ( global 4-component vector of float) +0:? 'c1' ( const 1-element array of 4-component vector of float) +0:? 1.000000 +0:? 2.000000 +0:? 3.000000 +0:? 4.000000 +0:? 'c2' ( global 2-element array of 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'i' (layout( location=0) flat 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 81 +// Id's are bound by 126 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 68 72 75 + EntryPoint Fragment 4 "PixelShaderFunction" 112 116 119 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 17 "@PixelShaderFunction(i1;vf4[3];" Name 15 "i" Name 16 "input" - Name 23 "" - MemberName 23 0 "m" - Name 26 "$Global" - MemberName 26($Global) 0 "a" - MemberName 26($Global) 1 "s" - Name 28 "" - Name 50 "b" - Name 66 "i" - Name 68 "i" - Name 70 "input" - Name 72 "input" - Name 75 "@entryPointOutput" - Name 76 "param" - Name 78 "param" - Decorate 20 ArrayStride 16 - Decorate 22 ArrayStride 16 - MemberDecorate 23 0 Offset 0 - Decorate 25 ArrayStride 112 - MemberDecorate 26($Global) 0 Offset 0 - MemberDecorate 26($Global) 1 Offset 64 - Decorate 26($Global) Block - Decorate 28 DescriptorSet 0 - Decorate 68(i) Flat - Decorate 68(i) Location 0 - Decorate 72(input) Location 1 - Decorate 75(@entryPointOutput) Location 0 + Name 20 "C" + Name 29 "c2" + Name 35 "b" + Name 48 "tmp" + Name 54 "" + MemberName 54 0 "m" + Name 60 "$Global" + MemberName 60($Global) 0 "a" + MemberName 60($Global) 1 "s" + MemberName 60($Global) 2 "a1" + MemberName 60($Global) 3 "a2" + Name 62 "" + Name 110 "i" + Name 112 "i" + Name 114 "input" + Name 116 "input" + Name 119 "@entryPointOutput" + Name 120 "param" + Name 122 "param" + Decorate 51 ArrayStride 16 + Decorate 53 ArrayStride 16 + MemberDecorate 54 0 Offset 0 + Decorate 56 ArrayStride 112 + Decorate 58 ArrayStride 16 + Decorate 59 ArrayStride 16 + MemberDecorate 60($Global) 0 Offset 0 + MemberDecorate 60($Global) 1 Offset 64 + MemberDecorate 60($Global) 2 Offset 1296 + MemberDecorate 60($Global) 3 Offset 1312 + Decorate 60($Global) Block + Decorate 62 DescriptorSet 0 + Decorate 112(i) Flat + Decorate 112(i) Location 0 + Decorate 116(input) Location 1 + Decorate 119(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -200,78 +349,127 @@ gl_FragCoord origin is upper left 12: TypeArray 9(fvec4) 11 13: TypePointer Function 12 14: TypeFunction 9(fvec4) 7(ptr) 13(ptr) - 19: 10(int) Constant 4 - 20: TypeArray 9(fvec4) 19 - 21: 10(int) Constant 7 - 22: TypeArray 9(fvec4) 21 - 23: TypeStruct 22 - 24: 10(int) Constant 11 - 25: TypeArray 23(struct) 24 - 26($Global): TypeStruct 20 25 - 27: TypePointer Uniform 26($Global) - 28: 27(ptr) Variable Uniform - 29: 6(int) Constant 0 - 30: 6(int) Constant 1 - 31: TypePointer Uniform 9(fvec4) - 38: 6(int) Constant 2 - 39: TypePointer Function 9(fvec4) - 47: 10(int) Constant 10 - 48: TypeArray 9(fvec4) 47 - 49: TypePointer Function 48 - 51: 6(int) Constant 5 - 67: TypePointer Input 6(int) - 68(i): 67(ptr) Variable Input - 71: TypePointer Input 12 - 72(input): 71(ptr) Variable Input - 74: TypePointer Output 9(fvec4) -75(@entryPointOutput): 74(ptr) Variable Output + 19: TypePointer Private 9(fvec4) + 20(C): 19(ptr) Variable Private + 21: 8(float) Constant 1065353216 + 22: 8(float) Constant 1073741824 + 23: 8(float) Constant 1077936128 + 24: 8(float) Constant 1082130432 + 25: 9(fvec4) ConstantComposite 21 22 23 24 + 26: 10(int) Constant 2 + 27: TypeArray 9(fvec4) 26 + 28: TypePointer Private 27 + 29(c2): 28(ptr) Variable Private + 32: 10(int) Constant 10 + 33: TypeArray 9(fvec4) 32 + 34: TypePointer Function 33 + 47: TypePointer Function 9(fvec4) + 50: 10(int) Constant 4 + 51: TypeArray 9(fvec4) 50 + 52: 10(int) Constant 7 + 53: TypeArray 9(fvec4) 52 + 54: TypeStruct 53 + 55: 10(int) Constant 11 + 56: TypeArray 54(struct) 55 + 57: 10(int) Constant 1 + 58: TypeArray 9(fvec4) 57 + 59: TypeArray 9(fvec4) 26 + 60($Global): TypeStruct 51 56 58 59 + 61: TypePointer Uniform 60($Global) + 62: 61(ptr) Variable Uniform + 63: 6(int) Constant 2 + 64: 6(int) Constant 0 + 65: TypePointer Uniform 9(fvec4) + 70: 6(int) Constant 3 + 79: 6(int) Constant 1 + 93: 6(int) Constant 5 + 111: TypePointer Input 6(int) + 112(i): 111(ptr) Variable Input + 115: TypePointer Input 12 + 116(input): 115(ptr) Variable Input + 118: TypePointer Output 9(fvec4) +119(@entryPointOutput): 118(ptr) Variable Output + 125: 58 ConstantComposite 25 4(PixelShaderFunction): 2 Function None 3 5: Label - 66(i): 7(ptr) Variable Function - 70(input): 13(ptr) Variable Function - 76(param): 7(ptr) Variable Function - 78(param): 13(ptr) Variable Function - 69: 6(int) Load 68(i) - Store 66(i) 69 - 73: 12 Load 72(input) - Store 70(input) 73 - 77: 6(int) Load 66(i) - Store 76(param) 77 - 79: 12 Load 70(input) - Store 78(param) 79 - 80: 9(fvec4) FunctionCall 17(@PixelShaderFunction(i1;vf4[3];) 76(param) 78(param) - Store 75(@entryPointOutput) 80 + 110(i): 7(ptr) Variable Function + 114(input): 13(ptr) Variable Function + 120(param): 7(ptr) Variable Function + 122(param): 13(ptr) Variable Function + Store 20(C) 25 + 30: 9(fvec4) Load 20(C) + 31: 27 CompositeConstruct 30 25 + Store 29(c2) 31 + 113: 6(int) Load 112(i) + Store 110(i) 113 + 117: 12 Load 116(input) + Store 114(input) 117 + 121: 6(int) Load 110(i) + Store 120(param) 121 + 123: 12 Load 114(input) + Store 122(param) 123 + 124: 9(fvec4) FunctionCall 17(@PixelShaderFunction(i1;vf4[3];) 120(param) 122(param) + Store 119(@entryPointOutput) 124 Return FunctionEnd 17(@PixelShaderFunction(i1;vf4[3];): 9(fvec4) Function None 14 15(i): 7(ptr) FunctionParameter 16(input): 13(ptr) FunctionParameter 18: Label - 50(b): 49(ptr) Variable Function - 32: 31(ptr) AccessChain 28 29 30 - 33: 9(fvec4) Load 32 - 34: 6(int) Load 15(i) - 35: 31(ptr) AccessChain 28 29 34 - 36: 9(fvec4) Load 35 - 37: 9(fvec4) FAdd 33 36 - 40: 39(ptr) AccessChain 16(input) 38 - 41: 9(fvec4) Load 40 - 42: 9(fvec4) FAdd 37 41 - 43: 6(int) Load 15(i) - 44: 39(ptr) AccessChain 16(input) 43 - 45: 9(fvec4) Load 44 - 46: 9(fvec4) FAdd 42 45 - 52: 39(ptr) AccessChain 50(b) 51 - 53: 9(fvec4) Load 52 - 54: 9(fvec4) FAdd 46 53 - 55: 6(int) Load 15(i) - 56: 39(ptr) AccessChain 50(b) 55 - 57: 9(fvec4) Load 56 - 58: 9(fvec4) FAdd 54 57 - 59: 6(int) Load 15(i) - 60: 6(int) Load 15(i) - 61: 31(ptr) AccessChain 28 30 59 29 60 - 62: 9(fvec4) Load 61 - 63: 9(fvec4) FAdd 58 62 - ReturnValue 63 + 35(b): 34(ptr) Variable Function + 48(tmp): 47(ptr) Variable Function + 36: 9(fvec4) Load 20(C) + 37: 9(fvec4) Load 20(C) + 38: 9(fvec4) Load 20(C) + 39: 9(fvec4) Load 20(C) + 40: 9(fvec4) Load 20(C) + 41: 9(fvec4) Load 20(C) + 42: 9(fvec4) Load 20(C) + 43: 9(fvec4) Load 20(C) + 44: 9(fvec4) Load 20(C) + 45: 9(fvec4) Load 20(C) + 46: 33 CompositeConstruct 36 37 38 39 40 41 42 43 44 45 + Store 35(b) 46 + 49: 9(fvec4) Load 20(C) + 66: 65(ptr) AccessChain 62 63 64 + 67: 9(fvec4) Load 66 + 68: 9(fvec4) FAdd 49 67 + 69: 9(fvec4) FAdd 68 25 + 71: 6(int) Load 15(i) + 72: 65(ptr) AccessChain 62 70 71 + 73: 9(fvec4) Load 72 + 74: 9(fvec4) FAdd 69 73 + 75: 6(int) Load 15(i) + 76: 19(ptr) AccessChain 29(c2) 75 + 77: 9(fvec4) Load 76 + 78: 9(fvec4) FAdd 74 77 + Store 48(tmp) 78 + 80: 65(ptr) AccessChain 62 64 79 + 81: 9(fvec4) Load 80 + 82: 6(int) Load 15(i) + 83: 65(ptr) AccessChain 62 64 82 + 84: 9(fvec4) Load 83 + 85: 9(fvec4) FAdd 81 84 + 86: 47(ptr) AccessChain 16(input) 63 + 87: 9(fvec4) Load 86 + 88: 9(fvec4) FAdd 85 87 + 89: 6(int) Load 15(i) + 90: 47(ptr) AccessChain 16(input) 89 + 91: 9(fvec4) Load 90 + 92: 9(fvec4) FAdd 88 91 + 94: 47(ptr) AccessChain 35(b) 93 + 95: 9(fvec4) Load 94 + 96: 9(fvec4) FAdd 92 95 + 97: 6(int) Load 15(i) + 98: 47(ptr) AccessChain 35(b) 97 + 99: 9(fvec4) Load 98 + 100: 9(fvec4) FAdd 96 99 + 101: 6(int) Load 15(i) + 102: 6(int) Load 15(i) + 103: 65(ptr) AccessChain 62 79 101 64 102 + 104: 9(fvec4) Load 103 + 105: 9(fvec4) FAdd 100 104 + 106: 9(fvec4) Load 48(tmp) + 107: 9(fvec4) FAdd 105 106 + ReturnValue 107 FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.constantbuffer.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.constantbuffer.frag.out index 2c7dafe82..33c672736 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.constantbuffer.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.constantbuffer.frag.out @@ -45,7 +45,7 @@ gl_FragCoord origin is upper left 0:24 direct index (layout( row_major std140) temp 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:24 'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:24 Constant: -0:24 2 (const int) +0:24 1 (const int) 0:24 Constant: 0:24 3 (const int) 0:24 Constant: @@ -113,7 +113,7 @@ gl_FragCoord origin is upper left 0:24 direct index (layout( row_major std140) temp 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:24 'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y}) 0:24 Constant: -0:24 2 (const int) +0:24 1 (const int) 0:24 Constant: 0:24 3 (const int) 0:24 Constant: @@ -231,7 +231,7 @@ gl_FragCoord origin is upper left 54: 7(fvec4) FAdd 45 53 ReturnValue 54 56: Label - 58: 41(ptr) AccessChain 18(cb3) 21 57 20 + 58: 41(ptr) AccessChain 18(cb3) 20 57 20 59: 6(float) Load 58 60: 7(fvec4) CompositeConstruct 59 59 59 59 ReturnValue 60 diff --git a/3rdparty/glslang/Test/baseResults/hlsl.hull.1.tesc.out b/3rdparty/glslang/Test/baseResults/hlsl.hull.1.tesc.out index 151a0b397..ebfaf5997 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.hull.1.tesc.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.hull.1.tesc.out @@ -32,7 +32,7 @@ vertex spacing = equal_spacing 0:? 'm_cpid' ( temp uint) 0:? 'm_cpid' ( in uint InvocationID) 0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint}) -0:26 indirect index ( temp structure{ temp 3-component vector of float cpoint}) +0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint}) 0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'm_cpid' ( in uint InvocationID) 0:26 Function Call: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint}) @@ -146,7 +146,7 @@ vertex spacing = equal_spacing 0:? 'm_cpid' ( temp uint) 0:? 'm_cpid' ( in uint InvocationID) 0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint}) -0:26 indirect index ( temp structure{ temp 3-component vector of float cpoint}) +0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint}) 0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'm_cpid' ( in uint InvocationID) 0:26 Function Call: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint}) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.hull.2.tesc.out b/3rdparty/glslang/Test/baseResults/hlsl.hull.2.tesc.out index 11342eaca..d4d75b35f 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.hull.2.tesc.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.hull.2.tesc.out @@ -28,7 +28,7 @@ vertex spacing = equal_spacing 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint}) -0:26 indirect index ( temp structure{ temp 3-component vector of float cpoint}) +0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint}) 0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'InvocationId' ( in uint InvocationID) 0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint}) @@ -140,7 +140,7 @@ vertex spacing = equal_spacing 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint}) -0:26 indirect index ( temp structure{ temp 3-component vector of float cpoint}) +0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint}) 0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'InvocationId' ( in uint InvocationID) 0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint}) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.hull.3.tesc.out b/3rdparty/glslang/Test/baseResults/hlsl.hull.3.tesc.out index 39d923684..eecb6c81a 100755 --- a/3rdparty/glslang/Test/baseResults/hlsl.hull.3.tesc.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.hull.3.tesc.out @@ -28,7 +28,7 @@ vertex spacing = equal_spacing 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint}) -0:26 indirect index ( temp structure{ temp 3-component vector of float cpoint}) +0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint}) 0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'InvocationId' ( in uint InvocationID) 0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint}) @@ -140,7 +140,7 @@ vertex spacing = equal_spacing 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint}) -0:26 indirect index ( temp structure{ temp 3-component vector of float cpoint}) +0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint}) 0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'InvocationId' ( in uint InvocationID) 0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint}) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.hull.4.tesc.out b/3rdparty/glslang/Test/baseResults/hlsl.hull.4.tesc.out new file mode 100644 index 000000000..73d3d5ce5 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/hlsl.hull.4.tesc.out @@ -0,0 +1,681 @@ +hlsl.hull.4.tesc +Shader version: 500 +vertices = 3 +vertex spacing = fractional_odd_spacing +triangle order = cw +0:? Sequence +0:25 Function Definition: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:25 Function Parameters: +0:25 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? Sequence +0:26 Sequence +0:26 move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:26 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:26 Constant: +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:28 move second child to first child ( temp float) +0:28 fInsideTessFactor: direct index for structure ( temp float) +0:28 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:28 Constant: +0:28 1 (const int) +0:28 add ( temp float) +0:28 direct index ( temp float) +0:28 m_Position: direct index for structure ( temp 4-component vector of float) +0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 3 (const int) +0:28 direct index ( temp float) +0:28 m_Normal: direct index for structure ( temp 4-component vector of float) +0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 1 (const int) +0:28 Constant: +0:28 3 (const int) +0:30 Branch: Return with expression +0:30 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:39 Function Definition: @main(struct-HS_Input-vf4-vf41[3];u1; ( temp structure{ temp 4-component vector of float m_Position}) +0:39 Function Parameters: +0:39 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:39 'cpid' ( in uint) +0:? Sequence +0:40 Sequence +0:40 move second child to first child ( temp structure{ temp 4-component vector of float m_Position}) +0:40 'output' ( temp structure{ temp 4-component vector of float m_Position}) +0:40 Constant: +0:40 0.000000 +0:40 0.000000 +0:40 0.000000 +0:40 0.000000 +0:41 move second child to first child ( temp 4-component vector of float) +0:41 m_Position: direct index for structure ( temp 4-component vector of float) +0:41 'output' ( temp structure{ temp 4-component vector of float m_Position}) +0:41 Constant: +0:41 0 (const int) +0:41 Constant: +0:41 0.000000 +0:41 0.000000 +0:41 0.000000 +0:41 0.000000 +0:42 Branch: Return with expression +0:42 'output' ( temp structure{ temp 4-component vector of float m_Position}) +0:39 Function Definition: main( ( temp void) +0:39 Function Parameters: +0:? Sequence +0:39 Sequence +0:39 move second child to first child ( temp 4-component vector of float) +0:39 m_Position: direct index for structure ( temp 4-component vector of float) +0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 direct index ( in 4-component vector of float Position) +0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) +0:39 Constant: +0:39 0 (const int) +0:39 move second child to first child ( temp 4-component vector of float) +0:39 m_Normal: direct index for structure ( temp 4-component vector of float) +0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 m_Normal: direct index for structure ( temp 4-component vector of float) +0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal}) +0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 move second child to first child ( temp 4-component vector of float) +0:39 m_Position: direct index for structure ( temp 4-component vector of float) +0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 direct index ( in 4-component vector of float Position) +0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) +0:39 Constant: +0:39 1 (const int) +0:39 move second child to first child ( temp 4-component vector of float) +0:39 m_Normal: direct index for structure ( temp 4-component vector of float) +0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 m_Normal: direct index for structure ( temp 4-component vector of float) +0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal}) +0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 move second child to first child ( temp 4-component vector of float) +0:39 m_Position: direct index for structure ( temp 4-component vector of float) +0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 2 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 direct index ( in 4-component vector of float Position) +0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) +0:39 Constant: +0:39 2 (const int) +0:39 move second child to first child ( temp 4-component vector of float) +0:39 m_Normal: direct index for structure ( temp 4-component vector of float) +0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 2 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 m_Normal: direct index for structure ( temp 4-component vector of float) +0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal}) +0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 2 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 move second child to first child ( temp uint) +0:? 'cpid' ( temp uint) +0:? 'cpid' ( in uint InvocationID) +0:39 Sequence +0:39 move second child to first child ( temp 4-component vector of float) +0:39 direct index ( out 4-component vector of float Position) +0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) +0:39 Constant: +0:39 0 (const int) +0:39 m_Position: direct index for structure ( temp 4-component vector of float) +0:39 Function Call: @main(struct-HS_Input-vf4-vf41[3];u1; ( temp structure{ temp 4-component vector of float m_Position}) +0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? 'cpid' ( temp uint) +0:39 Constant: +0:39 0 (const int) +0:? Barrier ( temp void) +0:? Test condition and select ( temp void) +0:? Condition +0:? Compare Equal ( temp bool) +0:? 'cpid' ( in uint InvocationID) +0:? Constant: +0:? 0 (const int) +0:? true case +0:? Sequence +0:? move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:? Function Call: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? Sequence +0:? move second child to first child ( temp float) +0:? direct index ( patch out float TessLevelOuter) +0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) +0:? Constant: +0:? 0 (const int) +0:? direct index ( temp float) +0:? fTessFactor: direct index for structure ( temp 3-element array of float) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:? Constant: +0:? 0 (const int) +0:? Constant: +0:? 0 (const int) +0:? move second child to first child ( temp float) +0:? direct index ( patch out float TessLevelOuter) +0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) +0:? Constant: +0:? 1 (const int) +0:? direct index ( temp float) +0:? fTessFactor: direct index for structure ( temp 3-element array of float) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:? Constant: +0:? 0 (const int) +0:? Constant: +0:? 1 (const int) +0:? move second child to first child ( temp float) +0:? direct index ( patch out float TessLevelOuter) +0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) +0:? Constant: +0:? 2 (const int) +0:? direct index ( temp float) +0:? fTessFactor: direct index for structure ( temp 3-element array of float) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:? Constant: +0:? 0 (const int) +0:? Constant: +0:? 2 (const int) +0:? move second child to first child ( temp float) +0:? direct index ( patch out float TessLevelInner) +0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner) +0:? Constant: +0:? 0 (const int) +0:? fInsideTessFactor: direct index for structure ( temp float) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:? Constant: +0:? 1 (const int) +0:? Linker Objects +0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) +0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) +0:? 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal}) +0:? 'cpid' ( in uint InvocationID) +0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) +0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner) + + +Linked tessellation control stage: + + +Shader version: 500 +vertices = 3 +vertex spacing = fractional_odd_spacing +triangle order = cw +0:? Sequence +0:25 Function Definition: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:25 Function Parameters: +0:25 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? Sequence +0:26 Sequence +0:26 move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:26 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:26 Constant: +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:28 move second child to first child ( temp float) +0:28 fInsideTessFactor: direct index for structure ( temp float) +0:28 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:28 Constant: +0:28 1 (const int) +0:28 add ( temp float) +0:28 direct index ( temp float) +0:28 m_Position: direct index for structure ( temp 4-component vector of float) +0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 3 (const int) +0:28 direct index ( temp float) +0:28 m_Normal: direct index for structure ( temp 4-component vector of float) +0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 1 (const int) +0:28 Constant: +0:28 3 (const int) +0:30 Branch: Return with expression +0:30 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:39 Function Definition: @main(struct-HS_Input-vf4-vf41[3];u1; ( temp structure{ temp 4-component vector of float m_Position}) +0:39 Function Parameters: +0:39 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:39 'cpid' ( in uint) +0:? Sequence +0:40 Sequence +0:40 move second child to first child ( temp structure{ temp 4-component vector of float m_Position}) +0:40 'output' ( temp structure{ temp 4-component vector of float m_Position}) +0:40 Constant: +0:40 0.000000 +0:40 0.000000 +0:40 0.000000 +0:40 0.000000 +0:41 move second child to first child ( temp 4-component vector of float) +0:41 m_Position: direct index for structure ( temp 4-component vector of float) +0:41 'output' ( temp structure{ temp 4-component vector of float m_Position}) +0:41 Constant: +0:41 0 (const int) +0:41 Constant: +0:41 0.000000 +0:41 0.000000 +0:41 0.000000 +0:41 0.000000 +0:42 Branch: Return with expression +0:42 'output' ( temp structure{ temp 4-component vector of float m_Position}) +0:39 Function Definition: main( ( temp void) +0:39 Function Parameters: +0:? Sequence +0:39 Sequence +0:39 move second child to first child ( temp 4-component vector of float) +0:39 m_Position: direct index for structure ( temp 4-component vector of float) +0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 direct index ( in 4-component vector of float Position) +0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) +0:39 Constant: +0:39 0 (const int) +0:39 move second child to first child ( temp 4-component vector of float) +0:39 m_Normal: direct index for structure ( temp 4-component vector of float) +0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 m_Normal: direct index for structure ( temp 4-component vector of float) +0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal}) +0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 move second child to first child ( temp 4-component vector of float) +0:39 m_Position: direct index for structure ( temp 4-component vector of float) +0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 direct index ( in 4-component vector of float Position) +0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) +0:39 Constant: +0:39 1 (const int) +0:39 move second child to first child ( temp 4-component vector of float) +0:39 m_Normal: direct index for structure ( temp 4-component vector of float) +0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 m_Normal: direct index for structure ( temp 4-component vector of float) +0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal}) +0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 move second child to first child ( temp 4-component vector of float) +0:39 m_Position: direct index for structure ( temp 4-component vector of float) +0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 2 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 direct index ( in 4-component vector of float Position) +0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) +0:39 Constant: +0:39 2 (const int) +0:39 move second child to first child ( temp 4-component vector of float) +0:39 m_Normal: direct index for structure ( temp 4-component vector of float) +0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 2 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 m_Normal: direct index for structure ( temp 4-component vector of float) +0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal}) +0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal}) +0:39 Constant: +0:39 2 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 move second child to first child ( temp uint) +0:? 'cpid' ( temp uint) +0:? 'cpid' ( in uint InvocationID) +0:39 Sequence +0:39 move second child to first child ( temp 4-component vector of float) +0:39 direct index ( out 4-component vector of float Position) +0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) +0:39 Constant: +0:39 0 (const int) +0:39 m_Position: direct index for structure ( temp 4-component vector of float) +0:39 Function Call: @main(struct-HS_Input-vf4-vf41[3];u1; ( temp structure{ temp 4-component vector of float m_Position}) +0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? 'cpid' ( temp uint) +0:39 Constant: +0:39 0 (const int) +0:? Barrier ( temp void) +0:? Test condition and select ( temp void) +0:? Condition +0:? Compare Equal ( temp bool) +0:? 'cpid' ( in uint InvocationID) +0:? Constant: +0:? 0 (const int) +0:? true case +0:? Sequence +0:? move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:? Function Call: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:? 'I' ( temp 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? Sequence +0:? move second child to first child ( temp float) +0:? direct index ( patch out float TessLevelOuter) +0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) +0:? Constant: +0:? 0 (const int) +0:? direct index ( temp float) +0:? fTessFactor: direct index for structure ( temp 3-element array of float) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:? Constant: +0:? 0 (const int) +0:? Constant: +0:? 0 (const int) +0:? move second child to first child ( temp float) +0:? direct index ( patch out float TessLevelOuter) +0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) +0:? Constant: +0:? 1 (const int) +0:? direct index ( temp float) +0:? fTessFactor: direct index for structure ( temp 3-element array of float) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:? Constant: +0:? 0 (const int) +0:? Constant: +0:? 1 (const int) +0:? move second child to first child ( temp float) +0:? direct index ( patch out float TessLevelOuter) +0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) +0:? Constant: +0:? 2 (const int) +0:? direct index ( temp float) +0:? fTessFactor: direct index for structure ( temp 3-element array of float) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:? Constant: +0:? 0 (const int) +0:? Constant: +0:? 2 (const int) +0:? move second child to first child ( temp float) +0:? direct index ( patch out float TessLevelInner) +0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner) +0:? Constant: +0:? 0 (const int) +0:? fInsideTessFactor: direct index for structure ( temp float) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:? Constant: +0:? 1 (const int) +0:? Linker Objects +0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) +0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) +0:? 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal}) +0:? 'cpid' ( in uint InvocationID) +0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) +0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 127 + + Capability Tessellation + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint TessellationControl 4 "main" 56 64 83 86 110 123 + ExecutionMode 4 OutputVertices 3 + ExecutionMode 4 Triangles + ExecutionMode 4 SpacingFractionalOdd + ExecutionMode 4 VertexOrderCw + Source HLSL 500 + Name 4 "main" + Name 8 "HS_Input" + MemberName 8(HS_Input) 0 "m_Position" + MemberName 8(HS_Input) 1 "m_Normal" + Name 14 "HS_Output" + MemberName 14(HS_Output) 0 "fTessFactor" + MemberName 14(HS_Output) 1 "fInsideTessFactor" + Name 17 "HS_ConstFunc(struct-HS_Input-vf4-vf41[3];" + Name 16 "I" + Name 20 "HS_Main_Output" + MemberName 20(HS_Main_Output) 0 "m_Position" + Name 24 "@main(struct-HS_Input-vf4-vf41[3];u1;" + Name 22 "I" + Name 23 "cpid" + Name 27 "O" + Name 45 "output" + Name 53 "I" + Name 56 "I.m_Position" + Name 61 "HS_Input" + MemberName 61(HS_Input) 0 "m_Normal" + Name 64 "I" + Name 81 "cpid" + Name 83 "cpid" + Name 86 "@entryPointOutput.m_Position" + Name 87 "param" + Name 89 "param" + Name 103 "@patchConstantResult" + Name 104 "param" + Name 110 "@patchConstantOutput.fTessFactor" + Name 123 "@patchConstantOutput.fInsideTessFactor" + Decorate 56(I.m_Position) BuiltIn Position + Decorate 64(I) Location 0 + Decorate 83(cpid) BuiltIn InvocationId + Decorate 86(@entryPointOutput.m_Position) BuiltIn Position + Decorate 110(@patchConstantOutput.fTessFactor) Patch + Decorate 110(@patchConstantOutput.fTessFactor) BuiltIn TessLevelOuter + Decorate 123(@patchConstantOutput.fInsideTessFactor) Patch + Decorate 123(@patchConstantOutput.fInsideTessFactor) BuiltIn TessLevelInner + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8(HS_Input): TypeStruct 7(fvec4) 7(fvec4) + 9: TypeInt 32 0 + 10: 9(int) Constant 3 + 11: TypeArray 8(HS_Input) 10 + 12: TypePointer Function 11 + 13: TypeArray 6(float) 10 + 14(HS_Output): TypeStruct 13 6(float) + 15: TypeFunction 14(HS_Output) 12(ptr) + 19: TypePointer Function 9(int) +20(HS_Main_Output): TypeStruct 7(fvec4) + 21: TypeFunction 20(HS_Main_Output) 12(ptr) 19(ptr) + 26: TypePointer Function 14(HS_Output) + 28: 6(float) Constant 0 + 29: 13 ConstantComposite 28 28 28 + 30:14(HS_Output) ConstantComposite 29 28 + 31: TypeInt 32 1 + 32: 31(int) Constant 1 + 33: 31(int) Constant 0 + 34: TypePointer Function 6(float) + 44: TypePointer Function 20(HS_Main_Output) + 46: 7(fvec4) ConstantComposite 28 28 28 28 + 47:20(HS_Main_Output) ConstantComposite 46 + 48: TypePointer Function 7(fvec4) + 54: TypeArray 7(fvec4) 10 + 55: TypePointer Input 54 +56(I.m_Position): 55(ptr) Variable Input + 57: TypePointer Input 7(fvec4) + 61(HS_Input): TypeStruct 7(fvec4) + 62: TypeArray 61(HS_Input) 10 + 63: TypePointer Input 62 + 64(I): 63(ptr) Variable Input + 74: 31(int) Constant 2 + 82: TypePointer Input 9(int) + 83(cpid): 82(ptr) Variable Input + 85: TypePointer Output 54 +86(@entryPointOutput.m_Position): 85(ptr) Variable Output + 93: TypePointer Output 7(fvec4) + 95: 9(int) Constant 2 + 96: 9(int) Constant 1 + 97: 9(int) Constant 0 + 99: TypeBool + 107: 9(int) Constant 4 + 108: TypeArray 6(float) 107 + 109: TypePointer Output 108 +110(@patchConstantOutput.fTessFactor): 109(ptr) Variable Output + 113: TypePointer Output 6(float) + 121: TypeArray 6(float) 95 + 122: TypePointer Output 121 +123(@patchConstantOutput.fInsideTessFactor): 122(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 53(I): 12(ptr) Variable Function + 81(cpid): 19(ptr) Variable Function + 87(param): 12(ptr) Variable Function + 89(param): 19(ptr) Variable Function +103(@patchConstantResult): 26(ptr) Variable Function + 104(param): 12(ptr) Variable Function + 58: 57(ptr) AccessChain 56(I.m_Position) 33 + 59: 7(fvec4) Load 58 + 60: 48(ptr) AccessChain 53(I) 33 33 + Store 60 59 + 65: 57(ptr) AccessChain 64(I) 33 33 + 66: 7(fvec4) Load 65 + 67: 48(ptr) AccessChain 53(I) 33 32 + Store 67 66 + 68: 57(ptr) AccessChain 56(I.m_Position) 32 + 69: 7(fvec4) Load 68 + 70: 48(ptr) AccessChain 53(I) 32 33 + Store 70 69 + 71: 57(ptr) AccessChain 64(I) 32 33 + 72: 7(fvec4) Load 71 + 73: 48(ptr) AccessChain 53(I) 32 32 + Store 73 72 + 75: 57(ptr) AccessChain 56(I.m_Position) 74 + 76: 7(fvec4) Load 75 + 77: 48(ptr) AccessChain 53(I) 74 33 + Store 77 76 + 78: 57(ptr) AccessChain 64(I) 74 33 + 79: 7(fvec4) Load 78 + 80: 48(ptr) AccessChain 53(I) 74 32 + Store 80 79 + 84: 9(int) Load 83(cpid) + Store 81(cpid) 84 + 88: 11 Load 53(I) + Store 87(param) 88 + 90: 9(int) Load 81(cpid) + Store 89(param) 90 + 91:20(HS_Main_Output) FunctionCall 24(@main(struct-HS_Input-vf4-vf41[3];u1;) 87(param) 89(param) + 92: 7(fvec4) CompositeExtract 91 0 + 94: 93(ptr) AccessChain 86(@entryPointOutput.m_Position) 33 + Store 94 92 + ControlBarrier 95 96 97 + 98: 9(int) Load 83(cpid) + 100: 99(bool) IEqual 98 33 + SelectionMerge 102 None + BranchConditional 100 101 102 + 101: Label + 105: 11 Load 53(I) + Store 104(param) 105 + 106:14(HS_Output) FunctionCall 17(HS_ConstFunc(struct-HS_Input-vf4-vf41[3];) 104(param) + Store 103(@patchConstantResult) 106 + 111: 34(ptr) AccessChain 103(@patchConstantResult) 33 33 + 112: 6(float) Load 111 + 114: 113(ptr) AccessChain 110(@patchConstantOutput.fTessFactor) 33 + Store 114 112 + 115: 34(ptr) AccessChain 103(@patchConstantResult) 33 32 + 116: 6(float) Load 115 + 117: 113(ptr) AccessChain 110(@patchConstantOutput.fTessFactor) 32 + Store 117 116 + 118: 34(ptr) AccessChain 103(@patchConstantResult) 33 74 + 119: 6(float) Load 118 + 120: 113(ptr) AccessChain 110(@patchConstantOutput.fTessFactor) 74 + Store 120 119 + 124: 34(ptr) AccessChain 103(@patchConstantResult) 32 + 125: 6(float) Load 124 + 126: 113(ptr) AccessChain 123(@patchConstantOutput.fInsideTessFactor) 33 + Store 126 125 + Branch 102 + 102: Label + Return + FunctionEnd +17(HS_ConstFunc(struct-HS_Input-vf4-vf41[3];):14(HS_Output) Function None 15 + 16(I): 12(ptr) FunctionParameter + 18: Label + 27(O): 26(ptr) Variable Function + Store 27(O) 30 + 35: 34(ptr) AccessChain 16(I) 33 33 10 + 36: 6(float) Load 35 + 37: 34(ptr) AccessChain 16(I) 33 32 10 + 38: 6(float) Load 37 + 39: 6(float) FAdd 36 38 + 40: 34(ptr) AccessChain 27(O) 32 + Store 40 39 + 41:14(HS_Output) Load 27(O) + ReturnValue 41 + FunctionEnd +24(@main(struct-HS_Input-vf4-vf41[3];u1;):20(HS_Main_Output) Function None 21 + 22(I): 12(ptr) FunctionParameter + 23(cpid): 19(ptr) FunctionParameter + 25: Label + 45(output): 44(ptr) Variable Function + Store 45(output) 47 + 49: 48(ptr) AccessChain 45(output) 33 + Store 49 46 + 50:20(HS_Main_Output) Load 45(output) + ReturnValue 50 + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.hull.5.tesc.out b/3rdparty/glslang/Test/baseResults/hlsl.hull.5.tesc.out new file mode 100644 index 000000000..3a42b52e6 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/hlsl.hull.5.tesc.out @@ -0,0 +1,190 @@ +hlsl.hull.5.tesc +ERROR: 0:0: '' : unimplemented: PCF input patch without entry point input patch parameter +ERROR: 1 compilation errors. No code generated. + + +Shader version: 500 +vertices = 3 +vertex spacing = fractional_odd_spacing +triangle order = cw +ERROR: node is still EOpNull! +0:25 Function Definition: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:25 Function Parameters: +0:25 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? Sequence +0:26 Sequence +0:26 move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:26 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:26 Constant: +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:28 move second child to first child ( temp float) +0:28 fInsideTessFactor: direct index for structure ( temp float) +0:28 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:28 Constant: +0:28 1 (const int) +0:28 add ( temp float) +0:28 direct index ( temp float) +0:28 m_Position: direct index for structure ( temp 4-component vector of float) +0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 3 (const int) +0:28 direct index ( temp float) +0:28 m_Normal: direct index for structure ( temp 4-component vector of float) +0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 1 (const int) +0:28 Constant: +0:28 3 (const int) +0:30 Branch: Return with expression +0:30 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:39 Function Definition: @main(u1; ( temp structure{ temp 4-component vector of float m_Position}) +0:39 Function Parameters: +0:39 'cpid' ( in uint) +0:? Sequence +0:40 Sequence +0:40 move second child to first child ( temp structure{ temp 4-component vector of float m_Position}) +0:40 'output' ( temp structure{ temp 4-component vector of float m_Position}) +0:40 Constant: +0:40 0.000000 +0:40 0.000000 +0:40 0.000000 +0:40 0.000000 +0:41 move second child to first child ( temp 4-component vector of float) +0:41 m_Position: direct index for structure ( temp 4-component vector of float) +0:41 'output' ( temp structure{ temp 4-component vector of float m_Position}) +0:41 Constant: +0:41 0 (const int) +0:41 Constant: +0:41 0.000000 +0:41 0.000000 +0:41 0.000000 +0:41 0.000000 +0:42 Branch: Return with expression +0:42 'output' ( temp structure{ temp 4-component vector of float m_Position}) +0:39 Function Definition: main( ( temp void) +0:39 Function Parameters: +0:? Sequence +0:39 move second child to first child ( temp uint) +0:? 'cpid' ( temp uint) +0:? 'cpid' ( in uint InvocationID) +0:39 Sequence +0:39 move second child to first child ( temp 4-component vector of float) +0:39 direct index ( out 4-component vector of float Position) +0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) +0:39 Constant: +0:39 0 (const int) +0:39 m_Position: direct index for structure ( temp 4-component vector of float) +0:39 Function Call: @main(u1; ( temp structure{ temp 4-component vector of float m_Position}) +0:? 'cpid' ( temp uint) +0:39 Constant: +0:39 0 (const int) +0:? Linker Objects +0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) +0:? 'cpid' ( in uint InvocationID) + + +Linked tessellation control stage: + + +Shader version: 500 +vertices = 3 +vertex spacing = fractional_odd_spacing +triangle order = cw +ERROR: node is still EOpNull! +0:25 Function Definition: HS_ConstFunc(struct-HS_Input-vf4-vf41[3]; ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:25 Function Parameters: +0:25 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:? Sequence +0:26 Sequence +0:26 move second child to first child ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:26 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:26 Constant: +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:26 0.000000 +0:28 move second child to first child ( temp float) +0:28 fInsideTessFactor: direct index for structure ( temp float) +0:28 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:28 Constant: +0:28 1 (const int) +0:28 add ( temp float) +0:28 direct index ( temp float) +0:28 m_Position: direct index for structure ( temp 4-component vector of float) +0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 3 (const int) +0:28 direct index ( temp float) +0:28 m_Normal: direct index for structure ( temp 4-component vector of float) +0:28 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:28 'I' ( in 3-element array of structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 1 (const int) +0:28 Constant: +0:28 3 (const int) +0:30 Branch: Return with expression +0:30 'O' ( temp structure{ temp 3-element array of float fTessFactor, temp float fInsideTessFactor}) +0:39 Function Definition: @main(u1; ( temp structure{ temp 4-component vector of float m_Position}) +0:39 Function Parameters: +0:39 'cpid' ( in uint) +0:? Sequence +0:40 Sequence +0:40 move second child to first child ( temp structure{ temp 4-component vector of float m_Position}) +0:40 'output' ( temp structure{ temp 4-component vector of float m_Position}) +0:40 Constant: +0:40 0.000000 +0:40 0.000000 +0:40 0.000000 +0:40 0.000000 +0:41 move second child to first child ( temp 4-component vector of float) +0:41 m_Position: direct index for structure ( temp 4-component vector of float) +0:41 'output' ( temp structure{ temp 4-component vector of float m_Position}) +0:41 Constant: +0:41 0 (const int) +0:41 Constant: +0:41 0.000000 +0:41 0.000000 +0:41 0.000000 +0:41 0.000000 +0:42 Branch: Return with expression +0:42 'output' ( temp structure{ temp 4-component vector of float m_Position}) +0:39 Function Definition: main( ( temp void) +0:39 Function Parameters: +0:? Sequence +0:39 move second child to first child ( temp uint) +0:? 'cpid' ( temp uint) +0:? 'cpid' ( in uint InvocationID) +0:39 Sequence +0:39 move second child to first child ( temp 4-component vector of float) +0:39 direct index ( out 4-component vector of float Position) +0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) +0:39 Constant: +0:39 0 (const int) +0:39 m_Position: direct index for structure ( temp 4-component vector of float) +0:39 Function Call: @main(u1; ( temp structure{ temp 4-component vector of float m_Position}) +0:? 'cpid' ( temp uint) +0:39 Constant: +0:39 0 (const int) +0:? Linker Objects +0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) +0:? 'cpid' ( in uint InvocationID) + +SPIR-V is not generated for failed compile or link diff --git a/3rdparty/glslang/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out b/3rdparty/glslang/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out index 7fbe0cb50..9ccd7e3d0 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out @@ -29,7 +29,7 @@ triangle order = cw 0:? 'cpid' ( temp uint) 0:? 'cpid' ( in uint InvocationID) 0:27 move second child to first child ( temp structure{ temp 3-component vector of float val}) -0:27 indirect index ( temp structure{ temp 3-component vector of float val}) +0:27 indirect index (layout( location=0) out structure{ temp 3-component vector of float val}) 0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val}) 0:? 'cpid' ( in uint InvocationID) 0:27 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) @@ -229,7 +229,7 @@ triangle order = cw 0:? 'cpid' ( temp uint) 0:? 'cpid' ( in uint InvocationID) 0:27 move second child to first child ( temp structure{ temp 3-component vector of float val}) -0:27 indirect index ( temp structure{ temp 3-component vector of float val}) +0:27 indirect index (layout( location=0) out structure{ temp 3-component vector of float val}) 0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val}) 0:? 'cpid' ( in uint InvocationID) 0:27 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out b/3rdparty/glslang/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out index 32764f30b..135efd2fd 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out @@ -36,7 +36,7 @@ triangle order = cw 0:? 'cpid' ( temp uint) 0:? 'cpid' ( in uint InvocationID) 0:28 move second child to first child ( temp structure{ temp 3-component vector of float val}) -0:28 indirect index ( temp structure{ temp 3-component vector of float val}) +0:28 indirect index (layout( location=0) out structure{ temp 3-component vector of float val}) 0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val}) 0:? 'cpid' ( in uint InvocationID) 0:28 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) @@ -82,7 +82,7 @@ triangle order = cw 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Function Call: PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) -0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val}) +0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) @@ -245,7 +245,7 @@ triangle order = cw 0:? 'cpid' ( temp uint) 0:? 'cpid' ( in uint InvocationID) 0:28 move second child to first child ( temp structure{ temp 3-component vector of float val}) -0:28 indirect index ( temp structure{ temp 3-component vector of float val}) +0:28 indirect index (layout( location=0) out structure{ temp 3-component vector of float val}) 0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val}) 0:? 'cpid' ( in uint InvocationID) 0:28 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) @@ -291,7 +291,7 @@ triangle order = cw 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? Function Call: PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3]; ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:? 'pcf_out' ( temp 3-element array of structure{ temp 3-component vector of float val}) -0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val}) +0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:? Sequence 0:? move second child to first child ( temp float) 0:? direct index ( patch out float TessLevelOuter) @@ -568,7 +568,7 @@ triangle order = cw 87: 30(ptr) AccessChain 67(pcf_out) 81 Store 87 86 90: 20 Load 67(pcf_out) - 91: 11 Load 42(i) + 91: 11 Load 40(i) 92:22(hs_pcf_t) FunctionCall 26(PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3];) 90 91 Store 89(@patchConstantResult) 92 98: 97(ptr) AccessChain 89(@patchConstantResult) 29 29 diff --git a/3rdparty/glslang/Test/baseResults/hlsl.hull.void.tesc.out b/3rdparty/glslang/Test/baseResults/hlsl.hull.void.tesc.out index 8dc38fcd0..412923594 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.hull.void.tesc.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.hull.void.tesc.out @@ -29,7 +29,7 @@ triangle order = ccw 0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'ip' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint}) -0:26 indirect index ( temp structure{ temp 3-component vector of float cpoint}) +0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint}) 0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'InvocationId' ( in uint InvocationID) 0:26 Function Call: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint}) @@ -85,7 +85,7 @@ triangle order = ccw 0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'ip' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint}) -0:26 indirect index ( temp structure{ temp 3-component vector of float cpoint}) +0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint}) 0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'InvocationId' ( in uint InvocationID) 0:26 Function Call: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint}) diff --git a/3rdparty/glslang/Test/baseResults/spv.shaderFragMaskAMD.frag.out b/3rdparty/glslang/Test/baseResults/spv.shaderFragMaskAMD.frag.out new file mode 100644 index 000000000..84dbcd528 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.shaderFragMaskAMD.frag.out @@ -0,0 +1,123 @@ +spv.shaderFragMaskAMD.frag +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 80 + + Capability Shader + Capability StorageImageMultisample + Capability InputAttachment + Capability FragmentMaskAMD + Extension "SPV_AMD_shader_fragment_mask" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 78 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_AMD_shader_fragment_mask" + Name 4 "main" + Name 9 "f4" + Name 14 "fragMask" + Name 18 "s2DMS" + Name 27 "fragIndex" + Name 42 "is2DMSArray" + Name 62 "usubpassMS" + Name 78 "fragColor" + Decorate 18(s2DMS) DescriptorSet 0 + Decorate 18(s2DMS) Binding 0 + Decorate 42(is2DMSArray) DescriptorSet 0 + Decorate 42(is2DMSArray) Binding 1 + Decorate 62(usubpassMS) DescriptorSet 0 + Decorate 62(usubpassMS) Binding 2 + Decorate 62(usubpassMS) InputAttachmentIndex 0 + Decorate 78(fragColor) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: 6(float) Constant 0 + 11: 7(fvec4) ConstantComposite 10 10 10 10 + 12: TypeInt 32 0 + 13: TypePointer Function 12(int) + 15: TypeImage 6(float) 2D multi-sampled sampled format:Unknown + 16: TypeSampledImage 15 + 17: TypePointer UniformConstant 16 + 18(s2DMS): 17(ptr) Variable UniformConstant + 20: TypeInt 32 1 + 21: TypeVector 20(int) 2 + 22: 20(int) Constant 2 + 23: 20(int) Constant 3 + 24: 21(ivec2) ConstantComposite 22 23 + 29: 12(int) Constant 240 + 31: 20(int) Constant 4 + 34: 12(int) Constant 1 + 39: TypeImage 20(int) 2D array multi-sampled sampled format:Unknown + 40: TypeSampledImage 39 + 41: TypePointer UniformConstant 40 + 42(is2DMSArray): 41(ptr) Variable UniformConstant + 44: TypeVector 20(int) 3 + 45: 20(int) Constant 1 + 46: 44(ivec3) ConstantComposite 22 23 45 + 55: TypeVector 20(int) 4 + 60: TypeImage 12(int) SubpassData multi-sampled nonsampled format:Unknown + 61: TypePointer UniformConstant 60 + 62(usubpassMS): 61(ptr) Variable UniformConstant + 64: 20(int) Constant 0 + 65: 21(ivec2) ConstantComposite 64 64 + 72: TypeVector 12(int) 4 + 77: TypePointer Output 7(fvec4) + 78(fragColor): 77(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 9(f4): 8(ptr) Variable Function + 14(fragMask): 13(ptr) Variable Function + 27(fragIndex): 13(ptr) Variable Function + Store 9(f4) 11 + 19: 16 Load 18(s2DMS) + 25: 15 Image 19 + 26: 12(int) FragmentMaskFetchAMD 25 24 + Store 14(fragMask) 26 + 28: 12(int) Load 14(fragMask) + 30: 12(int) BitwiseAnd 28 29 + 32: 12(int) ShiftRightLogical 30 31 + Store 27(fragIndex) 32 + 33: 16 Load 18(s2DMS) + 35: 15 Image 33 + 36: 7(fvec4) FragmentFetchAMD 35 24 34 + 37: 7(fvec4) Load 9(f4) + 38: 7(fvec4) FAdd 37 36 + Store 9(f4) 38 + 43: 40 Load 42(is2DMSArray) + 47: 39 Image 43 + 48: 12(int) FragmentMaskFetchAMD 47 46 + Store 14(fragMask) 48 + 49: 12(int) Load 14(fragMask) + 50: 12(int) BitwiseAnd 49 29 + 51: 12(int) ShiftRightLogical 50 31 + Store 27(fragIndex) 51 + 52: 40 Load 42(is2DMSArray) + 53: 12(int) Load 27(fragIndex) + 54: 39 Image 52 + 56: 55(ivec4) FragmentFetchAMD 54 46 53 + 57: 7(fvec4) ConvertSToF 56 + 58: 7(fvec4) Load 9(f4) + 59: 7(fvec4) FAdd 58 57 + Store 9(f4) 59 + 63: 60 Load 62(usubpassMS) + 66: 12(int) FragmentMaskFetchAMD 63 65 + Store 14(fragMask) 66 + 67: 12(int) Load 14(fragMask) + 68: 12(int) BitwiseAnd 67 29 + 69: 12(int) ShiftRightLogical 68 31 + Store 27(fragIndex) 69 + 70: 60 Load 62(usubpassMS) + 71: 12(int) Load 27(fragIndex) + 73: 72(ivec4) FragmentFetchAMD 70 65 71 + 74: 7(fvec4) ConvertUToF 73 + 75: 7(fvec4) Load 9(f4) + 76: 7(fvec4) FAdd 75 74 + Store 9(f4) 76 + 79: 7(fvec4) Load 9(f4) + Store 78(fragColor) 79 + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.tesc.out b/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.tesc.out index 8a83f9ef5..9ce031dcd 100644 --- a/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.tesc.out +++ b/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.tesc.out @@ -3,81 +3,84 @@ spv.stereoViewRendering.tesc // Generated by (magic number): 80001 // Id's are bound by 38 + Capability Geometry Capability Tessellation + Capability ShaderViewportIndexLayerNV Capability ShaderViewportMaskNV Capability ShaderStereoViewNV + Extension "SPV_EXT_shader_viewport_index_layer" Extension "SPV_NV_stereo_view_rendering" Extension "SPV_NV_viewport_array2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 4 "main" 16 18 32 + EntryPoint TessellationControl 4 "main" 16 18 31 37 ExecutionMode 4 OutputVertices 4 Source GLSL 450 SourceExtension "GL_NV_stereo_view_rendering" SourceExtension "GL_NV_viewport_array2" Name 4 "main" Name 12 "gl_PerVertex" - MemberName 12(gl_PerVertex) 0 "gl_Layer" - MemberName 12(gl_PerVertex) 1 "gl_SecondaryPositionNV" - MemberName 12(gl_PerVertex) 2 "gl_SecondaryViewportMaskNV" + MemberName 12(gl_PerVertex) 0 "gl_SecondaryPositionNV" + MemberName 12(gl_PerVertex) 1 "gl_SecondaryViewportMaskNV" Name 16 "gl_out" Name 18 "gl_InvocationID" - Name 28 "gl_PerVertex" - MemberName 28(gl_PerVertex) 0 "gl_Position" - MemberName 28(gl_PerVertex) 1 "gl_PointSize" - MemberName 28(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 28(gl_PerVertex) 3 "gl_CullDistance" - MemberName 28(gl_PerVertex) 4 "gl_SecondaryPositionNV" - Name 32 "gl_in" - MemberDecorate 12(gl_PerVertex) 0 BuiltIn Layer - MemberDecorate 12(gl_PerVertex) 0 ViewportRelativeNV - MemberDecorate 12(gl_PerVertex) 0 SecondaryViewportRelativeNV 1 - MemberDecorate 12(gl_PerVertex) 1 BuiltIn SecondaryPositionNV - MemberDecorate 12(gl_PerVertex) 2 BuiltIn SecondaryViewportMaskNV + 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" + MemberName 27(gl_PerVertex) 4 "gl_SecondaryPositionNV" + Name 31 "gl_in" + Name 37 "gl_Layer" + MemberDecorate 12(gl_PerVertex) 0 BuiltIn SecondaryPositionNV + MemberDecorate 12(gl_PerVertex) 1 BuiltIn SecondaryViewportMaskNV Decorate 12(gl_PerVertex) Block Decorate 18(gl_InvocationID) BuiltIn InvocationId - MemberDecorate 28(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 28(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 28(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 28(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 28(gl_PerVertex) Block + MemberDecorate 27(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 27(gl_PerVertex) Block + Decorate 37(gl_Layer) BuiltIn Layer + Decorate 37(gl_Layer) ViewportRelativeNV + Decorate 37(gl_Layer) SecondaryViewportRelativeNV 1 2: TypeVoid 3: TypeFunction 2 - 6: TypeInt 32 1 - 7: TypeFloat 32 - 8: TypeVector 7(float) 4 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeInt 32 1 9: TypeInt 32 0 10: 9(int) Constant 2 - 11: TypeArray 6(int) 10 -12(gl_PerVertex): TypeStruct 6(int) 8(fvec4) 11 + 11: TypeArray 8(int) 10 +12(gl_PerVertex): TypeStruct 7(fvec4) 11 13: 9(int) Constant 4 14: TypeArray 12(gl_PerVertex) 13 15: TypePointer Output 14 16(gl_out): 15(ptr) Variable Output - 17: TypePointer Input 6(int) + 17: TypePointer Input 8(int) 18(gl_InvocationID): 17(ptr) Variable Input - 20: 6(int) Constant 2 - 21: 6(int) Constant 0 - 22: 6(int) Constant 1 - 23: TypePointer Output 6(int) - 26: 9(int) Constant 1 - 27: TypeArray 7(float) 26 -28(gl_PerVertex): TypeStruct 8(fvec4) 7(float) 27 27 8(fvec4) - 29: 9(int) Constant 32 - 30: TypeArray 28(gl_PerVertex) 29 - 31: TypePointer Input 30 - 32(gl_in): 31(ptr) Variable Input - 33: TypePointer Input 8(fvec4) - 36: TypePointer Output 8(fvec4) + 20: 8(int) Constant 1 + 21: 8(int) Constant 0 + 22: TypePointer Output 8(int) + 25: 9(int) Constant 1 + 26: TypeArray 6(float) 25 +27(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 26 26 7(fvec4) + 28: 9(int) Constant 32 + 29: TypeArray 27(gl_PerVertex) 28 + 30: TypePointer Input 29 + 31(gl_in): 30(ptr) Variable Input + 32: TypePointer Input 7(fvec4) + 35: TypePointer Output 7(fvec4) + 37(gl_Layer): 22(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 19: 6(int) Load 18(gl_InvocationID) - 24: 23(ptr) AccessChain 16(gl_out) 19 20 21 - Store 24 22 - 25: 6(int) Load 18(gl_InvocationID) - 34: 33(ptr) AccessChain 32(gl_in) 22 21 - 35: 8(fvec4) Load 34 - 37: 36(ptr) AccessChain 16(gl_out) 25 22 - Store 37 35 + 19: 8(int) Load 18(gl_InvocationID) + 23: 22(ptr) AccessChain 16(gl_out) 19 20 21 + Store 23 20 + 24: 8(int) Load 18(gl_InvocationID) + 33: 32(ptr) AccessChain 31(gl_in) 20 21 + 34: 7(fvec4) Load 33 + 36: 35(ptr) AccessChain 16(gl_out) 24 21 + Store 36 34 Return FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/spv.viewportArray2.tesc.out b/3rdparty/glslang/Test/baseResults/spv.viewportArray2.tesc.out index a8c7dc6d5..d5c2c8231 100644 --- a/3rdparty/glslang/Test/baseResults/spv.viewportArray2.tesc.out +++ b/3rdparty/glslang/Test/baseResults/spv.viewportArray2.tesc.out @@ -3,6 +3,7 @@ spv.viewportArray2.tesc // Generated by (magic number): 80001 // Id's are bound by 25 + Capability Geometry Capability Tessellation Capability MultiViewport Capability ShaderViewportIndexLayerNV @@ -11,47 +12,47 @@ spv.viewportArray2.tesc Extension "SPV_NV_viewport_array2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 4 "main" 14 16 + EntryPoint TessellationControl 4 "main" 14 16 22 24 ExecutionMode 4 OutputVertices 4 Source GLSL 450 SourceExtension "GL_NV_viewport_array2" Name 4 "main" Name 10 "gl_PerVertex" - MemberName 10(gl_PerVertex) 0 "gl_ViewportIndex" - MemberName 10(gl_PerVertex) 1 "gl_Layer" - MemberName 10(gl_PerVertex) 2 "gl_ViewportMask" + MemberName 10(gl_PerVertex) 0 "gl_ViewportMask" Name 14 "gl_out" Name 16 "gl_InvocationID" - MemberDecorate 10(gl_PerVertex) 0 BuiltIn ViewportIndex - MemberDecorate 10(gl_PerVertex) 1 BuiltIn Layer - MemberDecorate 10(gl_PerVertex) 1 ViewportRelativeNV - MemberDecorate 10(gl_PerVertex) 2 BuiltIn ViewportMaskNV + Name 22 "gl_ViewportIndex" + Name 24 "gl_Layer" + MemberDecorate 10(gl_PerVertex) 0 BuiltIn ViewportMaskNV Decorate 10(gl_PerVertex) Block Decorate 16(gl_InvocationID) BuiltIn InvocationId + Decorate 22(gl_ViewportIndex) BuiltIn ViewportIndex + Decorate 24(gl_Layer) BuiltIn Layer + Decorate 24(gl_Layer) ViewportRelativeNV 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypeInt 32 0 8: 7(int) Constant 2 9: TypeArray 6(int) 8 -10(gl_PerVertex): TypeStruct 6(int) 6(int) 9 +10(gl_PerVertex): TypeStruct 9 11: 7(int) Constant 4 12: TypeArray 10(gl_PerVertex) 11 13: TypePointer Output 12 14(gl_out): 13(ptr) Variable Output 15: TypePointer Input 6(int) 16(gl_InvocationID): 15(ptr) Variable Input - 18: 6(int) Constant 2 - 19: 6(int) Constant 0 - 20: 6(int) Constant 1 - 21: TypePointer Output 6(int) + 18: 6(int) Constant 0 + 19: 6(int) Constant 1 + 20: TypePointer Output 6(int) +22(gl_ViewportIndex): 20(ptr) Variable Output + 23: 6(int) Constant 2 + 24(gl_Layer): 20(ptr) Variable Output 4(main): 2 Function None 3 5: Label 17: 6(int) Load 16(gl_InvocationID) - 22: 21(ptr) AccessChain 14(gl_out) 17 18 19 - Store 22 20 - 23: 6(int) Load 16(gl_InvocationID) - 24: 21(ptr) AccessChain 14(gl_out) 23 19 - Store 24 18 + 21: 20(ptr) AccessChain 14(gl_out) 17 18 18 + Store 21 19 + Store 22(gl_ViewportIndex) 23 Return FunctionEnd diff --git a/3rdparty/glslang/Test/glsl.entryPointRename.vert b/3rdparty/glslang/Test/glsl.entryPointRename.vert new file mode 100644 index 000000000..7fc6b7a1b --- /dev/null +++ b/3rdparty/glslang/Test/glsl.entryPointRename.vert @@ -0,0 +1,11 @@ +#version 460 + +void bar() +{ + gl_Position = vec4(1); +} + +void main() +{ + gl_Position = vec4(1); +} diff --git a/3rdparty/glslang/Test/glsl.entryPointRename2.vert b/3rdparty/glslang/Test/glsl.entryPointRename2.vert new file mode 100644 index 000000000..0473e9bc4 --- /dev/null +++ b/3rdparty/glslang/Test/glsl.entryPointRename2.vert @@ -0,0 +1,6 @@ +#version 460 + +void bar() +{ + gl_Position = vec4(1); +} diff --git a/3rdparty/glslang/Test/hlsl.array.frag b/3rdparty/glslang/Test/hlsl.array.frag index 1abba89fc..ff0004fd8 100644 --- a/3rdparty/glslang/Test/hlsl.array.frag +++ b/3rdparty/glslang/Test/hlsl.array.frag @@ -4,8 +4,15 @@ struct { float4 m[7]; } s[11]; -float4 PixelShaderFunction(int i, float4 input[3]) : COLOR0 +static float4 C = float4(1,2,3,4); +float4 a1[1] = { float4(1,2,3,4) }; +float4 a2[2] = { float4(1,2,3,4), float4(5,2,3,4), }; +const float4 c1[1] = { float4(1,2,3,4) }; +static const float4 c2[2] = { C, float4(1,2,3,4), }; + +float4 PixelShaderFunction(int i : sem1, float4 input[3] : sem2) : SV_TARGET0 { - float4 b[10]; - return a[1] + a[i] + input[2] + input[i] + b[5] + b[i] + s[i].m[i]; -} \ No newline at end of file + float4 b[10] = { C, C, C, C, C, C, C, C, C, C }; + float4 tmp = C + a1[0] + c1[0] + a2[i] + c2[i]; + return a[1] + a[i] + input[2] + input[i] + b[5] + b[i] + s[i].m[i] + tmp; +} diff --git a/3rdparty/glslang/Test/hlsl.constantbuffer.frag b/3rdparty/glslang/Test/hlsl.constantbuffer.frag index d7a6ef529..c2b3a00ca 100644 --- a/3rdparty/glslang/Test/hlsl.constantbuffer.frag +++ b/3rdparty/glslang/Test/hlsl.constantbuffer.frag @@ -21,6 +21,6 @@ float4 main() : SV_Target0 if (cb3[1][2].x) return cb1.x + cb2[1].y + c1; else - return cb3[2][3].y; + return cb3[1][3].y; } diff --git a/3rdparty/glslang/Test/hlsl.hull.4.tesc b/3rdparty/glslang/Test/hlsl.hull.4.tesc new file mode 100644 index 000000000..cd2b09443 --- /dev/null +++ b/3rdparty/glslang/Test/hlsl.hull.4.tesc @@ -0,0 +1,43 @@ + +// Test mixed InputPatch structure: user and builtin members. Hull shaders involve extra +// logic in this case due to patch constant function call synthesis. + +// This example tests the main EP and the PCF EP both having an input patch. + +struct HS_Main_Output +{ + float4 m_Position : SV_POSITION ; +}; + +struct HS_Output +{ + float fTessFactor [ 3 ] : SV_TessFactor ; + float fInsideTessFactor : SV_InsideTessFactor ; +}; + +struct HS_Input +{ + float4 m_Position : SV_POSITION; + float4 m_Normal : TEXCOORD2; +}; + +HS_Output HS_ConstFunc ( InputPatch < HS_Input , 3 > I ) +{ + HS_Output O = (HS_Output)0; + + O.fInsideTessFactor = I [ 0 ].m_Position.w + I [ 0 ].m_Normal.w; + + return O; +} + +[ domain ( "tri" ) ] +[ partitioning ( "fractional_odd" ) ] +[ outputtopology ( "triangle_cw" ) ] +[ patchconstantfunc ( "HS_ConstFunc" ) ] +[ outputcontrolpoints ( 3 ) ] +HS_Main_Output main( InputPatch < HS_Input , 3 > I , uint cpid : SV_OutputControlPointID ) +{ + HS_Main_Output output = ( HS_Main_Output ) 0 ; + output.m_Position = 0; + return output ; +} diff --git a/3rdparty/glslang/Test/hlsl.hull.5.tesc b/3rdparty/glslang/Test/hlsl.hull.5.tesc new file mode 100644 index 000000000..c9e511ebf --- /dev/null +++ b/3rdparty/glslang/Test/hlsl.hull.5.tesc @@ -0,0 +1,43 @@ + +// Test mixed InputPatch structure: user and builtin members. Hull shaders involve extra +// logic in this case due to patch constant function call synthesis. + +// This example tests the PCF EP having an InputPatch, but the main EP does not. + +struct HS_Main_Output +{ + float4 m_Position : SV_POSITION ; +}; + +struct HS_Output +{ + float fTessFactor [ 3 ] : SV_TessFactor ; + float fInsideTessFactor : SV_InsideTessFactor ; +}; + +struct HS_Input +{ + float4 m_Position : SV_POSITION; + float4 m_Normal : TEXCOORD2; +}; + +HS_Output HS_ConstFunc ( InputPatch < HS_Input , 3 > I ) +{ + HS_Output O = (HS_Output)0; + + O.fInsideTessFactor = I [ 0 ].m_Position.w + I [ 0 ].m_Normal.w; + + return O; +} + +[ domain ( "tri" ) ] +[ partitioning ( "fractional_odd" ) ] +[ outputtopology ( "triangle_cw" ) ] +[ patchconstantfunc ( "HS_ConstFunc" ) ] +[ outputcontrolpoints ( 3 ) ] +HS_Main_Output main( uint cpid : SV_OutputControlPointID ) +{ + HS_Main_Output output = ( HS_Main_Output ) 0 ; + output.m_Position = 0; + return output ; +} diff --git a/3rdparty/glslang/Test/runtests b/3rdparty/glslang/Test/runtests index f0da75f54..3cceb4301 100755 --- a/3rdparty/glslang/Test/runtests +++ b/3rdparty/glslang/Test/runtests @@ -156,6 +156,16 @@ $EXE --target-env opengl spv.targetOpenGL.vert || HASERROR=1 $EXE -V100 spv.targetVulkan.vert || HASERROR=1 $EXE -G100 spv.targetOpenGL.vert || HASERROR=1 +# +# Testing GLSL entry point rename +# +$EXE -H -e foo --source-entrypoint main glsl.entryPointRename.vert > $TARGETDIR/glsl.entryPointRename.vert.out +diff -b $BASEDIR/glsl.entryPointRename.vert.out $TARGETDIR/glsl.entryPointRename.vert.out || HASERROR=1 +$EXE -H -e foo --source-entrypoint bar glsl.entryPointRename.vert > $TARGETDIR/glsl.entryPointRename.vert.bad.out +diff -b $BASEDIR/glsl.entryPointRename.vert.bad.out $TARGETDIR/glsl.entryPointRename.vert.bad.out || HASERROR=1 +$EXE -H -e foo --source-entrypoint main glsl.entryPointRename2.vert > $TARGETDIR/glsl.entryPointRename2.vert.out +diff -b $BASEDIR/glsl.entryPointRename2.vert.out $TARGETDIR/glsl.entryPointRename2.vert.out || HASERROR=1 + # # Final checking # diff --git a/3rdparty/glslang/Test/spv.shaderFragMaskAMD.frag b/3rdparty/glslang/Test/spv.shaderFragMaskAMD.frag new file mode 100644 index 000000000..b9e8ab059 --- /dev/null +++ b/3rdparty/glslang/Test/spv.shaderFragMaskAMD.frag @@ -0,0 +1,29 @@ +#version 450 core + +#extension GL_AMD_shader_fragment_mask: enable + +layout(binding = 0) uniform sampler2DMS s2DMS; +layout(binding = 1) uniform isampler2DMSArray is2DMSArray; + +layout(binding = 2, input_attachment_index = 0) uniform usubpassInputMS usubpassMS; + +layout(location = 0) out vec4 fragColor; + +void main() +{ + vec4 f4 = vec4(0.0); + + uint fragMask = fragmentMaskFetchAMD(s2DMS, ivec2(2, 3)); + uint fragIndex = (fragMask & 0xF0) >> 4; + f4 += fragmentFetchAMD(s2DMS, ivec2(2, 3), 1); + + fragMask = fragmentMaskFetchAMD(is2DMSArray, ivec3(2, 3, 1)); + fragIndex = (fragMask & 0xF0) >> 4; + f4 += fragmentFetchAMD(is2DMSArray, ivec3(2, 3, 1), fragIndex); + + fragMask = fragmentMaskFetchAMD(usubpassMS); + fragIndex = (fragMask & 0xF0) >> 4; + f4 += fragmentFetchAMD(usubpassMS, fragIndex); + + fragColor = f4; +} \ No newline at end of file diff --git a/3rdparty/glslang/Test/spv.stereoViewRendering.tesc b/3rdparty/glslang/Test/spv.stereoViewRendering.tesc index 62fc956be..e8cfe0034 100644 --- a/3rdparty/glslang/Test/spv.stereoViewRendering.tesc +++ b/3rdparty/glslang/Test/spv.stereoViewRendering.tesc @@ -8,9 +8,10 @@ layout(vertices = 4) out; out gl_PerVertex { int gl_SecondaryViewportMaskNV[2]; vec4 gl_SecondaryPositionNV; - layout (viewport_relative, secondary_view_offset = 1) out highp int gl_Layer; } gl_out[4]; +layout (viewport_relative, secondary_view_offset = 1) out highp int gl_Layer; + void main() { gl_out[gl_InvocationID].gl_SecondaryViewportMaskNV[0] = 1; diff --git a/3rdparty/glslang/Test/spv.viewportArray2.tesc b/3rdparty/glslang/Test/spv.viewportArray2.tesc index f629b438c..7fc208a45 100644 --- a/3rdparty/glslang/Test/spv.viewportArray2.tesc +++ b/3rdparty/glslang/Test/spv.viewportArray2.tesc @@ -5,12 +5,12 @@ layout(vertices = 4) out; out gl_PerVertex { int gl_ViewportMask[2]; - int gl_ViewportIndex; - layout (viewport_relative) out highp int gl_Layer; } gl_out[4]; +layout (viewport_relative) out highp int gl_Layer; + void main() { - gl_out[gl_InvocationID].gl_ViewportMask[0] = 1; - gl_out[gl_InvocationID].gl_ViewportIndex = 2; + gl_out[gl_InvocationID].gl_ViewportMask[0] = 1; + gl_ViewportIndex = 2; } diff --git a/3rdparty/glslang/glslang/Include/BaseTypes.h b/3rdparty/glslang/glslang/Include/BaseTypes.h index 08fb623ac..0a46a7c0f 100644 --- a/3rdparty/glslang/glslang/Include/BaseTypes.h +++ b/3rdparty/glslang/glslang/Include/BaseTypes.h @@ -198,6 +198,7 @@ enum TBuiltInVariable { EbvSamplePosition, EbvSampleMask, EbvHelperInvocation, + #ifdef AMD_EXTENSIONS EbvBaryCoordNoPersp, EbvBaryCoordNoPerspCentroid, @@ -334,6 +335,7 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v) case EbvSamplePosition: return "SamplePosition"; case EbvSampleMask: return "SampleMaskIn"; case EbvHelperInvocation: return "HelperInvocation"; + #ifdef AMD_EXTENSIONS case EbvBaryCoordNoPersp: return "BaryCoordNoPersp"; case EbvBaryCoordNoPerspCentroid: return "BaryCoordNoPerspCentroid"; diff --git a/3rdparty/glslang/glslang/Include/Common.h b/3rdparty/glslang/glslang/Include/Common.h index c3803191e..467862d79 100644 --- a/3rdparty/glslang/glslang/Include/Common.h +++ b/3rdparty/glslang/glslang/Include/Common.h @@ -78,6 +78,10 @@ inline long long int atoll (const char* str) } #endif +#if defined(_MSC_VER) +#define strdup _strdup +#endif + /* windows only pragma */ #ifdef _MSC_VER #pragma warning(disable : 4786) // Don't warn about too long identifiers @@ -222,6 +226,7 @@ inline const TString String(const int i, const int /*base*/ = 10) struct TSourceLoc { void init() { name = nullptr; string = 0; line = 0; column = 0; } + void init(int stringNum) { init(); string = stringNum; } // Returns the name if it exists. Otherwise, returns the string number. std::string getStringNameOrNum(bool quoteStringName = true) const { diff --git a/3rdparty/glslang/glslang/Include/intermediate.h b/3rdparty/glslang/glslang/Include/intermediate.h index 6149b19b9..97e3e4780 100644 --- a/3rdparty/glslang/glslang/Include/intermediate.h +++ b/3rdparty/glslang/glslang/Include/intermediate.h @@ -653,6 +653,8 @@ enum TOperator { EOpTextureGatherLod, EOpTextureGatherLodOffset, EOpTextureGatherLodOffsets, + EOpFragmentMaskFetch, + EOpFragmentFetch, #endif EOpSparseTextureGuardBegin, @@ -1032,6 +1034,9 @@ struct TCrackedTextureOp { bool grad; bool subpass; bool lodClamp; +#ifdef AMD_EXTENSIONS + bool fragMask; +#endif }; // @@ -1079,6 +1084,9 @@ public: cracked.grad = false; cracked.subpass = false; cracked.lodClamp = false; +#ifdef AMD_EXTENSIONS + cracked.fragMask = false; +#endif switch (op) { case EOpImageQuerySize: @@ -1210,6 +1218,14 @@ public: case EOpSparseImageLoadLod: cracked.lod = true; break; + case EOpFragmentMaskFetch: + cracked.subpass = sampler.dim == EsdSubpass; + cracked.fragMask = true; + break; + case EOpFragmentFetch: + cracked.subpass = sampler.dim == EsdSubpass; + cracked.fragMask = true; + break; #endif case EOpSubpassLoad: case EOpSubpassLoadMS: diff --git a/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp b/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp index e71ec5ef0..fea8a6b30 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp @@ -2283,7 +2283,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV if (profile != EEsProfile && version >= 450) { commonBuiltins.append( "float cubeFaceIndexAMD(vec3);" - "vec2 cubeFaceCoordAMD(vec3);" + "vec2 cubeFaceCoordAMD(vec3);" "uint64_t timeAMD();" "\n"); @@ -2787,6 +2787,29 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + + // GL_AMD_shader_fragment_mask + if (profile != EEsProfile && version >= 450) { + commonBuiltins.append( + "uint fragmentMaskFetchAMD(sampler2DMS, ivec2);" + "uint fragmentMaskFetchAMD(isampler2DMS, ivec2);" + "uint fragmentMaskFetchAMD(usampler2DMS, ivec2);" + + "uint fragmentMaskFetchAMD(sampler2DMSArray, ivec3);" + "uint fragmentMaskFetchAMD(isampler2DMSArray, ivec3);" + "uint fragmentMaskFetchAMD(usampler2DMSArray, ivec3);" + + "vec4 fragmentFetchAMD(sampler2DMS, ivec2, uint);" + "ivec4 fragmentFetchAMD(isampler2DMS, ivec2, uint);" + "uvec4 fragmentFetchAMD(usampler2DMS, ivec2, uint);" + + "vec4 fragmentFetchAMD(sampler2DMSArray, ivec3, uint);" + "ivec4 fragmentFetchAMD(isampler2DMSArray, ivec3, uint);" + "uvec4 fragmentFetchAMD(usampler2DMSArray, ivec3, uint);" + + "\n"); + } + #endif //============================================================================ @@ -3126,6 +3149,20 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + + // GL_AMD_shader_fragment_mask + if (profile != EEsProfile && version >= 450 && spvVersion.vulkan >= 100) { + stageBuiltins[EShLangFragment].append( + "uint fragmentMaskFetchAMD(subpassInputMS);" + "uint fragmentMaskFetchAMD(isubpassInputMS);" + "uint fragmentMaskFetchAMD(usubpassInputMS);" + + "vec4 fragmentFetchAMD(subpassInputMS, uint);" + "ivec4 fragmentFetchAMD(isubpassInputMS, uint);" + "uvec4 fragmentFetchAMD(usubpassInputMS, uint);" + + "\n"); + } #endif //============================================================================ @@ -3425,7 +3462,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in int gl_DrawIDARB;" ); } - if (version >= 450) { + if (version >= 410) { stageBuiltins[EShLangVertex].append( "out int gl_ViewportIndex;" "out int gl_Layer;" @@ -3558,6 +3595,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "out int gl_PrimitiveID;" "out int gl_Layer;"); + if (version >= 150) + stageBuiltins[EShLangGeometry].append( + "out int gl_ViewportIndex;" + ); + if (profile == ECompatibilityProfile && version < 400) stageBuiltins[EShLangGeometry].append( "out vec4 gl_ClipVertex;" @@ -3567,11 +3609,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangGeometry].append( "in int gl_InvocationID;" ); - // GL_ARB_viewport_array - if (version >= 150) - stageBuiltins[EShLangGeometry].append( - "out int gl_ViewportIndex;" - ); #ifdef NV_EXTENSIONS if (version >= 450) @@ -3648,8 +3685,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangTessControl].append( "float gl_CullDistance[];" #ifdef NV_EXTENSIONS - "int gl_ViewportIndex;" - "int gl_Layer;" "int gl_ViewportMask[];" // GL_NV_viewport_array2 "vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering @@ -3663,6 +3698,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "patch out float gl_TessLevelOuter[4];" "patch out float gl_TessLevelInner[2];" "\n"); + + if (version >= 410) + stageBuiltins[EShLangTessControl].append( + "out int gl_ViewportIndex;" + "out int gl_Layer;" + "\n"); + } else { // Note: "in gl_PerVertex {...} gl_in[gl_MaxPatchVertices];" is declared in initialize() below, // as it depends on the resource sizing of gl_MaxPatchVertices. @@ -3734,11 +3776,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "};" "\n"); - if (version >= 450) + if (version >= 410) stageBuiltins[EShLangTessEvaluation].append( "out int gl_ViewportIndex;" "out int gl_Layer;" - ); + "\n"); #ifdef NV_EXTENSIONS if (version >= 450) @@ -5372,6 +5414,11 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("cubeFaceCoordAMD", 1, &E_GL_AMD_gcn_shader); symbolTable.setFunctionExtensions("timeAMD", 1, &E_GL_AMD_gcn_shader); } + + if (profile != EEsProfile) { + symbolTable.setFunctionExtensions("fragmentMaskFetchAMD", 1, &E_GL_AMD_shader_fragment_mask); + symbolTable.setFunctionExtensions("fragmentFetchAMD", 1, &E_GL_AMD_shader_fragment_mask); + } #endif // Compatibility variables, vertex only @@ -5476,7 +5523,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_ViewportIndex", Num_viewportEXTs, viewportEXTs); } #else - if (language == EShLangVertex || language == EShLangTessEvaluation) { + if (language != EShLangGeometry && version >= 410) { symbolTable.setVariableExtensions("gl_Layer", 1, &E_GL_ARB_shader_viewport_layer_array); symbolTable.setVariableExtensions("gl_ViewportIndex", 1, &E_GL_ARB_shader_viewport_layer_array); } @@ -5499,8 +5546,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_in", "gl_SecondaryPositionNV", EbvSecondaryPositionNV, symbolTable); BuiltInVariable("gl_in", "gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable); } - BuiltInVariable("gl_out", "gl_Layer", EbvLayer, symbolTable); - BuiltInVariable("gl_out", "gl_ViewportIndex", EbvViewportIndex, symbolTable); BuiltInVariable("gl_out", "gl_ViewportMask", EbvViewportMaskNV, symbolTable); BuiltInVariable("gl_out", "gl_SecondaryPositionNV", EbvSecondaryPositionNV, symbolTable); BuiltInVariable("gl_out", "gl_SecondaryViewportMaskNV", EbvSecondaryViewportMaskNV, symbolTable); @@ -6210,6 +6255,9 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("imageLoadLodAMD", EOpImageLoadLod); symbolTable.relateToOperator("imageStoreLodAMD", EOpImageStoreLod); symbolTable.relateToOperator("sparseImageLoadLodAMD", EOpSparseImageLoadLod); + + symbolTable.relateToOperator("fragmentMaskFetchAMD", EOpFragmentMaskFetch); + symbolTable.relateToOperator("fragmentFetchAMD", EOpFragmentFetch); #endif } if (profile == EEsProfile) { diff --git a/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp b/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp index 44fc0b47b..447c038f3 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp @@ -234,6 +234,31 @@ void TParseContextBase::trackLinkage(TSymbol& symbol) linkageSymbols.push_back(&symbol); } +// Ensure index is in bounds, correct if necessary. +// Give an error if not. +void TParseContextBase::checkIndex(const TSourceLoc& loc, const TType& type, int& index) +{ + if (index < 0) { + error(loc, "", "[", "index out of range '%d'", index); + index = 0; + } else if (type.isArray()) { + if (type.isExplicitlySizedArray() && index >= type.getOuterArraySize()) { + error(loc, "", "[", "array index out of range '%d'", index); + index = type.getOuterArraySize() - 1; + } + } else if (type.isVector()) { + if (index >= type.getVectorSize()) { + error(loc, "", "[", "vector index out of range '%d'", index); + index = type.getVectorSize() - 1; + } + } else if (type.isMatrix()) { + if (index >= type.getMatrixCols()) { + error(loc, "", "[", "matrix index out of range '%d'", index); + index = type.getMatrixCols() - 1; + } + } +} + // 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 already sharing it (non-shallow type), diff --git a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp index 6decfea72..8154e687a 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp @@ -49,9 +49,10 @@ 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) : + TInfoSink& infoSink, bool forwardCompatible, EShMessages messages, + const TString* entryPoint) : TParseContextBase(symbolTable, interm, parsingBuiltins, version, profile, spvVersion, language, - infoSink, forwardCompatible, messages), + infoSink, forwardCompatible, messages, entryPoint), inMain(false), blockName(nullptr), limits(resources.limits), @@ -88,6 +89,9 @@ TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, b if (language == EShLangGeometry) globalOutputDefaults.layoutStream = 0; + + if (entryPoint != nullptr && entryPoint->size() > 0 && *entryPoint != "main") + infoSink.info.message(EPrefixError, "Source entry point must be \"main\""); } TParseContext::~TParseContext() @@ -425,29 +429,6 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn return result; } -void TParseContext::checkIndex(const TSourceLoc& loc, const TType& type, int& index) -{ - if (index < 0) { - error(loc, "", "[", "index out of range '%d'", index); - index = 0; - } else if (type.isArray()) { - if (type.isExplicitlySizedArray() && index >= type.getOuterArraySize()) { - error(loc, "", "[", "array index out of range '%d'", index); - index = type.getOuterArraySize() - 1; - } - } else if (type.isVector()) { - if (index >= type.getVectorSize()) { - error(loc, "", "[", "vector index out of range '%d'", index); - index = type.getVectorSize() - 1; - } - } else if (type.isMatrix()) { - if (index >= type.getMatrixCols()) { - error(loc, "", "[", "matrix index out of range '%d'", index); - index = type.getMatrixCols() - 1; - } - } -} - // for ES 2.0 (version 100) limitations for almost all index operations except vertex-shader uniforms void TParseContext::handleIndexLimits(const TSourceLoc& /*loc*/, TIntermTyped* base, TIntermTyped* index) { @@ -3528,14 +3509,6 @@ void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newT oldType.getQualifier().flat = newType.getQualifier().flat; oldType.getQualifier().nopersp = newType.getQualifier().nopersp; -#ifdef NV_EXTENSIONS - if (member->type->getFieldName() == "gl_Layer") { - if (!newType.getQualifier().layoutViewportRelative && newType.getQualifier().layoutSecondaryViewportRelativeOffset == -2048) - error(loc, "redeclaration only allowed for viewport_relative or secondary_view_offset layout", "redeclaration", member->type->getFieldName().c_str()); - oldType.getQualifier().layoutViewportRelative = newType.getQualifier().layoutViewportRelative; - oldType.getQualifier().layoutSecondaryViewportRelativeOffset = newType.getQualifier().layoutSecondaryViewportRelativeOffset; - } -#endif if (oldType.isImplicitlySizedArray() && newType.isExplicitlySizedArray()) oldType.changeOuterArraySize(newType.getOuterArraySize()); @@ -5501,7 +5474,7 @@ TIntermTyped* TParseContext::addConstructor(const TSourceLoc& loc, TIntermNode* bool singleArg; if (aggrNode) { - if (aggrNode->getOp() != EOpNull || aggrNode->getSequence().size() == 1) + if (aggrNode->getOp() != EOpNull) singleArg = true; else singleArg = false; diff --git a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h index d04607a04..fb6d0bc2b 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h +++ b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h @@ -74,7 +74,8 @@ class TParseContextBase : public TParseVersions { public: TParseContextBase(TSymbolTable& symbolTable, TIntermediate& interm, bool parsingBuiltins, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, - TInfoSink& infoSink, bool forwardCompatible, EShMessages messages) + TInfoSink& infoSink, bool forwardCompatible, EShMessages messages, + const TString* entryPoint = nullptr) : TParseVersions(interm, version, profile, spvVersion, language, infoSink, forwardCompatible, messages), scopeMangler("::"), symbolTable(symbolTable), @@ -84,7 +85,10 @@ public: parsingBuiltins(parsingBuiltins), scanContext(nullptr), ppContext(nullptr), limits(resources.limits), globalUniformBlock(nullptr) - { } + { + if (entryPoint != nullptr) + sourceEntryPointName = *entryPoint; + } virtual ~TParseContextBase() { } virtual void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, @@ -98,6 +102,8 @@ public: virtual void setLimits(const TBuiltInResource&) = 0; + void checkIndex(const TSourceLoc&, const TType&, int& index); + EShLanguage getLanguage() const { return language; } void setScanContext(TScanContext* c) { scanContext = c; } TScanContext* getScanContext() const { return scanContext; } @@ -141,6 +147,15 @@ public: // Manage the global uniform block (default uniforms in GLSL, $Global in HLSL) virtual void growGlobalUniformBlock(const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr); + // Potentially rename shader entry point function + void 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 = NewPoolTString(intermediate.getEntryPointName().c_str()); + } + virtual bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*); virtual void rValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*); @@ -173,6 +188,7 @@ protected: TPpContext* ppContext; TBuiltInResource resources; TLimits& limits; + TString sourceEntryPointName; // These, if set, will be called when a line, pragma ... is preprocessed. // They will be called with any parameters to the original directive. @@ -249,7 +265,8 @@ protected: class TParseContext : public TParseContextBase { public: TParseContext(TSymbolTable&, TIntermediate&, bool parsingBuiltins, int version, EProfile, const SpvVersion& spvVersion, EShLanguage, TInfoSink&, - bool forwardCompatible = false, EShMessages messages = EShMsgDefault); + bool forwardCompatible = false, EShMessages messages = EShMsgDefault, + const TString* entryPoint = nullptr); virtual ~TParseContext(); bool obeyPrecisionQualifiers() const { return precisionManager.respectingPrecisionQualifiers(); }; @@ -268,7 +285,6 @@ public: 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*&) override; diff --git a/3rdparty/glslang/glslang/MachineIndependent/Scan.h b/3rdparty/glslang/glslang/MachineIndependent/Scan.h index 9b8f2d451..2c26c2efd 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Scan.h +++ b/3rdparty/glslang/glslang/MachineIndependent/Scan.h @@ -51,25 +51,24 @@ const int EndOfInput = -1; // class TInputScanner { public: - TInputScanner(int n, const char* const s[], size_t L[], const char* const* names = nullptr, int b = 0, int f = 0, bool single = false) : + TInputScanner(int n, const char* const s[], size_t L[], const char* const* names = nullptr, + int b = 0, int f = 0, bool single = false) : numSources(n), - sources(reinterpret_cast(s)), // up to this point, common usage is "char*", but now we need positive 8-bit characters - lengths(L), currentSource(0), currentChar(0), stringBias(b), finale(f), singleLogical(single), endOfFileReached(false) + // up to this point, common usage is "char*", but now we need positive 8-bit characters + sources(reinterpret_cast(s)), + lengths(L), currentSource(0), currentChar(0), stringBias(b), finale(f), singleLogical(single), + endOfFileReached(false) { loc = new TSourceLoc[numSources]; for (int i = 0; i < numSources; ++i) { - loc[i].init(); + loc[i].init(i - stringBias); } if (names != nullptr) { for (int i = 0; i < numSources; ++i) loc[i].name = names[i]; } - loc[currentSource].string = -stringBias; loc[currentSource].line = 1; - loc[currentSource].column = 0; - logicalSourceLoc.string = 0; - logicalSourceLoc.line = 1; - logicalSourceLoc.column = 0; + logicalSourceLoc.init(1); logicalSourceLoc.name = loc[0].name; } diff --git a/3rdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp b/3rdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp index 2a904f45e..dbc8e1441 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp @@ -91,18 +91,16 @@ TParseContextBase* CreateParseContext(TSymbolTable& symbolTable, TIntermediate& int version, EProfile profile, EShSource source, EShLanguage language, TInfoSink& infoSink, SpvVersion spvVersion, bool forwardCompatible, EShMessages messages, - bool parsingBuiltIns, const std::string sourceEntryPointName = "") + bool parsingBuiltIns, std::string sourceEntryPointName = "") { -#ifndef ENABLE_HLSL - (void)sourceEntryPointName; // Unused argument. -#endif - switch (source) { - case EShSourceGlsl: - intermediate.setEntryPointName("main"); + case EShSourceGlsl: { + if (sourceEntryPointName.size() == 0) + intermediate.setEntryPointName("main"); + TString entryPoint = sourceEntryPointName.c_str(); return new TParseContext(symbolTable, intermediate, parsingBuiltIns, version, profile, spvVersion, - language, infoSink, forwardCompatible, messages); - + language, infoSink, forwardCompatible, messages, &entryPoint); + } #ifdef ENABLE_HLSL case EShSourceHlsl: return new HlslParseContext(symbolTable, intermediate, parsingBuiltIns, version, profile, spvVersion, diff --git a/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp b/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp index 531aa159f..c4329e607 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp @@ -201,6 +201,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_AMD_texture_gather_bias_lod] = EBhDisable; extensionBehavior[E_GL_AMD_gpu_shader_int16] = EBhDisable; extensionBehavior[E_GL_AMD_shader_image_load_store_lod] = EBhDisable; + extensionBehavior[E_GL_AMD_shader_fragment_mask] = EBhDisable; #endif #ifdef NV_EXTENSIONS @@ -333,6 +334,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_AMD_texture_gather_bias_lod 1\n" "#define GL_AMD_gpu_shader_int16 1\n" "#define GL_AMD_shader_image_load_store_lod 1\n" + "#define GL_AMD_shader_fragment_mask 1\n" #endif #ifdef NV_EXTENSIONS diff --git a/3rdparty/glslang/glslang/MachineIndependent/Versions.h b/3rdparty/glslang/glslang/MachineIndependent/Versions.h index 78a9b2865..d5aca70ee 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Versions.h +++ b/3rdparty/glslang/glslang/MachineIndependent/Versions.h @@ -171,6 +171,7 @@ const char* const E_GL_AMD_gpu_shader_half_float = "GL_AMD_gpu_sh const char* const E_GL_AMD_texture_gather_bias_lod = "GL_AMD_texture_gather_bias_lod"; const char* const E_GL_AMD_gpu_shader_int16 = "GL_AMD_gpu_shader_int16"; const char* const E_GL_AMD_shader_image_load_store_lod = "GL_AMD_shader_image_load_store_lod"; +const char* const E_GL_AMD_shader_fragment_mask = "GL_AMD_shader_fragment_mask"; #endif #ifdef NV_EXTENSIONS diff --git a/3rdparty/glslang/glslang/MachineIndependent/glslang.y b/3rdparty/glslang/glslang/MachineIndependent/glslang.y index cd6df7b0d..a01193574 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/glslang.y +++ b/3rdparty/glslang/glslang/MachineIndependent/glslang.y @@ -860,6 +860,11 @@ function_header // Add the function as a prototype after parsing it (we do not support recursion) TFunction *function; TType type($1); + + // Potentially rename shader entry point function. No-op most of the time. + parseContext.renameShaderFunction($2.string); + + // Make the function function = new TFunction($2.string, type); $$ = function; } diff --git a/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp b/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp index c6bae9ffb..fabec4b68 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 3.0. */ /* 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-2013 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 @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.4" +#define YYBISON_VERSION "3.0" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -89,11 +89,11 @@ using namespace glslang; #line 91 "MachineIndependent/glslang_tab.cpp" /* yacc.c:339 */ -# 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 @@ -422,7 +422,7 @@ extern int yydebug; /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - +typedef union YYSTYPE YYSTYPE; union YYSTYPE { #line 68 "MachineIndependent/glslang.y" /* yacc.c:355 */ @@ -461,8 +461,6 @@ union YYSTYPE #line 463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ }; - -typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif @@ -490,7 +488,7 @@ int yyparse (glslang::TParseContext* pParseContext); extern int yylex(YYSTYPE*, TParseContext&); -#line 494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ +#line 492 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ #ifdef short # undef short @@ -547,30 +545,11 @@ 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__)) +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if (! defined __GNUC__ || __GNUC__ < 2 \ + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) +# define __attribute__(Spec) /* empty */ # endif #endif @@ -827,42 +806,42 @@ static const yytype_uint16 yyrline[] = 624, 632, 633, 633, 651, 652, 667, 671, 675, 679, 684, 688, 692, 696, 700, 704, 708, 715, 718, 729, 736, 741, 746, 754, 758, 762, 766, 771, 776, 785, - 785, 796, 800, 807, 814, 817, 824, 832, 852, 870, - 885, 908, 919, 929, 939, 949, 958, 961, 965, 969, - 974, 982, 987, 992, 997, 1002, 1011, 1022, 1049, 1058, - 1065, 1072, 1079, 1091, 1097, 1100, 1107, 1111, 1115, 1123, - 1132, 1135, 1146, 1149, 1152, 1156, 1160, 1164, 1171, 1175, - 1187, 1201, 1206, 1212, 1218, 1225, 1231, 1236, 1241, 1246, - 1254, 1258, 1262, 1266, 1270, 1274, 1280, 1289, 1292, 1300, - 1304, 1313, 1318, 1326, 1330, 1340, 1344, 1348, 1353, 1360, - 1364, 1369, 1374, 1379, 1386, 1393, 1397, 1402, 1407, 1412, - 1418, 1424, 1430, 1438, 1446, 1454, 1459, 1464, 1469, 1474, - 1479, 1484, 1490, 1496, 1502, 1510, 1518, 1526, 1532, 1538, - 1544, 1550, 1556, 1562, 1570, 1578, 1586, 1591, 1596, 1601, - 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1641, 1646, 1652, - 1658, 1664, 1670, 1676, 1682, 1688, 1694, 1700, 1706, 1712, - 1718, 1726, 1734, 1742, 1750, 1758, 1766, 1774, 1782, 1790, - 1798, 1806, 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, 2149, - 2154, 2159, 2164, 2169, 2174, 2179, 2184, 2189, 2194, 2199, - 2204, 2209, 2214, 2219, 2224, 2229, 2234, 2239, 2244, 2249, - 2254, 2259, 2264, 2269, 2274, 2279, 2284, 2289, 2294, 2299, - 2304, 2309, 2314, 2319, 2324, 2329, 2334, 2339, 2344, 2349, - 2354, 2359, 2365, 2371, 2377, 2383, 2389, 2395, 2401, 2406, - 2422, 2427, 2432, 2440, 2440, 2451, 2451, 2461, 2464, 2477, - 2495, 2519, 2523, 2529, 2534, 2545, 2548, 2554, 2563, 2566, - 2572, 2576, 2577, 2583, 2584, 2585, 2586, 2587, 2588, 2589, - 2593, 2594, 2598, 2594, 2610, 2611, 2615, 2615, 2622, 2622, - 2636, 2639, 2647, 2655, 2666, 2667, 2671, 2678, 2682, 2690, - 2694, 2707, 2707, 2727, 2730, 2736, 2748, 2760, 2760, 2775, - 2775, 2791, 2791, 2812, 2815, 2821, 2824, 2830, 2834, 2841, - 2846, 2851, 2858, 2861, 2870, 2874, 2883, 2886, 2889, 2897, - 2897 + 785, 796, 800, 807, 814, 817, 824, 832, 852, 875, + 890, 913, 924, 934, 944, 954, 963, 966, 970, 974, + 979, 987, 992, 997, 1002, 1007, 1016, 1027, 1054, 1063, + 1070, 1077, 1084, 1096, 1102, 1105, 1112, 1116, 1120, 1128, + 1137, 1140, 1151, 1154, 1157, 1161, 1165, 1169, 1176, 1180, + 1192, 1206, 1211, 1217, 1223, 1230, 1236, 1241, 1246, 1251, + 1259, 1263, 1267, 1271, 1275, 1279, 1285, 1294, 1297, 1305, + 1309, 1318, 1323, 1331, 1335, 1345, 1349, 1353, 1358, 1365, + 1369, 1374, 1379, 1384, 1391, 1398, 1402, 1407, 1412, 1417, + 1423, 1429, 1435, 1443, 1451, 1459, 1464, 1469, 1474, 1479, + 1484, 1489, 1495, 1501, 1507, 1515, 1523, 1531, 1537, 1543, + 1549, 1555, 1561, 1567, 1575, 1583, 1591, 1596, 1601, 1606, + 1611, 1616, 1621, 1626, 1631, 1636, 1641, 1646, 1651, 1657, + 1663, 1669, 1675, 1681, 1687, 1693, 1699, 1705, 1711, 1717, + 1723, 1731, 1739, 1747, 1755, 1763, 1771, 1779, 1787, 1795, + 1803, 1811, 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, 2149, 2154, + 2159, 2164, 2169, 2174, 2179, 2184, 2189, 2194, 2199, 2204, + 2209, 2214, 2219, 2224, 2229, 2234, 2239, 2244, 2249, 2254, + 2259, 2264, 2269, 2274, 2279, 2284, 2289, 2294, 2299, 2304, + 2309, 2314, 2319, 2324, 2329, 2334, 2339, 2344, 2349, 2354, + 2359, 2364, 2370, 2376, 2382, 2388, 2394, 2400, 2406, 2411, + 2427, 2432, 2437, 2445, 2445, 2456, 2456, 2466, 2469, 2482, + 2500, 2524, 2528, 2534, 2539, 2550, 2553, 2559, 2568, 2571, + 2577, 2581, 2582, 2588, 2589, 2590, 2591, 2592, 2593, 2594, + 2598, 2599, 2603, 2599, 2615, 2616, 2620, 2620, 2627, 2627, + 2641, 2644, 2652, 2660, 2671, 2672, 2676, 2683, 2687, 2695, + 2699, 2712, 2712, 2732, 2735, 2741, 2753, 2765, 2765, 2780, + 2780, 2796, 2796, 2817, 2820, 2826, 2829, 2835, 2839, 2846, + 2851, 2856, 2863, 2866, 2875, 2879, 2888, 2891, 2894, 2902, + 2902 }; #endif @@ -962,7 +941,7 @@ 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 @@ -2959,11 +2938,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 @@ -3020,7 +2999,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; @@ -3361,7 +3340,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 3365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3344 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 3: @@ -3369,7 +3348,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3373 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3352 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 4: @@ -3377,7 +3356,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 3381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 5: @@ -3386,7 +3365,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 3390 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 6: @@ -3395,7 +3374,7 @@ yyreduce: parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); } -#line 3399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 7: @@ -3404,7 +3383,7 @@ yyreduce: parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); } -#line 3408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3387 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 8: @@ -3415,7 +3394,7 @@ yyreduce: (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); #endif } -#line 3419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 9: @@ -3426,7 +3405,7 @@ yyreduce: (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); #endif } -#line 3430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3409 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 10: @@ -3434,7 +3413,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 3438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3417 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 11: @@ -3443,7 +3422,7 @@ yyreduce: parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } -#line 3447 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 12: @@ -3454,7 +3433,7 @@ yyreduce: (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); #endif } -#line 3458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3437 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 13: @@ -3462,7 +3441,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 3466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3445 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 14: @@ -3472,7 +3451,7 @@ yyreduce: if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 3476 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 15: @@ -3480,7 +3459,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 16: @@ -3488,7 +3467,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 3492 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 17: @@ -3496,7 +3475,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3500 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 18: @@ -3504,7 +3483,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 3508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3487 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 19: @@ -3514,7 +3493,7 @@ yyreduce: parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 3518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3497 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 20: @@ -3524,7 +3503,7 @@ yyreduce: parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 3528 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 21: @@ -3533,7 +3512,7 @@ yyreduce: parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3537 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 22: @@ -3542,7 +3521,7 @@ yyreduce: (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 3546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 23: @@ -3550,7 +3529,7 @@ yyreduce: { (yyval.interm) = (yyvsp[0].interm); } -#line 3554 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3533 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 24: @@ -3559,7 +3538,7 @@ yyreduce: (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 3563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3542 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 25: @@ -3568,7 +3547,7 @@ yyreduce: (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 3572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 26: @@ -3576,7 +3555,7 @@ yyreduce: { (yyval.interm) = (yyvsp[-1].interm); } -#line 3580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 27: @@ -3584,7 +3563,7 @@ yyreduce: { (yyval.interm) = (yyvsp[0].interm); } -#line 3588 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 28: @@ -3596,7 +3575,7 @@ yyreduce: (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 3600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 29: @@ -3608,7 +3587,7 @@ yyreduce: (yyval.interm).function = (yyvsp[-2].interm).function; (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } -#line 3612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 30: @@ -3616,7 +3595,7 @@ yyreduce: { (yyval.interm) = (yyvsp[-1].interm); } -#line 3620 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3599 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 31: @@ -3626,7 +3605,7 @@ yyreduce: (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 3630 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 32: @@ -3658,7 +3637,7 @@ yyreduce: (yyval.interm).function = new TFunction(&empty, TType(EbtVoid), EOpNull); } } -#line 3662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 33: @@ -3669,7 +3648,7 @@ yyreduce: if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 3673 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 34: @@ -3678,7 +3657,7 @@ yyreduce: parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 3682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 35: @@ -3687,7 +3666,7 @@ yyreduce: parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 3691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 36: @@ -3708,38 +3687,38 @@ yyreduce: (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 3712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 37: #line 472 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 3718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 38: #line 473 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 3724 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 39: #line 474 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 3730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 40: #line 475 "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 3737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 41: #line 481 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 42: @@ -3749,7 +3728,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 43: @@ -3759,7 +3738,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 44: @@ -3770,13 +3749,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 45: #line 501 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 46: @@ -3786,7 +3765,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 47: @@ -3796,13 +3775,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3800 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 48: #line 515 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3785 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 49: @@ -3813,7 +3792,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 50: @@ -3824,13 +3803,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3807 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 51: #line 531 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 52: @@ -3840,7 +3819,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 3844 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 53: @@ -3850,7 +3829,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 3854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 54: @@ -3860,7 +3839,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 3864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 55: @@ -3870,13 +3849,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 3874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 56: #line 555 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3880 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3859 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 57: @@ -3889,7 +3868,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 3893 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 58: @@ -3902,13 +3881,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 3906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 59: #line 575 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3912 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 60: @@ -3919,13 +3898,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3923 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 61: #line 585 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 62: @@ -3936,13 +3915,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3919 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 63: #line 595 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 64: @@ -3953,13 +3932,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 65: #line 605 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 66: @@ -3969,13 +3948,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 3973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 67: #line 614 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 68: @@ -3985,13 +3964,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 3989 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 69: #line 623 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3974 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 70: @@ -4001,13 +3980,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3984 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 71: #line 632 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 72: @@ -4015,7 +3994,7 @@ yyreduce: { ++parseContext.controlFlowNestingLevel; } -#line 4019 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 73: @@ -4032,13 +4011,13 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 4036 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 74: #line 651 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4042 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 75: @@ -4055,7 +4034,7 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 4059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 76: @@ -4064,7 +4043,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 4068 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 77: @@ -4073,7 +4052,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 4077 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 78: @@ -4082,7 +4061,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 4086 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 79: @@ -4092,7 +4071,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 4096 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 80: @@ -4101,7 +4080,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 4105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4084 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 81: @@ -4110,7 +4089,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 4114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 82: @@ -4119,7 +4098,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 4123 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 83: @@ -4128,7 +4107,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 4132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 84: @@ -4137,7 +4116,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 4141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 85: @@ -4146,7 +4125,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 4150 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4129 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 86: @@ -4155,7 +4134,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 4159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 87: @@ -4163,7 +4142,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4146 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 88: @@ -4176,7 +4155,7 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 4180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 89: @@ -4185,7 +4164,7 @@ yyreduce: parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4189 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 90: @@ -4195,7 +4174,7 @@ yyreduce: (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 4199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 91: @@ -4205,7 +4184,7 @@ yyreduce: (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 4209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 92: @@ -4218,7 +4197,7 @@ yyreduce: parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 4222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4201 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 93: @@ -4227,7 +4206,7 @@ yyreduce: parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 4231 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 94: @@ -4236,7 +4215,7 @@ yyreduce: parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 4240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 95: @@ -4245,7 +4224,7 @@ yyreduce: parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 4249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4228 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 96: @@ -4255,7 +4234,7 @@ yyreduce: parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 4259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4238 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 97: @@ -4265,7 +4244,7 @@ yyreduce: parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 4269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 98: @@ -4276,13 +4255,13 @@ yyreduce: parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 4280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 99: #line 785 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 4286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 100: @@ -4296,7 +4275,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 4300 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 101: @@ -4305,7 +4284,7 @@ yyreduce: (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 4309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 102: @@ -4314,7 +4293,7 @@ yyreduce: (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 4318 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4297 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 103: @@ -4323,7 +4302,7 @@ yyreduce: (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 104: @@ -4331,7 +4310,7 @@ yyreduce: { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 4335 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4314 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 105: @@ -4339,7 +4318,7 @@ yyreduce: { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 4343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 106: @@ -4352,7 +4331,7 @@ yyreduce: else delete (yyvsp[0].interm).param.type; } -#line 4356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4335 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 107: @@ -4374,7 +4353,7 @@ yyreduce: (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 4378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 108: @@ -4390,14 +4369,19 @@ yyreduce: // Add the function as a prototype after parsing it (we do not support recursion) TFunction *function; TType type((yyvsp[-2].interm.type)); + + // Potentially rename shader entry point function. No-op most of the time. + parseContext.renameShaderFunction((yyvsp[-1].lex).string); + + // Make the function function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 4397 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 109: -#line 870 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 875 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -4413,11 +4397,11 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 4417 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 110: -#line 885 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 890 "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"); @@ -4435,11 +4419,11 @@ yyreduce: (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 4439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4423 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 111: -#line 908 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 913 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -4451,11 +4435,11 @@ yyreduce: parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 4455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 112: -#line 919 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 924 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); @@ -4463,11 +4447,11 @@ yyreduce: 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()); } -#line 4467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 113: -#line 929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 934 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -4478,11 +4462,11 @@ yyreduce: parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 4482 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 114: -#line 939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 944 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); @@ -4490,118 +4474,118 @@ yyreduce: 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()); } -#line 4494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 115: -#line 949 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 954 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 4505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 116: -#line 958 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 963 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); } -#line 4513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4497 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 117: -#line 961 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 966 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 4522 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 118: -#line 965 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 970 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 4531 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 119: -#line 969 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 974 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-5].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 4541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 120: -#line 974 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 979 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-4].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 4551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 121: -#line 982 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 987 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[0].interm.type); (yyval.interm).intermNode = 0; parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 4561 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 122: -#line 987 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 992 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-1].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 4571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4555 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 123: -#line 992 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 997 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-2].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 4581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 124: -#line 997 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1002 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 4591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4575 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 125: -#line 1002 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1007 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-3].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 4601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4585 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 126: -#line 1011 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1016 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); @@ -4613,11 +4597,11 @@ yyreduce: parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 4617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 127: -#line 1022 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1027 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { 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)); @@ -4642,22 +4626,22 @@ yyreduce: (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 4646 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4630 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 128: -#line 1049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1054 "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 4657 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 129: -#line 1058 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1063 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); @@ -4665,11 +4649,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 4669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 130: -#line 1065 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1070 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); @@ -4677,11 +4661,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 4681 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 131: -#line 1072 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1077 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "noperspective"); @@ -4689,11 +4673,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 4693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4677 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 132: -#line 1079 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1084 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); @@ -4703,84 +4687,84 @@ yyreduce: (yyval.interm.type).qualifier.explicitInterp = true; #endif } -#line 4707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 133: -#line 1091 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1096 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 4715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 134: -#line 1097 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1102 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4723 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 135: -#line 1100 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1105 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 4733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 136: -#line 1107 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1112 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 4742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 137: -#line 1111 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1116 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 4751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4735 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 138: -#line 1115 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1120 "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 4761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4745 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 139: -#line 1123 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1128 "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 4772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 140: -#line 1132 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1137 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 141: -#line 1135 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1140 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -4789,72 +4773,72 @@ yyreduce: (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 4793 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4777 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 142: -#line 1146 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1151 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4785 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 143: -#line 1149 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1154 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4793 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 144: -#line 1152 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1157 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 145: -#line 1156 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1161 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4827 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4811 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 146: -#line 1160 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1165 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 147: -#line 1164 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1169 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4845 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 148: -#line 1171 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1176 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 4854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 149: -#line 1175 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1180 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -4867,11 +4851,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 4871 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4855 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 150: -#line 1187 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1192 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -4886,43 +4870,43 @@ yyreduce: else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 4890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 151: -#line 1201 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1206 "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 4900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 152: -#line 1206 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1211 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 4911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 153: -#line 1212 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1217 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 4922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 154: -#line 1218 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1223 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); @@ -4930,52 +4914,52 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 4934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 155: -#line 1225 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1230 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 4945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 156: -#line 1231 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1236 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 4955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4939 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 157: -#line 1236 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1241 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 4965 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4949 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 158: -#line 1241 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1246 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 4975 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 159: -#line 1246 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1251 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -4984,126 +4968,126 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 4988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 160: -#line 1254 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 4997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 161: -#line 1258 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1263 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 5006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 162: -#line 1262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1267 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 5015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 163: -#line 1266 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1271 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 5024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 164: -#line 1270 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1275 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 5033 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 165: -#line 1274 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1279 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 5044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 166: -#line 1280 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1285 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 5055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 167: -#line 1289 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1294 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // TODO } -#line 5063 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 168: -#line 1292 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1297 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // 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 5073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 169: -#line 1300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1305 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); } -#line 5082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 170: -#line 1304 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1309 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayDimCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes, 0); (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 5093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5077 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 171: -#line 1313 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1318 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 5103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 172: -#line 1318 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1323 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -5112,20 +5096,20 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size); (yyval.interm).arraySizes->addInnerSize(size); } -#line 5116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 173: -#line 1326 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1331 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 5125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5109 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 174: -#line 1330 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1335 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-3].interm); @@ -5133,39 +5117,39 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size); (yyval.interm).arraySizes->addInnerSize(size); } -#line 5137 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 175: -#line 1340 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1345 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 5146 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 176: -#line 1344 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1349 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 5155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 177: -#line 1348 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1353 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.doubleCheck((yyvsp[0].lex).loc, "double"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 5165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 178: -#line 1353 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1358 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float", parseContext.symbolTable.atBuiltInLevel()); @@ -5173,50 +5157,50 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; #endif } -#line 5177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 179: -#line 1360 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1365 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 5186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5170 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 180: -#line 1364 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1369 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 5196 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 181: -#line 1369 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1374 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 5206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 182: -#line 1374 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 5216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5200 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 183: -#line 1379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1384 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer", parseContext.symbolTable.atBuiltInLevel()); @@ -5224,11 +5208,11 @@ yyreduce: (yyval.interm.type).basicType = EbtInt16; #endif } -#line 5228 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5212 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 184: -#line 1386 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1391 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); @@ -5236,83 +5220,83 @@ yyreduce: (yyval.interm.type).basicType = EbtUint16; #endif } -#line 5240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 185: -#line 1393 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1398 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 5249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5233 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 186: -#line 1397 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(2); - } -#line 5259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 187: #line 1402 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(3); + (yyval.interm.type).setVector(2); } -#line 5269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 188: + case 187: #line 1407 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(3); + } +#line 5253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 188: +#line 1412 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 5279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5263 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 189: -#line 1412 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1417 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { 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); } -#line 5290 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5274 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 190: -#line 1418 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1423 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { 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); } -#line 5301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5285 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 191: -#line 1424 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1429 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { 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(4); } -#line 5312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 192: -#line 1430 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1435 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); @@ -5321,11 +5305,11 @@ yyreduce: (yyval.interm.type).setVector(2); #endif } -#line 5325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 193: -#line 1438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1443 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); @@ -5334,11 +5318,11 @@ yyreduce: (yyval.interm.type).setVector(3); #endif } -#line 5338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 194: -#line 1446 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1451 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); @@ -5347,104 +5331,104 @@ yyreduce: (yyval.interm.type).setVector(4); #endif } -#line 5351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5335 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 195: -#line 1454 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(2); - } -#line 5361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 196: #line 1459 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(2); + } +#line 5345 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 196: +#line 1464 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 5371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 197: -#line 1464 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1469 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 5381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 198: -#line 1469 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(2); - } -#line 5391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 199: #line 1474 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(2); + } +#line 5375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 199: +#line 1479 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 5401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5385 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 200: -#line 1479 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1484 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 5411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 201: -#line 1484 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1489 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 5422 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 202: -#line 1490 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1495 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 5433 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5417 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 203: -#line 1496 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1501 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 5444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 204: -#line 1502 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1507 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); @@ -5453,11 +5437,11 @@ yyreduce: (yyval.interm.type).setVector(2); #endif } -#line 5457 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 205: -#line 1510 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1515 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); @@ -5466,11 +5450,11 @@ yyreduce: (yyval.interm.type).setVector(3); #endif } -#line 5470 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 206: -#line 1518 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1523 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); @@ -5479,77 +5463,77 @@ yyreduce: (yyval.interm.type).setVector(4); #endif } -#line 5483 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 207: -#line 1526 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1531 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 5494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 208: -#line 1532 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1537 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 5505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 209: -#line 1538 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1543 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 5516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5500 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 210: -#line 1544 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1549 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 5527 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 211: -#line 1550 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1555 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 5538 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5522 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 212: -#line 1556 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1561 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 5549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5533 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 213: -#line 1562 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1567 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); @@ -5558,11 +5542,11 @@ yyreduce: (yyval.interm.type).setVector(2); #endif } -#line 5562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 214: -#line 1570 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1575 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); @@ -5571,11 +5555,11 @@ yyreduce: (yyval.interm.type).setVector(3); #endif } -#line 5575 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 215: -#line 1578 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1583 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); @@ -5584,263 +5568,263 @@ yyreduce: (yyval.interm.type).setVector(4); #endif } -#line 5588 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 216: -#line 1586 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); - } -#line 5598 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 217: #line 1591 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).setMatrix(2, 2); } -#line 5608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5582 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 218: + case 217: #line 1596 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).setMatrix(3, 3); } -#line 5618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 219: + case 218: #line 1601 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).setMatrix(4, 4); } -#line 5628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 220: + case 219: #line 1606 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 3); + (yyval.interm.type).setMatrix(2, 2); } -#line 5638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 221: + case 220: #line 1611 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 4); + (yyval.interm.type).setMatrix(2, 3); } -#line 5648 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 222: + case 221: #line 1616 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 2); + (yyval.interm.type).setMatrix(2, 4); } -#line 5658 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 223: + case 222: #line 1621 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).setMatrix(3, 2); } -#line 5668 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5642 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 224: + case 223: #line 1626 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 4); + (yyval.interm.type).setMatrix(3, 3); } -#line 5678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 225: + case 224: #line 1631 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 2); + (yyval.interm.type).setMatrix(3, 4); } -#line 5688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 226: + case 225: #line 1636 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 2); + } +#line 5672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 226: +#line 1641 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 5698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 227: -#line 1641 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 5708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5692 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 228: -#line 1646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1651 "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(2, 2); } -#line 5719 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 229: -#line 1652 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1657 "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(3, 3); } -#line 5730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5714 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 230: -#line 1658 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1663 "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, 4); } -#line 5741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 231: -#line 1664 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1669 "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(2, 2); } -#line 5752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 232: -#line 1670 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1675 "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(2, 3); } -#line 5763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 233: -#line 1676 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1681 "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(2, 4); } -#line 5774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 234: -#line 1682 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1687 "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(3, 2); } -#line 5785 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 235: -#line 1688 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1693 "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(3, 3); } -#line 5796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 236: -#line 1694 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1699 "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(3, 4); } -#line 5807 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5791 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 237: -#line 1700 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1705 "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 5818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 238: -#line 1706 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1711 "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 5829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 239: -#line 1712 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1717 "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, 4); } -#line 5840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5824 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 240: -#line 1718 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1723 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); @@ -5849,11 +5833,11 @@ yyreduce: (yyval.interm.type).setMatrix(2, 2); #endif } -#line 5853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5837 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 241: -#line 1726 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1731 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); @@ -5862,11 +5846,11 @@ yyreduce: (yyval.interm.type).setMatrix(3, 3); #endif } -#line 5866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 242: -#line 1734 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1739 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); @@ -5875,11 +5859,11 @@ yyreduce: (yyval.interm.type).setMatrix(4, 4); #endif } -#line 5879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 243: -#line 1742 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1747 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); @@ -5888,11 +5872,11 @@ yyreduce: (yyval.interm.type).setMatrix(2, 2); #endif } -#line 5892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5876 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 244: -#line 1750 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1755 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); @@ -5901,11 +5885,11 @@ yyreduce: (yyval.interm.type).setMatrix(2, 3); #endif } -#line 5905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5889 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 245: -#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); @@ -5914,11 +5898,11 @@ yyreduce: (yyval.interm.type).setMatrix(2, 4); #endif } -#line 5918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 246: -#line 1766 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1771 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); @@ -5927,11 +5911,11 @@ yyreduce: (yyval.interm.type).setMatrix(3, 2); #endif } -#line 5931 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 247: -#line 1774 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1779 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); @@ -5940,11 +5924,11 @@ yyreduce: (yyval.interm.type).setMatrix(3, 3); #endif } -#line 5944 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 248: -#line 1782 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1787 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); @@ -5953,11 +5937,11 @@ yyreduce: (yyval.interm.type).setMatrix(3, 4); #endif } -#line 5957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 249: -#line 1790 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1795 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); @@ -5966,11 +5950,11 @@ yyreduce: (yyval.interm.type).setMatrix(4, 2); #endif } -#line 5970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5954 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 250: -#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1803 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); @@ -5979,11 +5963,11 @@ yyreduce: (yyval.interm.type).setMatrix(4, 3); #endif } -#line 5983 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5967 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 251: -#line 1806 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1811 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); @@ -5992,1188 +5976,1188 @@ yyreduce: (yyval.interm.type).setMatrix(4, 4); #endif } -#line 5996 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5980 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 252: -#line 1814 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 6006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 253: -#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 6016 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6000 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 254: -#line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1829 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 6026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6010 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 255: -#line 1829 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1834 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 6036 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6020 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 256: -#line 1834 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1839 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 6046 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6030 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 257: -#line 1839 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1844 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 6056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 258: -#line 1844 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 6066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 259: -#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1854 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 6076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 260: -#line 1854 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1859 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 6086 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6070 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 261: -#line 1859 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1864 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 6096 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6080 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 262: -#line 1864 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1869 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 6106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 263: -#line 1869 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1874 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 6116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 264: -#line 1874 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 6126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6110 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 265: -#line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 6136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 266: -#line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1889 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 6146 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 267: -#line 1889 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1894 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 6156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 268: -#line 1894 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1899 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 6166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6150 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 269: -#line 1899 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1904 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 6176 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6160 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 270: -#line 1904 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 6186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6170 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 271: -#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 6196 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 272: -#line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1919 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 6206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 273: -#line 1919 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1924 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 6216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6200 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 274: -#line 1924 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 6226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 275: -#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1934 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 6236 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 276: -#line 1934 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 6246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 277: -#line 1939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1944 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 6256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 278: -#line 1944 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1949 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 6266 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 279: -#line 1949 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1954 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 6276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 280: -#line 1954 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1959 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 6286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6270 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 281: -#line 1959 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1964 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 6296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 282: -#line 1964 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1969 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 6306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6290 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 283: -#line 1969 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1974 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 6316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6300 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 284: -#line 1974 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1979 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 6326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6310 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 285: -#line 1979 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1984 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 6336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 286: -#line 1984 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1989 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 6346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6330 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 287: -#line 1989 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1994 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 6356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6340 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 288: -#line 1994 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1999 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 6366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6350 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 289: -#line 1999 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2004 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 6376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 290: -#line 2004 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2009 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 6386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 291: -#line 2009 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2014 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 6396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 292: -#line 2014 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2019 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 6406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6390 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 293: -#line 2019 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2024 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 6416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 294: -#line 2024 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2029 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 6426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6410 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 295: -#line 2029 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2034 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 6436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6420 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 296: -#line 2034 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2039 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 6446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 297: -#line 2039 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2044 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 6456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6440 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 298: -#line 2044 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 6466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6450 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 299: -#line 2049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2054 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 6476 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 300: -#line 2054 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2059 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 6486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6470 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 301: -#line 2059 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2064 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 6496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 302: -#line 2064 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2069 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 6506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6490 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 303: -#line 2069 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2074 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 6516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6500 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 304: -#line 2074 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2079 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 6526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6510 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 305: -#line 2079 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2084 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 6536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 306: -#line 2084 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2089 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 6546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6530 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 307: -#line 2089 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2094 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 6556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 308: -#line 2094 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2099 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 6566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6550 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 309: -#line 2099 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2104 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 6576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6560 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 310: -#line 2104 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2109 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 6586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 311: -#line 2109 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2114 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 6596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 312: -#line 2114 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2119 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 6606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 313: -#line 2119 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2124 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 6616 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 314: -#line 2124 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2129 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 6626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6610 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 315: -#line 2129 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2134 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 6636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6620 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 316: -#line 2134 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2139 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 6646 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6630 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 317: -#line 2139 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2144 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 6656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6640 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 318: -#line 2144 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2149 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 6666 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 319: -#line 2149 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2154 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 6676 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 320: -#line 2154 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2159 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 6686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 321: -#line 2159 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2164 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 6696 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 322: -#line 2164 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2169 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 6706 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 323: -#line 2169 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2174 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 6716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 324: -#line 2174 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2179 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 6726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 325: -#line 2179 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2184 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 6736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 326: -#line 2184 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2189 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 6746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 327: -#line 2189 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2194 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 6756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6740 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 328: -#line 2194 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2199 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 6766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6750 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 329: -#line 2199 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2204 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 6776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 330: -#line 2204 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2209 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 6786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 331: -#line 2209 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2214 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 6796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 332: -#line 2214 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2219 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 6806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 333: -#line 2219 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2224 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 6816 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6800 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 334: -#line 2224 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2229 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 6826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 335: -#line 2229 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2234 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 6836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 336: -#line 2234 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2239 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 6846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 337: -#line 2239 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2244 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 6856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 338: -#line 2244 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2249 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 6866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 339: -#line 2249 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2254 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 6876 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 340: -#line 2254 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 6886 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6870 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 341: -#line 2259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2264 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 6896 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6880 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 342: -#line 2264 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2269 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 6906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 343: -#line 2269 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2274 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 6916 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 344: -#line 2274 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2279 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 6926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6910 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 345: -#line 2279 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2284 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 6936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6920 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 346: -#line 2284 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2289 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 6946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 347: -#line 2289 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2294 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 6956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 348: -#line 2294 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2299 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 6966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 349: -#line 2299 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2304 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 6976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6960 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 350: -#line 2304 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2309 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 6986 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 351: -#line 2309 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2314 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 6996 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6980 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 352: -#line 2314 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2319 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 7006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 353: -#line 2319 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2324 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 7016 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7000 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 354: -#line 2324 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2329 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 7026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7010 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 355: -#line 2329 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2334 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 7036 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7020 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 356: -#line 2334 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2339 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 7046 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7030 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 357: -#line 2339 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2344 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 7056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 358: -#line 2344 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2349 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 7066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 359: -#line 2349 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2354 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 7076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 360: -#line 2354 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2359 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 7086 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7070 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 361: -#line 2359 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2364 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 7097 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 362: -#line 2365 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2370 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 7108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 363: -#line 2371 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2376 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 7119 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 364: -#line 2377 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2382 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 7130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 365: -#line 2383 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 7141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 366: -#line 2389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2394 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 7152 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 367: -#line 2395 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2400 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 7163 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 368: -#line 2401 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2406 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 7173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 369: -#line 2406 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2411 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // This is for user defined type names. The lexical phase looked up the @@ -7187,47 +7171,47 @@ yyreduce: } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 7191 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 370: -#line 2422 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2427 "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 7201 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7185 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 371: -#line 2427 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2432 "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 7211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7195 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 372: -#line 2432 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2437 "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 7221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7205 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 373: -#line 2440 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2445 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 7227 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 374: -#line 2440 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2445 "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); @@ -7239,17 +7223,17 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 7243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7227 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 375: -#line 2451 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2456 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 7249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7233 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 376: -#line 2451 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2456 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -7257,19 +7241,19 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 7261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7245 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 377: -#line 2461 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2466 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 7269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 378: -#line 2464 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2469 "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) { @@ -7280,11 +7264,11 @@ yyreduce: (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 7284 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 379: -#line 2477 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2482 "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"); @@ -7303,11 +7287,11 @@ yyreduce: (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type)); } } -#line 7307 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 380: -#line 2495 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2500 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalQualifierFixCheck((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier); if ((yyvsp[-2].interm.type).arraySizes) { @@ -7329,38 +7313,38 @@ yyreduce: (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type)); } } -#line 7333 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7317 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 381: -#line 2519 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2524 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 7342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 382: -#line 2523 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2528 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 7350 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7334 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 383: -#line 2529 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2534 "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 7360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7344 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 384: -#line 2534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2539 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayDimCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes, 0); @@ -7369,219 +7353,219 @@ yyreduce: (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->newArraySizes(*(yyvsp[0].interm).arraySizes); } -#line 7373 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 385: -#line 2545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2550 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 7381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 386: -#line 2548 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2553 "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 7392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 387: -#line 2554 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2559 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 7403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7387 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 388: -#line 2563 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2568 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 7411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 389: -#line 2566 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 7419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 390: -#line 2572 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2577 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7425 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7409 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 391: -#line 2576 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2581 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7415 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 392: -#line 2577 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2582 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7437 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 393: -#line 2583 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2588 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7443 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7427 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 394: -#line 2584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2589 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7433 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 395: -#line 2585 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2590 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 396: -#line 2586 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2591 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7445 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 397: -#line 2587 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2592 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 398: -#line 2588 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2593 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7473 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7457 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 399: -#line 2589 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2594 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 400: -#line 2593 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 7485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 401: -#line 2594 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2599 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 7494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 402: -#line 2598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2603 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 7503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7487 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 403: -#line 2602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2607 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 7513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7497 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 404: -#line 2610 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2615 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 405: -#line 2611 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2616 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7509 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 406: -#line 2615 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2620 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.controlFlowNestingLevel; } -#line 7533 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7517 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 407: -#line 2618 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2623 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7542 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 408: -#line 2622 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2627 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 7552 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 409: -#line 2627 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2632 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 410: -#line 2636 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2641 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 7571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7555 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 411: -#line 2639 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2644 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 7581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 412: -#line 2647 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2652 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (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 || @@ -7590,11 +7574,11 @@ yyreduce: (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 7594 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 413: -#line 2655 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2660 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -7603,59 +7587,59 @@ yyreduce: } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 7607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 414: -#line 2666 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2671 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 7613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 415: -#line 2667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2672 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 7619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 416: -#line 2671 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2676 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 7628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 417: -#line 2678 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 7637 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7621 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 418: -#line 2682 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2687 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 7646 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7630 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 419: -#line 2690 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2695 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 7655 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 420: -#line 2694 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2699 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -7666,11 +7650,11 @@ yyreduce: else (yyval.interm.intermTypedNode) = 0; } -#line 7670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7654 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 421: -#line 2707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2712 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -7679,11 +7663,11 @@ yyreduce: parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 7683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7667 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 422: -#line 2715 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2720 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -7693,27 +7677,27 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 7697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7681 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 423: -#line 2727 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2732 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 7705 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 424: -#line 2730 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2735 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7713 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 425: -#line 2736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2741 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -7726,11 +7710,11 @@ yyreduce: (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 7730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7714 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 426: -#line 2748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2753 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -7740,11 +7724,11 @@ yyreduce: else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 7744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 427: -#line 2760 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2765 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -7753,11 +7737,11 @@ yyreduce: ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 7757 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 428: -#line 2768 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2773 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { 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); @@ -7765,21 +7749,21 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 7769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 429: -#line 2775 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2780 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 7779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 430: -#line 2780 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2785 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -7791,22 +7775,22 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 7795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 431: -#line 2791 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2796 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 7806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 432: -#line 2797 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2802 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -7819,81 +7803,81 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 7823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7807 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 433: -#line 2812 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2817 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 7815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 434: +#line 2820 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 7823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 435: +#line 2826 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + } #line 7831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 434: -#line 2815 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 436: +#line 2829 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermTypedNode) = 0; } #line 7839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 435: -#line 2821 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - } -#line 7847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 436: -#line 2824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = 0; - } -#line 7855 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - case 437: -#line 2830 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2835 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 7864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 438: -#line 2834 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2839 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 7873 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7857 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 439: -#line 2841 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2846 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 7883 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7867 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 440: -#line 2846 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2851 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 7893 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7877 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 441: -#line 2851 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2856 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -7901,83 +7885,83 @@ yyreduce: if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 7905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7889 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 442: -#line 2858 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2863 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 7913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 443: -#line 2861 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2866 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 7922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 444: -#line 2870 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2875 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 7931 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 445: -#line 2874 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2879 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 7942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 446: -#line 2883 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2888 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 447: -#line 2886 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2891 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 448: -#line 2889 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2894 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 7968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 449: -#line 2897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2902 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (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); } -#line 7977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7961 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 450: -#line 2901 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2906 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -7993,11 +7977,11 @@ yyreduce: (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); (yyval.interm.intermNode)->getAsAggregate()->addToPragmaTable(parseContext.contextPragma.pragmaTable); } -#line 7997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; -#line 8001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -8225,5 +8209,5 @@ yyreturn: #endif return yyresult; } -#line 2918 "MachineIndependent/glslang.y" /* yacc.c:1906 */ +#line 2923 "MachineIndependent/glslang.y" /* yacc.c:1906 */ diff --git a/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h b/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h index b8e78d6c9..b2e00632d 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 3.0. */ /* 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-2013 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 @@ -345,7 +345,7 @@ extern int yydebug; /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - +typedef union YYSTYPE YYSTYPE; union YYSTYPE { #line 68 "MachineIndependent/glslang.y" /* yacc.c:1909 */ @@ -384,8 +384,6 @@ union YYSTYPE #line 386 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ }; - -typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif diff --git a/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp b/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp index 30240fcc3..ae68216ae 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp @@ -431,10 +431,13 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpMaxInvocationsExclusiveScanNonUniform: out.debug << "maxInvocationsExclusiveScanNonUniform"; break; case EOpAddInvocationsExclusiveScanNonUniform: out.debug << "addInvocationsExclusiveScanNonUniform"; break; - case EOpMbcnt: out.debug << "mbcnt"; break; + case EOpMbcnt: out.debug << "mbcnt"; break; - case EOpCubeFaceIndex: out.debug << "cubeFaceIndex"; break; - case EOpCubeFaceCoord: out.debug << "cubeFaceCoord"; break; + case EOpCubeFaceIndex: out.debug << "cubeFaceIndex"; break; + case EOpCubeFaceCoord: out.debug << "cubeFaceCoord"; break; + + case EOpFragmentMaskFetch: out.debug << "fragmentMaskFetchAMD"; break; + case EOpFragmentFetch: out.debug << "fragmentFetchAMD"; break; case EOpConvBoolToFloat16: out.debug << "Convert bool to float16"; break; case EOpConvIntToFloat16: out.debug << "Convert int to float16"; break; diff --git a/3rdparty/glslang/gtests/Hlsl.FromFile.cpp b/3rdparty/glslang/gtests/Hlsl.FromFile.cpp index 4dfe7d797..14a7890a2 100644 --- a/3rdparty/glslang/gtests/Hlsl.FromFile.cpp +++ b/3rdparty/glslang/gtests/Hlsl.FromFile.cpp @@ -164,6 +164,8 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.hull.1.tesc", "main"}, {"hlsl.hull.2.tesc", "main"}, {"hlsl.hull.3.tesc", "main"}, + {"hlsl.hull.4.tesc", "main"}, + {"hlsl.hull.5.tesc", "main"}, {"hlsl.hull.void.tesc", "main"}, {"hlsl.hull.ctrlpt-1.tesc", "main"}, {"hlsl.hull.ctrlpt-2.tesc", "main"}, diff --git a/3rdparty/glslang/gtests/Spv.FromFile.cpp b/3rdparty/glslang/gtests/Spv.FromFile.cpp index ef2ef342f..4cfcf48bc 100644 --- a/3rdparty/glslang/gtests/Spv.FromFile.cpp +++ b/3rdparty/glslang/gtests/Spv.FromFile.cpp @@ -409,6 +409,7 @@ INSTANTIATE_TEST_CASE_P( "spv.imageLoadStoreLod.frag", "spv.int16.frag", "spv.shaderBallotAMD.comp", + "spv.shaderFragMaskAMD.frag", "spv.textureGatherBiasLod.frag" })), FileNameAsCustomTestSuffix diff --git a/3rdparty/glslang/hlsl/hlslGrammar.cpp b/3rdparty/glslang/hlsl/hlslGrammar.cpp index 2f687c5a9..fcdeff403 100755 --- a/3rdparty/glslang/hlsl/hlslGrammar.cpp +++ b/3rdparty/glslang/hlsl/hlslGrammar.cpp @@ -387,7 +387,7 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList) HlslToken idToken; TIntermAggregate* initializers = nullptr; while (acceptIdentifier(idToken)) { - const TString *fullName = idToken.string; + TString *fullName = idToken.string; if (parseContext.symbolTable.atGlobalLevel()) parseContext.getFullNamespaceName(fullName); if (peekTokenClass(EHTokLeftParen)) { @@ -2263,12 +2263,12 @@ bool HlslGrammar::acceptStructDeclarationList(TTypeList*& typeList, TIntermNode* // // Expects type to have EvqGlobal for a static member and // EvqTemporary for non-static member. -bool HlslGrammar::acceptMemberFunctionDefinition(TIntermNode*& nodeList, const TType& type, const TString& memberName, +bool HlslGrammar::acceptMemberFunctionDefinition(TIntermNode*& nodeList, const TType& type, TString& memberName, TFunctionDeclarator& declarator) { bool accepted = false; - const TString* functionName = &memberName; + TString* functionName = &memberName; parseContext.getFullNamespaceName(functionName); declarator.function = new TFunction(functionName, type); if (type.getQualifier().storage == EvqTemporary) diff --git a/3rdparty/glslang/hlsl/hlslGrammar.h b/3rdparty/glslang/hlsl/hlslGrammar.h index ded8e9669..2db0754c5 100755 --- a/3rdparty/glslang/hlsl/hlslGrammar.h +++ b/3rdparty/glslang/hlsl/hlslGrammar.h @@ -91,7 +91,7 @@ namespace glslang { bool acceptConstantBufferType(TType&); bool acceptStruct(TType&, TIntermNode*& nodeList); bool acceptStructDeclarationList(TTypeList*&, TIntermNode*& nodeList, TVector&); - bool acceptMemberFunctionDefinition(TIntermNode*& nodeList, const TType&, const TString& memberName, + bool acceptMemberFunctionDefinition(TIntermNode*& nodeList, const TType&, TString& memberName, TFunctionDeclarator&); bool acceptFunctionParameters(TFunction&); bool acceptParameterDeclaration(TFunction&); diff --git a/3rdparty/glslang/hlsl/hlslParseHelper.cpp b/3rdparty/glslang/hlsl/hlslParseHelper.cpp index 346a1170d..e6b98615f 100755 --- a/3rdparty/glslang/hlsl/hlslParseHelper.cpp +++ b/3rdparty/glslang/hlsl/hlslParseHelper.cpp @@ -58,11 +58,10 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int const TString sourceEntryPointName, bool forwardCompatible, EShMessages messages) : TParseContextBase(symbolTable, interm, parsingBuiltins, version, profile, spvVersion, language, infoSink, - forwardCompatible, messages), + forwardCompatible, messages, &sourceEntryPointName), annotationNestingLevel(0), inputPatch(nullptr), nextInLocation(0), nextOutLocation(0), - sourceEntryPointName(sourceEntryPointName), entryPointFunction(nullptr), entryPointFunctionBody(nullptr), gsStreamOutput(nullptr), @@ -860,10 +859,8 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, bool flattened = false; int indexValue = 0; - if (index->getQualifier().storage == EvqConst) { + if (index->getQualifier().isFrontEndConstant()) indexValue = index->getAsConstantUnion()->getConstArray()[0].getIConst(); - checkIndex(loc, base->getType(), indexValue); - } variableCheck(base); if (! base->isArray() && ! base->isMatrix() && ! base->isVector()) { @@ -872,9 +869,11 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, base->getAsSymbolNode()->getName().c_str(), ""); else error(loc, " left of '[' is not of type array, matrix, or vector ", "expression", ""); - } else if (base->getType().getQualifier().storage == EvqConst && index->getQualifier().storage == EvqConst) + } else if (base->getType().getQualifier().storage == EvqConst && index->getQualifier().storage == EvqConst) { + // both base and index are front-end constants + checkIndex(loc, base->getType(), indexValue); return intermediate.foldDereference(base, indexValue, loc); - else { + } else { // at least one of base and index is variable... if (base->getAsSymbolNode() && wasFlattened(base)) { @@ -884,9 +883,11 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, result = flattenAccess(base, indexValue); flattened = (result != base); } else { - if (index->getQualifier().storage == EvqConst) { + if (index->getQualifier().isFrontEndConstant()) { if (base->getType().isImplicitlySizedArray()) updateImplicitArraySize(loc, base, indexValue); + else + checkIndex(loc, base->getType(), indexValue); result = intermediate.addIndex(EOpIndexDirect, base, index, loc); } else { result = intermediate.addIndex(EOpIndexIndirect, base, index, loc); @@ -915,11 +916,6 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, return result; } -void HlslParseContext::checkIndex(const TSourceLoc& /*loc*/, const TType& /*type*/, int& /*index*/) -{ - // HLSL todo: any rules for index fixups? -} - // Handle seeing a binary node with a math operation. TIntermTyped* HlslParseContext::handleBinaryMath(const TSourceLoc& loc, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right) @@ -2000,6 +1996,11 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct TParameter& param = userFunction[i]; argVars.push_back(makeInternalVariable(*param.name, *param.type)); argVars.back()->getWritableType().getQualifier().makeTemporary(); + + // Track the input patch, which is the only non-builtin supported by hull shader PCF. + if (param.getDeclaredBuiltIn() == EbvInputPatch) + inputPatch = argVars.back(); + TIntermSymbol* arg = intermediate.addSymbol(*argVars.back()); handleFunctionArgument(&callee, callingArgs, arg); if (param.type->getQualifier().isParamInput()) { @@ -2040,7 +2041,10 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct TIntermTyped* element = intermediate.addIndex(EOpIndexIndirect, intermediate.addSymbol(*entryPointOutput), invocationIdSym, loc); - element->setType(callReturn->getType()); + + // Set the type of the array element being dereferenced + const TType derefElementType(entryPointOutput->getType(), 0); + element->setType(derefElementType); returnAssign = handleAssign(loc, EOpAssign, element, callReturn); } else { @@ -2216,9 +2220,6 @@ void HlslParseContext::remapEntryPointIO(TFunction& function, TVariable*& return synthesizeEditedInput(paramType); TVariable* argAsGlobal = makeIoVariable(function[i].name->c_str(), paramType, EvqVaryingIn); inputs.push_back(argAsGlobal); - - if (function[i].getDeclaredBuiltIn() == EbvInputPatch) - inputPatch = argAsGlobal; } if (paramType.getQualifier().isParamOutput()) { TVariable* argAsGlobal = makeIoVariable(function[i].name->c_str(), paramType, EvqVaryingOut); @@ -2562,14 +2563,25 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op if (left->getAsOperator() && left->getAsOperator()->getOp() == EOpMatrixSwizzle) return handleAssignToMatrixSwizzle(loc, op, left, right); - const bool isSplitLeft = wasSplit(left); - const bool isSplitRight = wasSplit(right); + // Return true if the given node is an index operation into a split variable. + const auto indexesSplit = [this](const TIntermTyped* node) -> bool { + const TIntermBinary* binaryNode = node->getAsBinaryNode(); + + if (binaryNode == nullptr) + return false; + + return (binaryNode->getOp() == EOpIndexDirect || binaryNode->getOp() == EOpIndexIndirect) && + wasSplit(binaryNode->getLeft()); + }; + + const bool isSplitLeft = wasSplit(left) || indexesSplit(left); + const bool isSplitRight = wasSplit(right) || indexesSplit(right); const bool isFlattenLeft = wasFlattened(left); const bool isFlattenRight = wasFlattened(right); - // OK to do a single assign if both are split, or both are unsplit. But if one is and the other - // isn't, we fall back to a member-wise copy. + // OK to do a single assign if neither side is split or flattened. Otherwise, + // fall through to a member-wise copy. if (!isFlattenLeft && !isFlattenRight && !isSplitLeft && !isSplitRight) { // Clip and cull distance requires more processing. See comment above assignClipCullDistance. if (isClipOrCullDistance(left->getType()) || isClipOrCullDistance(right->getType())) { @@ -2804,8 +2816,25 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op // If either left or right was a split structure, we must read or write it, but still have to // parallel-recurse through the unsplit structure to identify the built-in IO vars. - if (isSplitLeft) - splitLeft = intermediate.addSymbol(*getSplitNonIoVar(left->getAsSymbolNode()->getId()), loc); + // The left can be either a symbol, or an index into a symbol (e.g, array reference) + if (isSplitLeft) { + if (indexesSplit(left)) { + // Index case: Refer to the indexed symbol, if the left is an index operator. + const TIntermSymbol* symNode = left->getAsBinaryNode()->getLeft()->getAsSymbolNode(); + + TIntermTyped* splitLeftNonIo = intermediate.addSymbol(*getSplitNonIoVar(symNode->getId()), loc); + + splitLeft = intermediate.addIndex(left->getAsBinaryNode()->getOp(), splitLeftNonIo, + left->getAsBinaryNode()->getRight(), loc); + + const TType derefType(splitLeftNonIo->getType(), 0); + splitLeft->setType(derefType); + } else { + // Symbol case: otherwise, if not indexed, we have the symbol directly. + const TIntermSymbol* symNode = left->getAsSymbolNode(); + splitLeft = intermediate.addSymbol(*getSplitNonIoVar(symNode->getId()), loc); + } + } if (isSplitRight) splitRight = intermediate.addSymbol(*getSplitNonIoVar(right->getAsSymbolNode()->getId()), loc); @@ -7778,12 +7807,13 @@ TIntermTyped* HlslParseContext::handleConstructor(const TSourceLoc& loc, TInterm // TIntermTyped* HlslParseContext::addConstructor(const TSourceLoc& loc, TIntermTyped* node, const TType& type) { + TIntermAggregate* aggrNode = node->getAsAggregate(); TOperator op = intermediate.mapTypeToConstructorOp(type); // Combined texture-sampler constructors are completely semantic checked // in constructorTextureSamplerError() if (op == EOpConstructTextureSampler) - return intermediate.setAggregateOperator(node->getAsAggregate(), op, type, loc); + return intermediate.setAggregateOperator(aggrNode, op, type, loc); TTypeList::const_iterator memberTypes; if (op == EOpConstructStruct) @@ -7797,9 +7827,8 @@ TIntermTyped* HlslParseContext::addConstructor(const TSourceLoc& loc, TIntermTyp elementType.shallowCopy(type); bool singleArg; - TIntermAggregate* aggrNode = node->getAsAggregate(); if (aggrNode != nullptr) { - if (aggrNode->getOp() != EOpNull || aggrNode->getSequence().size() == 1) + if (aggrNode->getOp() != EOpNull) singleArg = true; else singleArg = false; @@ -7815,7 +7844,7 @@ TIntermTyped* HlslParseContext::addConstructor(const TSourceLoc& loc, TIntermTyp newNode = convertArray(node, type); // If structure constructor or array constructor is being called - // for only one parameter inside the structure, we need to call constructAggregate function once. + // for only one parameter inside the aggregate, we need to call constructAggregate function once. else if (type.isArray()) newNode = constructAggregate(node, elementType, 1, node->getLoc()); else if (op == EOpConstructStruct) @@ -7839,7 +7868,7 @@ TIntermTyped* HlslParseContext::addConstructor(const TSourceLoc& loc, TIntermTyp // // Handle list of arguments. // - TIntermSequence &sequenceVector = aggrNode->getSequence(); // Stores the information about the parameter to the constructor + TIntermSequence& sequenceVector = aggrNode->getSequence(); // Stores the information about the parameter to the constructor // if the structure constructor contains more than one parameter, then construct // each parameter @@ -8710,7 +8739,7 @@ void HlslParseContext::popNamespace() // Use the class/struct nesting string to create a global name for // a member of a class/struct. -void HlslParseContext::getFullNamespaceName(const TString*& name) const +void HlslParseContext::getFullNamespaceName(TString*& name) const { if (currentTypePrefix.size() == 0) return; @@ -8726,15 +8755,6 @@ void HlslParseContext::addScopeMangler(TString& name) name.append(scopeMangler); } -// Potentially rename shader entry point function -void HlslParseContext::renameShaderFunction(const 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 = NewPoolTString(intermediate.getEntryPointName().c_str()); -} - // Return true if this has uniform-interface like decorations. bool HlslParseContext::hasUniform(const TQualifier& qualifier) const { @@ -9045,19 +9065,12 @@ TIntermSymbol* HlslParseContext::findTessLinkageSymbol(TBuiltInVariable biType) return intermediate.addSymbol(*it->second->getAsVariable()); } -// Finalization step: Add patch constant function invocation -void HlslParseContext::addPatchConstantInvocation() +// Find the patch constant function (issues error, returns nullptr if not found) +const TFunction* HlslParseContext::findPatchConstantFunction(const TSourceLoc& loc) { - TSourceLoc loc; - loc.init(); - - // If there's no patch constant function, or we're not a HS, do nothing. - if (patchConstantFunctionName.empty() || language != EShLangTessControl) - return; - if (symbolTable.isFunctionNameVariable(patchConstantFunctionName)) { error(loc, "can't use variable in patch constant function", patchConstantFunctionName.c_str(), ""); - return; + return nullptr; } const TString mangledName = patchConstantFunctionName + "("; @@ -9071,7 +9084,7 @@ void HlslParseContext::addPatchConstantInvocation() // allow any disambiguation of overloads. if (candidateList.empty()) { error(loc, "patch constant function not found", patchConstantFunctionName.c_str(), ""); - return; + return nullptr; } // Based on directed experiments, it appears that if there are overloaded patchconstantfunctions, @@ -9079,9 +9092,22 @@ void HlslParseContext::addPatchConstantInvocation() // out if there is more than one candidate. if (candidateList.size() > 1) { error(loc, "ambiguous patch constant function", patchConstantFunctionName.c_str(), ""); - return; + return nullptr; } + return candidateList[0]; +} + +// Finalization step: Add patch constant function invocation +void HlslParseContext::addPatchConstantInvocation() +{ + TSourceLoc loc; + loc.init(); + + // If there's no patch constant function, or we're not a HS, do nothing. + if (patchConstantFunctionName.empty() || language != EShLangTessControl) + return; + // Look for built-in variables in a function's parameter list. const auto findBuiltIns = [&](const TFunction& function, std::set& builtIns) { for (int p=0; p(*candidateList[0]); + TFunction* patchConstantFunctionPtr = const_cast(findPatchConstantFunction(loc)); + + if (patchConstantFunctionPtr == nullptr) + return; + + TFunction& patchConstantFunction = *patchConstantFunctionPtr; + const int pcfParamCount = patchConstantFunction.getParamCount(); TIntermSymbol* invocationIdSym = findTessLinkageSymbol(EbvInvocationId); TIntermSequence& epBodySeq = entryPointFunctionBody->getAsAggregate()->getSequence(); @@ -9227,10 +9259,9 @@ void HlslParseContext::addPatchConstantInvocation() // ================ Step 1B: Argument synthesis ================ // Create pcfArguments for synthesis of patchconstantfunction invocation - // TODO: handle struct or array inputs { for (int p=0; p splitBuiltIns; // split built-ins, indexed by built-in type. - TVariable* inputPatch; + TVariable* inputPatch; // input patch is special for PCF: it's the only non-builtin PCF input, + // and is handled as a pseudo-builtin. unsigned int nextInLocation; unsigned int nextOutLocation; - TString sourceEntryPointName; TFunction* entryPointFunction; TIntermNode* entryPointFunctionBody;