diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index ae5f24d303..99c4c3f43c 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -292,8 +292,8 @@ spv::ExecutionModel TranslateExecutionModel(EShLanguage stage) switch (stage) { case EShLangVertex: return spv::ExecutionModelVertex; case EShLangFragment: return spv::ExecutionModelFragment; -#ifndef GLSLANG_WEB case EShLangCompute: return spv::ExecutionModelGLCompute; +#ifndef GLSLANG_WEB case EShLangTessControl: return spv::ExecutionModelTessellationControl; case EShLangTessEvaluation: return spv::ExecutionModelTessellationEvaluation; case EShLangGeometry: return spv::ExecutionModelGeometry; @@ -374,22 +374,20 @@ spv::Decoration TranslateBlockDecoration(const glslang::TType& type, bool useSto // Translate glslang type to SPIR-V memory decorations. void TranslateMemoryDecoration(const glslang::TQualifier& qualifier, std::vector& memory, bool useVulkanMemoryModel) { -#ifndef GLSLANG_WEB if (!useVulkanMemoryModel) { - if (qualifier.coherent) + if (qualifier.isCoherent()) memory.push_back(spv::DecorationCoherent); - if (qualifier.volatil) { + if (qualifier.isVolatile()) { memory.push_back(spv::DecorationVolatile); memory.push_back(spv::DecorationCoherent); } } - if (qualifier.restrict) + if (qualifier.isRestrict()) memory.push_back(spv::DecorationRestrict); if (qualifier.isReadOnly()) memory.push_back(spv::DecorationNonWritable); if (qualifier.isWriteOnly()) memory.push_back(spv::DecorationNonReadable); -#endif } // Translate glslang type to SPIR-V layout decorations. @@ -673,6 +671,13 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI case glslang::EbvFace: return spv::BuiltInFrontFacing; case glslang::EbvFragDepth: return spv::BuiltInFragDepth; + case glslang::EbvNumWorkGroups: return spv::BuiltInNumWorkgroups; + case glslang::EbvWorkGroupSize: return spv::BuiltInWorkgroupSize; + case glslang::EbvWorkGroupId: return spv::BuiltInWorkgroupId; + case glslang::EbvLocalInvocationId: return spv::BuiltInLocalInvocationId; + case glslang::EbvLocalInvocationIndex: return spv::BuiltInLocalInvocationIndex; + case glslang::EbvGlobalInvocationId: return spv::BuiltInGlobalInvocationId; + #ifndef GLSLANG_WEB // These *Distance capabilities logically belong here, but if the member is declared and // then never used, consumers of SPIR-V prefer the capability not be declared. @@ -757,12 +762,6 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI case glslang::EbvTessCoord: return spv::BuiltInTessCoord; case glslang::EbvPatchVertices: return spv::BuiltInPatchVertices; case glslang::EbvHelperInvocation: return spv::BuiltInHelperInvocation; - case glslang::EbvNumWorkGroups: return spv::BuiltInNumWorkgroups; - case glslang::EbvWorkGroupSize: return spv::BuiltInWorkgroupSize; - case glslang::EbvWorkGroupId: return spv::BuiltInWorkgroupId; - case glslang::EbvLocalInvocationId: return spv::BuiltInLocalInvocationId; - case glslang::EbvLocalInvocationIndex: return spv::BuiltInLocalInvocationIndex; - case glslang::EbvGlobalInvocationId: return spv::BuiltInGlobalInvocationId; case glslang::EbvSubGroupSize: builder.addExtension(spv::E_SPV_KHR_shader_ballot); @@ -1203,8 +1202,8 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T case glslang::EvqGlobal: return spv::StorageClassPrivate; case glslang::EvqConstReadOnly: return spv::StorageClassFunction; case glslang::EvqTemporary: return spv::StorageClassFunction; -#ifndef GLSLANG_WEB case glslang::EvqShared: return spv::StorageClassWorkgroup; +#ifndef GLSLANG_WEB case glslang::EvqPayloadNV: return spv::StorageClassRayPayloadNV; case glslang::EvqPayloadInNV: return spv::StorageClassIncomingRayPayloadNV; case glslang::EvqHitAttrNV: return spv::StorageClassHitAttributeNV; @@ -1465,13 +1464,20 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl if (mode != spv::ExecutionModeMax) builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); switch (glslangIntermediate->getInterlockOrdering()) { - case glslang::EioPixelInterlockOrdered: mode = spv::ExecutionModePixelInterlockOrderedEXT; break; - case glslang::EioPixelInterlockUnordered: mode = spv::ExecutionModePixelInterlockUnorderedEXT; break; - case glslang::EioSampleInterlockOrdered: mode = spv::ExecutionModeSampleInterlockOrderedEXT; break; - case glslang::EioSampleInterlockUnordered: mode = spv::ExecutionModeSampleInterlockUnorderedEXT; break; - case glslang::EioShadingRateInterlockOrdered: mode = spv::ExecutionModeShadingRateInterlockOrderedEXT; break; - case glslang::EioShadingRateInterlockUnordered: mode = spv::ExecutionModeShadingRateInterlockUnorderedEXT; break; - default: mode = spv::ExecutionModeMax; break; + case glslang::EioPixelInterlockOrdered: mode = spv::ExecutionModePixelInterlockOrderedEXT; + break; + case glslang::EioPixelInterlockUnordered: mode = spv::ExecutionModePixelInterlockUnorderedEXT; + break; + case glslang::EioSampleInterlockOrdered: mode = spv::ExecutionModeSampleInterlockOrderedEXT; + break; + case glslang::EioSampleInterlockUnordered: mode = spv::ExecutionModeSampleInterlockUnorderedEXT; + break; + case glslang::EioShadingRateInterlockOrdered: mode = spv::ExecutionModeShadingRateInterlockOrderedEXT; + break; + case glslang::EioShadingRateInterlockUnordered: mode = spv::ExecutionModeShadingRateInterlockUnorderedEXT; + break; + default: mode = spv::ExecutionModeMax; + break; } if (mode != spv::ExecutionModeMax) { builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); @@ -1489,7 +1495,6 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl #endif break; -#ifndef GLSLANG_WEB case EShLangCompute: builder.addCapability(spv::CapabilityShader); builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0), @@ -1505,6 +1510,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl builder.addExtension(spv::E_SPV_NV_compute_shader_derivatives); } break; +#ifndef GLSLANG_WEB case EShLangTessEvaluation: case EShLangTessControl: builder.addCapability(spv::CapabilityTessellation); @@ -2546,7 +2552,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt binOp = glslang::EOpMod; break; -#ifndef GLSLANG_WEB case glslang::EOpEmitVertex: case glslang::EOpEndPrimitive: case glslang::EOpBarrier: @@ -2570,10 +2575,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt // These all have 0 operands and will naturally finish up in the code below for 0 operands break; - case glslang::EOpAtomicStore: - noReturnValue = true; - // fallthrough - case glslang::EOpAtomicLoad: case glslang::EOpAtomicAdd: case glslang::EOpAtomicMin: case glslang::EOpAtomicMax: @@ -2585,6 +2586,14 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt atomic = true; break; +#ifndef GLSLANG_WEB + case glslang::EOpAtomicStore: + noReturnValue = true; + // fallthrough + case glslang::EOpAtomicLoad: + atomic = true; + break; + case glslang::EOpAtomicCounterAdd: case glslang::EOpAtomicCounterSubtract: case glslang::EOpAtomicCounterMin: @@ -2667,6 +2676,19 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt if (arg == 1) lvalue = true; break; + + case glslang::EOpAtomicAdd: + case glslang::EOpAtomicMin: + case glslang::EOpAtomicMax: + case glslang::EOpAtomicAnd: + case glslang::EOpAtomicOr: + case glslang::EOpAtomicXor: + case glslang::EOpAtomicExchange: + case glslang::EOpAtomicCompSwap: + if (arg == 0) + lvalue = true; + break; + #ifndef GLSLANG_WEB case glslang::EOpFrexp: if (arg == 1) @@ -2685,14 +2707,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt invertedType = convertGlslangToSpvType(glslangOperands[0]->getAsBinaryNode()->getLeft()->getType()); } break; - case glslang::EOpAtomicAdd: - case glslang::EOpAtomicMin: - case glslang::EOpAtomicMax: - case glslang::EOpAtomicAnd: - case glslang::EOpAtomicOr: - case glslang::EOpAtomicXor: - case glslang::EOpAtomicExchange: - case glslang::EOpAtomicCompSwap: case glslang::EOpAtomicLoad: case glslang::EOpAtomicStore: case glslang::EOpAtomicCounterAdd: @@ -2818,12 +2832,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt builder.createNoResultOp(spv::OpCooperativeMatrixStoreNV, idImmOps); result = 0; - } else if (atomic) { - // Handle all atomics - result = createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(), lvalueCoherentFlags); } else #endif - { + if (atomic) { + // Handle all atomics + result = createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(), lvalueCoherentFlags); + } else { // Pass through to generic operations. switch (glslangOperands.size()) { case 0: @@ -3535,8 +3549,8 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::CapabilityRuntimeDescriptorArrayEXT); } - spvType = builder.makeRuntimeArray(spvType); #endif + spvType = builder.makeRuntimeArray(spvType); } if (stride > 0) builder.addDecoration(spvType, spv::DecorationArrayStride, stride); @@ -3701,6 +3715,7 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, for (unsigned int i = 0; i < memory.size(); ++i) builder.addMemberDecoration(spvType, member, memory[i]); } + #endif // Location assignment was already completed correctly by the front end, @@ -4159,9 +4174,11 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF // memory and use RestrictPointer/AliasedPointer. if (originalParam(type.getQualifier().storage, type, false) || !writableParam(type.getQualifier().storage)) { - decorations.push_back(type.getQualifier().restrict ? spv::DecorationRestrict : spv::DecorationAliased); + decorations.push_back(type.getQualifier().isRestrict() ? spv::DecorationRestrict : + spv::DecorationAliased); } else { - decorations.push_back(type.getQualifier().restrict ? spv::DecorationRestrictPointerEXT : spv::DecorationAliasedPointerEXT); + decorations.push_back(type.getQualifier().isRestrict() ? spv::DecorationRestrictPointerEXT : + spv::DecorationAliasedPointerEXT); } } }; @@ -4969,6 +4986,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO } } +#ifndef GLSLANG_WEB // nonprivate if (imageType.getQualifier().nonprivate) { params.nonprivate = true; @@ -4978,6 +4996,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO if (imageType.getQualifier().volatil) { params.volatil = true; } +#endif std::vector result( 1, builder.createTextureCall(precision, resultType(), sparse, cracked.fetch, cracked.proj, cracked.gather, @@ -7170,6 +7189,48 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: case glslang::EOpRefract: libCall = spv::GLSLstd450Refract; break; + case glslang::EOpBarrier: + { + // This is for the extended controlBarrier function, with four operands. + // The unextended barrier() goes through createNoArgOperation. + assert(operands.size() == 4); + unsigned int executionScope = builder.getConstantScalar(operands[0]); + unsigned int memoryScope = builder.getConstantScalar(operands[1]); + unsigned int semantics = builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3]); + builder.createControlBarrier((spv::Scope)executionScope, (spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics); + if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask | + spv::MemorySemanticsMakeVisibleKHRMask | + spv::MemorySemanticsOutputMemoryKHRMask | + spv::MemorySemanticsVolatileMask)) { + builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); + } + if (glslangIntermediate->usingVulkanMemoryModel() && (executionScope == spv::ScopeDevice || memoryScope == spv::ScopeDevice)) { + builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR); + } + return 0; + } + break; + case glslang::EOpMemoryBarrier: + { + // This is for the extended memoryBarrier function, with three operands. + // The unextended memoryBarrier() goes through createNoArgOperation. + assert(operands.size() == 3); + unsigned int memoryScope = builder.getConstantScalar(operands[0]); + unsigned int semantics = builder.getConstantScalar(operands[1]) | builder.getConstantScalar(operands[2]); + builder.createMemoryBarrier((spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics); + if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask | + spv::MemorySemanticsMakeVisibleKHRMask | + spv::MemorySemanticsOutputMemoryKHRMask | + spv::MemorySemanticsVolatileMask)) { + builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); + } + if (glslangIntermediate->usingVulkanMemoryModel() && memoryScope == spv::ScopeDevice) { + builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR); + } + return 0; + } + break; + #ifndef GLSLANG_WEB case glslang::EOpInterpolateAtSample: if (typeProxy == glslang::EbtFloat16) @@ -7328,47 +7389,6 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_explicit_vertex_parameter); libCall = spv::InterpolateAtVertexAMD; break; - case glslang::EOpBarrier: - { - // This is for the extended controlBarrier function, with four operands. - // The unextended barrier() goes through createNoArgOperation. - assert(operands.size() == 4); - unsigned int executionScope = builder.getConstantScalar(operands[0]); - unsigned int memoryScope = builder.getConstantScalar(operands[1]); - unsigned int semantics = builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3]); - builder.createControlBarrier((spv::Scope)executionScope, (spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics); - if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask | - spv::MemorySemanticsMakeVisibleKHRMask | - spv::MemorySemanticsOutputMemoryKHRMask | - spv::MemorySemanticsVolatileMask)) { - builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); - } - if (glslangIntermediate->usingVulkanMemoryModel() && (executionScope == spv::ScopeDevice || memoryScope == spv::ScopeDevice)) { - builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR); - } - return 0; - } - break; - case glslang::EOpMemoryBarrier: - { - // This is for the extended memoryBarrier function, with three operands. - // The unextended memoryBarrier() goes through createNoArgOperation. - assert(operands.size() == 3); - unsigned int memoryScope = builder.getConstantScalar(operands[0]); - unsigned int semantics = builder.getConstantScalar(operands[1]) | builder.getConstantScalar(operands[2]); - builder.createMemoryBarrier((spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics); - if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask | - spv::MemorySemanticsMakeVisibleKHRMask | - spv::MemorySemanticsOutputMemoryKHRMask | - spv::MemorySemanticsVolatileMask)) { - builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); - } - if (glslangIntermediate->usingVulkanMemoryModel() && memoryScope == spv::ScopeDevice) { - builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR); - } - return 0; - } - break; case glslang::EOpReportIntersectionNV: { @@ -7476,17 +7496,10 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: // Intrinsics with no arguments (or no return value, and no precision). spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId) { -#ifndef GLSLANG_WEB // GLSL memory barriers use queuefamily scope in new model, device scope in old model spv::Scope memoryBarrierScope = glslangIntermediate->usingVulkanMemoryModel() ? spv::ScopeQueueFamilyKHR : spv::ScopeDevice; switch (op) { - case glslang::EOpEmitVertex: - builder.createNoResultOp(spv::OpEmitVertex); - return 0; - case glslang::EOpEndPrimitive: - builder.createNoResultOp(spv::OpEndPrimitive); - return 0; case glslang::EOpBarrier: if (glslangIntermediate->getStage() == EShLangTessControl) { if (glslangIntermediate->usingVulkanMemoryModel()) { @@ -7507,18 +7520,10 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv: builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsAllMemory | spv::MemorySemanticsAcquireReleaseMask); return 0; - case glslang::EOpMemoryBarrierAtomicCounter: - builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsAtomicCounterMemoryMask | - spv::MemorySemanticsAcquireReleaseMask); - return 0; case glslang::EOpMemoryBarrierBuffer: builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsUniformMemoryMask | spv::MemorySemanticsAcquireReleaseMask); return 0; - case glslang::EOpMemoryBarrierImage: - builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsImageMemoryMask | - spv::MemorySemanticsAcquireReleaseMask); - return 0; case glslang::EOpMemoryBarrierShared: builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsWorkgroupMemoryMask | spv::MemorySemanticsAcquireReleaseMask); @@ -7527,6 +7532,15 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv: builder.createMemoryBarrier(spv::ScopeWorkgroup, spv::MemorySemanticsAllMemory | spv::MemorySemanticsAcquireReleaseMask); return 0; +#ifndef GLSLANG_WEB + case glslang::EOpMemoryBarrierAtomicCounter: + builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsAtomicCounterMemoryMask | + spv::MemorySemanticsAcquireReleaseMask); + return 0; + case glslang::EOpMemoryBarrierImage: + builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsImageMemoryMask | + spv::MemorySemanticsAcquireReleaseMask); + return 0; case glslang::EOpAllMemoryBarrierWithGroupSync: builder.createControlBarrier(spv::ScopeWorkgroup, spv::ScopeDevice, spv::MemorySemanticsAllMemory | @@ -7571,6 +7585,14 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv: builder.createMemoryBarrier(spv::ScopeSubgroup, spv::MemorySemanticsWorkgroupMemoryMask | spv::MemorySemanticsAcquireReleaseMask); return spv::NoResult; + + case glslang::EOpEmitVertex: + builder.createNoResultOp(spv::OpEmitVertex); + return 0; + case glslang::EOpEndPrimitive: + builder.createNoResultOp(spv::OpEndPrimitive); + return 0; + case glslang::EOpSubgroupElect: { std::vector operands; return createSubgroupOperation(op, typeId, operands, glslang::EbtVoid); @@ -7618,10 +7640,10 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv: builder.addCapability(spv::CapabilityShaderClockKHR); return builder.createOp(spv::OpReadClockKHR, typeId, args); } +#endif default: break; } -#endif logger->missingFunctionality("unknown operation with no arguments"); @@ -7826,7 +7848,6 @@ spv::Id TGlslangToSpvTraverser::createSpvConstant(const glslang::TIntermTyped& n // We now know we have a specialization constant to build -#ifndef GLSLANG_WEB // gl_WorkGroupSize is a special case until the front-end handles hierarchical specialization constants, // even then, it's specialization ids are handled by special case syntax in GLSL: layout(local_size_x = ... if (node.getType().getQualifier().builtIn == glslang::EbvWorkGroupSize) { @@ -7841,7 +7862,6 @@ spv::Id TGlslangToSpvTraverser::createSpvConstant(const glslang::TIntermTyped& n } return builder.makeCompositeConstant(builder.makeVectorType(builder.makeUintType(32), 3), dimConstId, true); } -#endif // An AST node labelled as specialization constant should be a symbol node. // Its initializer should either be a sub tree with constant nodes, or a constant union array. diff --git a/Test/baseResults/size b/Test/baseResults/size index 4848776543..47364a5804 100644 --- a/Test/baseResults/size +++ b/Test/baseResults/size @@ -1 +1 @@ -388096 ../build/install/bin/glslangValidator.exe +396288 ../build/install/bin/glslangValidator.exe diff --git a/Test/baseResults/web.comp.out b/Test/baseResults/web.comp.out new file mode 100644 index 0000000000..79a3072967 --- /dev/null +++ b/Test/baseResults/web.comp.out @@ -0,0 +1,157 @@ +; SPIR-V +; Version: 1.0 +; Generator: Khronos Glslang Reference Front End; 7 +; Bound: 108 +; Schema: 0 + OpCapability Shader + %1 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %main "main" %gl_NumWorkGroups %gl_WorkGroupID %gl_LocalInvocationID %gl_GlobalInvocationID %gl_LocalInvocationIndex + OpExecutionMode %main LocalSize 2 5 7 + OpSource ESSL 310 + OpName %main "main" + OpName %bName "bName" + OpMemberName %bName 0 "size" + OpMemberName %bName 1 "count" + OpMemberName %bName 2 "data" + OpName %bInst "bInst" + OpName %s "s" + OpName %arrX "arrX" + OpName %arrY "arrY" + OpName %arrZ "arrZ" + OpName %gl_NumWorkGroups "gl_NumWorkGroups" + OpName %gl_WorkGroupID "gl_WorkGroupID" + OpName %gl_LocalInvocationID "gl_LocalInvocationID" + OpName %gl_GlobalInvocationID "gl_GlobalInvocationID" + OpName %gl_LocalInvocationIndex "gl_LocalInvocationIndex" + OpDecorate %_runtimearr_v4float ArrayStride 16 + OpMemberDecorate %bName 0 Offset 0 + OpMemberDecorate %bName 1 Offset 16 + OpMemberDecorate %bName 2 Offset 32 + OpDecorate %bName BufferBlock + OpDecorate %bInst DescriptorSet 0 + OpDecorate %bInst Binding 0 + OpDecorate %39 SpecId 18 + OpDecorate %41 SpecId 19 + OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize + OpDecorate %gl_NumWorkGroups BuiltIn NumWorkgroups + OpDecorate %gl_WorkGroupID BuiltIn WorkgroupId + OpDecorate %gl_LocalInvocationID BuiltIn LocalInvocationId + OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId + OpDecorate %gl_LocalInvocationIndex BuiltIn LocalInvocationIndex + %void = OpTypeVoid + %3 = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %uint_2 = OpConstant %uint 2 + %uint_264 = OpConstant %uint 264 + %int = OpTypeInt 32 1 + %v3uint = OpTypeVector %uint 3 + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_runtimearr_v4float = OpTypeRuntimeArray %v4float + %bName = OpTypeStruct %int %v3uint %_runtimearr_v4float +%_ptr_Uniform_bName = OpTypePointer Uniform %bName + %bInst = OpVariable %_ptr_Uniform_bName Uniform + %int_2 = OpConstant %int 2 + %int_0 = OpConstant %int 0 +%_ptr_Uniform_int = OpTypePointer Uniform %int + %float_7 = OpConstant %float 7 + %24 = OpConstantComposite %v4float %float_7 %float_7 %float_7 %float_7 +%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float + %uint_1 = OpConstant %uint 1 + %uint_3400 = OpConstant %uint 3400 + %uint_72 = OpConstant %uint 72 +%uint_197645 = OpConstant %uint 197645 +%_arr_v4float_uint_197645 = OpTypeArray %v4float %uint_197645 +%_ptr_Workgroup__arr_v4float_uint_197645 = OpTypePointer Workgroup %_arr_v4float_uint_197645 + %s = OpVariable %_ptr_Workgroup__arr_v4float_uint_197645 Workgroup + %int_3 = OpConstant %int 3 + %float_0 = OpConstant %float 0 + %39 = OpSpecConstant %uint 2 + %uint_5 = OpConstant %uint 5 + %41 = OpSpecConstant %uint 7 +%gl_WorkGroupSize = OpSpecConstantComposite %v3uint %39 %uint_5 %41 + %uint_0 = OpConstant %uint 0 +%_arr_int_44 = OpTypeArray %int %44 +%_ptr_Private__arr_int_44 = OpTypePointer Private %_arr_int_44 + %arrX = OpVariable %_ptr_Private__arr_int_44 Private +%_ptr_Private_int = OpTypePointer Private %int +%_arr_int_52 = OpTypeArray %int %52 +%_ptr_Private__arr_int_52 = OpTypePointer Private %_arr_int_52 + %arrY = OpVariable %_ptr_Private__arr_int_52 Private +%_arr_int_59 = OpTypeArray %int %59 +%_ptr_Private__arr_int_59 = OpTypePointer Private %_arr_int_59 + %arrZ = OpVariable %_ptr_Private__arr_int_59 Private +%_ptr_Workgroup_v4float = OpTypePointer Workgroup %v4float + %int_1 = OpConstant %int 1 +%_ptr_Input_v3uint = OpTypePointer Input %v3uint +%gl_NumWorkGroups = OpVariable %_ptr_Input_v3uint Input +%gl_WorkGroupID = OpVariable %_ptr_Input_v3uint Input +%gl_LocalInvocationID = OpVariable %_ptr_Input_v3uint Input +%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input +%_ptr_Input_uint = OpTypePointer Input %uint +%gl_LocalInvocationIndex = OpVariable %_ptr_Input_uint Input +%_ptr_Uniform_v3uint = OpTypePointer Uniform %v3uint + %int_5 = OpConstant %int 5 + %int_197645 = OpConstant %int 197645 + %main = OpFunction %void None %3 + %5 = OpLabel + OpControlBarrier %uint_2 %uint_2 %uint_264 + %20 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %21 = OpLoad %int %20 + %22 = OpSDiv %int %21 %int_2 + %26 = OpAccessChain %_ptr_Uniform_v4float %bInst %int_2 %22 + %27 = OpLoad %v4float %26 + %28 = OpFMul %v4float %27 %24 + %29 = OpAccessChain %_ptr_Uniform_v4float %bInst %int_2 %22 + OpStore %29 %28 + OpMemoryBarrier %uint_1 %uint_3400 + OpMemoryBarrier %uint_2 %uint_3400 + OpMemoryBarrier %uint_1 %uint_264 + OpMemoryBarrier %uint_1 %uint_72 + %44 = OpCompositeExtract %uint %gl_WorkGroupSize 0 + %49 = OpAccessChain %_ptr_Private_int %arrX %int_0 + %50 = OpLoad %int %49 + %51 = OpConvertSToF %float %50 + %52 = OpCompositeExtract %uint %gl_WorkGroupSize 1 + %56 = OpAccessChain %_ptr_Private_int %arrY %int_0 + %57 = OpLoad %int %56 + %58 = OpConvertSToF %float %57 + %59 = OpCompositeExtract %uint %gl_WorkGroupSize 2 + %63 = OpAccessChain %_ptr_Private_int %arrZ %int_0 + %64 = OpLoad %int %63 + %65 = OpConvertSToF %float %64 + %66 = OpCompositeConstruct %v4float %float_0 %51 %58 %65 + %68 = OpAccessChain %_ptr_Workgroup_v4float %s %int_3 + OpStore %68 %66 + %72 = OpLoad %v3uint %gl_NumWorkGroups + %73 = OpIAdd %v3uint %72 %gl_WorkGroupSize + %75 = OpLoad %v3uint %gl_WorkGroupID + %76 = OpIAdd %v3uint %73 %75 + %78 = OpLoad %v3uint %gl_LocalInvocationID + %79 = OpIAdd %v3uint %76 %78 + %81 = OpLoad %v3uint %gl_GlobalInvocationID + %84 = OpLoad %uint %gl_LocalInvocationIndex + %85 = OpCompositeConstruct %v3uint %84 %84 %84 + %86 = OpIMul %v3uint %81 %85 + %87 = OpIAdd %v3uint %79 %86 + %89 = OpAccessChain %_ptr_Uniform_v3uint %bInst %int_1 + OpStore %89 %87 + %90 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %91 = OpAtomicIAdd %int %90 %uint_1 %uint_0 %int_2 + %92 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %93 = OpAtomicSMin %int %92 %uint_1 %uint_0 %int_2 + %94 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %95 = OpAtomicSMax %int %94 %uint_1 %uint_0 %int_2 + %96 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %97 = OpAtomicAnd %int %96 %uint_1 %uint_0 %int_2 + %98 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %99 = OpAtomicOr %int %98 %uint_1 %uint_0 %int_2 + %100 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %101 = OpAtomicXor %int %100 %uint_1 %uint_0 %int_2 + %102 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %103 = OpAtomicExchange %int %102 %uint_1 %uint_0 %int_2 + %104 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %106 = OpAtomicCompareExchange %int %104 %uint_1 %uint_0 %uint_0 %int_2 %int_5 + OpReturn + OpFunctionEnd diff --git a/Test/baseResults/web.separate.frag.out b/Test/baseResults/web.separate.frag.out new file mode 100644 index 0000000000..e31ddca376 --- /dev/null +++ b/Test/baseResults/web.separate.frag.out @@ -0,0 +1,178 @@ +; SPIR-V +; Version: 1.0 +; Generator: Khronos Glslang Reference Front End; 7 +; Bound: 99 +; Schema: 0 + OpCapability Shader + %1 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" %color %i + OpExecutionMode %main OriginUpperLeft + OpSource ESSL 310 + OpName %main "main" + OpName %color "color" + OpName %t2d "t2d" + OpName %s "s" + OpName %t3d "t3d" + OpName %sA "sA" + OpName %sShadow "sShadow" + OpName %i "i" + OpName %tex2D "tex2D" + OpName %texCube "texCube" + OpName %tex2DArray "tex2DArray" + OpName %itex2D "itex2D" + OpName %itex3D "itex3D" + OpName %itexCube "itexCube" + OpName %itex2DArray "itex2DArray" + OpName %utex2D "utex2D" + OpName %utex3D "utex3D" + OpName %utexCube "utexCube" + OpName %utex2DArray "utex2DArray" + OpName %tex3D "tex3D" + OpDecorate %color Location 0 + OpDecorate %t2d RelaxedPrecision + OpDecorate %t2d DescriptorSet 0 + OpDecorate %t2d Binding 3 + OpDecorate %14 RelaxedPrecision + OpDecorate %s DescriptorSet 0 + OpDecorate %s Binding 0 + OpDecorate %23 RelaxedPrecision + OpDecorate %t3d DescriptorSet 0 + OpDecorate %t3d Binding 4 + OpDecorate %sA DescriptorSet 0 + OpDecorate %sA Binding 2 + OpDecorate %48 RelaxedPrecision + OpDecorate %51 RelaxedPrecision + OpDecorate %sShadow DescriptorSet 0 + OpDecorate %sShadow Binding 1 + OpDecorate %i RelaxedPrecision + OpDecorate %i Flat + OpDecorate %i Location 0 + OpDecorate %tex2D RelaxedPrecision + OpDecorate %tex2D DescriptorSet 0 + OpDecorate %tex2D Binding 5 + OpDecorate %texCube RelaxedPrecision + OpDecorate %texCube DescriptorSet 0 + OpDecorate %texCube Binding 6 + OpDecorate %tex2DArray DescriptorSet 0 + OpDecorate %tex2DArray Binding 15 + OpDecorate %itex2D DescriptorSet 0 + OpDecorate %itex2D Binding 16 + OpDecorate %itex3D DescriptorSet 0 + OpDecorate %itex3D Binding 17 + OpDecorate %itexCube DescriptorSet 0 + OpDecorate %itexCube Binding 18 + OpDecorate %itex2DArray DescriptorSet 0 + OpDecorate %itex2DArray Binding 19 + OpDecorate %utex2D DescriptorSet 0 + OpDecorate %utex2D Binding 20 + OpDecorate %utex3D DescriptorSet 0 + OpDecorate %utex3D Binding 21 + OpDecorate %utexCube DescriptorSet 0 + OpDecorate %utexCube Binding 22 + OpDecorate %utex2DArray DescriptorSet 0 + OpDecorate %utex2DArray Binding 23 + OpDecorate %tex3D DescriptorSet 0 + OpDecorate %tex3D Binding 36 + %void = OpTypeVoid + %3 = OpTypeFunction %void + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %color = OpVariable %_ptr_Output_v4float Output + %10 = OpTypeImage %float 2D 0 0 0 1 Unknown + %11 = OpTypeSampledImage %10 +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %t2d = OpVariable %_ptr_UniformConstant_11 UniformConstant + %15 = OpTypeSampler +%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15 + %s = OpVariable %_ptr_UniformConstant_15 UniformConstant + %v2float = OpTypeVector %float 2 + %float_0_5 = OpConstant %float 0.5 + %22 = OpConstantComposite %v2float %float_0_5 %float_0_5 + %24 = OpTypeImage %float 3D 0 0 0 1 Unknown + %25 = OpTypeSampledImage %24 + %uint = OpTypeInt 32 0 + %uint_4 = OpConstant %uint 4 +%_arr_25_uint_4 = OpTypeArray %25 %uint_4 +%_ptr_UniformConstant__arr_25_uint_4 = OpTypePointer UniformConstant %_arr_25_uint_4 + %t3d = OpVariable %_ptr_UniformConstant__arr_25_uint_4 UniformConstant + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 +%_ptr_UniformConstant_25 = OpTypePointer UniformConstant %25 +%_arr_15_uint_4 = OpTypeArray %15 %uint_4 +%_ptr_UniformConstant__arr_15_uint_4 = OpTypePointer UniformConstant %_arr_15_uint_4 + %sA = OpVariable %_ptr_UniformConstant__arr_15_uint_4 UniformConstant + %int_2 = OpConstant %int 2 + %v3float = OpTypeVector %float 3 + %44 = OpConstantComposite %v3float %float_0_5 %float_0_5 %float_0_5 + %sShadow = OpVariable %_ptr_UniformConstant_15 UniformConstant +%_ptr_Input_int = OpTypePointer Input %int + %i = OpVariable %_ptr_Input_int Input + %tex2D = OpVariable %_ptr_UniformConstant_11 UniformConstant + %58 = OpTypeImage %float Cube 0 0 0 1 Unknown + %59 = OpTypeSampledImage %58 +%_ptr_UniformConstant_59 = OpTypePointer UniformConstant %59 + %texCube = OpVariable %_ptr_UniformConstant_59 UniformConstant + %62 = OpTypeImage %float 2D 0 1 0 1 Unknown + %63 = OpTypeSampledImage %62 +%_ptr_UniformConstant_63 = OpTypePointer UniformConstant %63 + %tex2DArray = OpVariable %_ptr_UniformConstant_63 UniformConstant + %66 = OpTypeImage %int 2D 0 0 0 1 Unknown + %67 = OpTypeSampledImage %66 +%_ptr_UniformConstant_67 = OpTypePointer UniformConstant %67 + %itex2D = OpVariable %_ptr_UniformConstant_67 UniformConstant + %70 = OpTypeImage %int 3D 0 0 0 1 Unknown + %71 = OpTypeSampledImage %70 +%_ptr_UniformConstant_71 = OpTypePointer UniformConstant %71 + %itex3D = OpVariable %_ptr_UniformConstant_71 UniformConstant + %74 = OpTypeImage %int Cube 0 0 0 1 Unknown + %75 = OpTypeSampledImage %74 +%_ptr_UniformConstant_75 = OpTypePointer UniformConstant %75 + %itexCube = OpVariable %_ptr_UniformConstant_75 UniformConstant + %78 = OpTypeImage %int 2D 0 1 0 1 Unknown + %79 = OpTypeSampledImage %78 +%_ptr_UniformConstant_79 = OpTypePointer UniformConstant %79 +%itex2DArray = OpVariable %_ptr_UniformConstant_79 UniformConstant + %82 = OpTypeImage %uint 2D 0 0 0 1 Unknown + %83 = OpTypeSampledImage %82 +%_ptr_UniformConstant_83 = OpTypePointer UniformConstant %83 + %utex2D = OpVariable %_ptr_UniformConstant_83 UniformConstant + %86 = OpTypeImage %uint 3D 0 0 0 1 Unknown + %87 = OpTypeSampledImage %86 +%_ptr_UniformConstant_87 = OpTypePointer UniformConstant %87 + %utex3D = OpVariable %_ptr_UniformConstant_87 UniformConstant + %90 = OpTypeImage %uint Cube 0 0 0 1 Unknown + %91 = OpTypeSampledImage %90 +%_ptr_UniformConstant_91 = OpTypePointer UniformConstant %91 + %utexCube = OpVariable %_ptr_UniformConstant_91 UniformConstant + %94 = OpTypeImage %uint 2D 0 1 0 1 Unknown + %95 = OpTypeSampledImage %94 +%_ptr_UniformConstant_95 = OpTypePointer UniformConstant %95 +%utex2DArray = OpVariable %_ptr_UniformConstant_95 UniformConstant + %tex3D = OpVariable %_ptr_UniformConstant_25 UniformConstant + %main = OpFunction %void None %3 + %5 = OpLabel + %14 = OpLoad %11 %t2d + %18 = OpLoad %15 %s + %19 = OpSampledImage %11 %14 %18 + %23 = OpImageSampleImplicitLod %v4float %19 %22 + OpStore %color %23 + %34 = OpAccessChain %_ptr_UniformConstant_25 %t3d %int_1 + %35 = OpLoad %25 %34 + %40 = OpAccessChain %_ptr_UniformConstant_15 %sA %int_2 + %41 = OpLoad %15 %40 + %42 = OpSampledImage %25 %35 %41 + %45 = OpImageSampleImplicitLod %v4float %42 %44 + %46 = OpLoad %v4float %color + %47 = OpFAdd %v4float %46 %45 + OpStore %color %47 + %48 = OpLoad %11 %t2d + %49 = OpLoad %15 %s + %50 = OpSampledImage %11 %48 %49 + %51 = OpImageSampleImplicitLod %v4float %50 %22 + %52 = OpLoad %v4float %color + %53 = OpFAdd %v4float %52 %51 + OpStore %color %53 + OpReturn + OpFunctionEnd diff --git a/Test/web.comp b/Test/web.comp new file mode 100644 index 0000000000..07847b4268 --- /dev/null +++ b/Test/web.comp @@ -0,0 +1,50 @@ +#version 310 es + +layout(local_size_x_id = 18, local_size_z_id = 19) in; + +layout(local_size_x = 2) in; +layout(local_size_y = 5) in; +layout(local_size_z = 7) in; + +const int total = gl_MaxComputeWorkGroupCount.x + + gl_MaxComputeWorkGroupCount.y + + gl_MaxComputeWorkGroupCount.z + + gl_MaxComputeUniformComponents + + gl_MaxComputeTextureImageUnits; + +shared vec4 s[total]; + +int arrX[gl_WorkGroupSize.x]; +int arrY[gl_WorkGroupSize.y]; +int arrZ[gl_WorkGroupSize.z]; + +layout(binding = 0, set = 0) buffer bName { + int size; + uvec3 count; + vec4 data[]; +} bInst; + +void main() +{ + barrier(); + + bInst.data[bInst.size / 2] *= vec4(7.0); + + memoryBarrier(); + groupMemoryBarrier(); + memoryBarrierShared(); + memoryBarrierBuffer(); + + s[3] = vec4(0, arrX[0], arrY[0], arrZ[0]); + bInst.count = gl_NumWorkGroups + gl_WorkGroupSize + gl_WorkGroupID + gl_LocalInvocationID + + gl_GlobalInvocationID * gl_LocalInvocationIndex; + + atomicAdd(bInst.size, 2); + atomicMin(bInst.size, 2); + atomicMax(bInst.size, 2); + atomicAnd(bInst.size, 2); + atomicOr(bInst.size, 2); + atomicXor(bInst.size, 2); + atomicExchange(bInst.size, 2); + atomicCompSwap(bInst.size, 5, 2); +} diff --git a/Test/web.separate.frag b/Test/web.separate.frag new file mode 100644 index 0000000000..b747cba578 --- /dev/null +++ b/Test/web.separate.frag @@ -0,0 +1,63 @@ +#version 310 es + +precision highp sampler; +precision highp samplerShadow; +precision highp texture2DArray; +precision highp itexture2D; +precision highp itexture3D; +precision highp itextureCube; +precision highp itexture2DArray; +precision highp utexture2D; +precision highp utexture3D; +precision highp utextureCube; +precision highp utexture2DArray; +precision highp texture3D; +precision highp float; + +layout(binding = 0) uniform sampler s; +layout(binding = 1) uniform samplerShadow sShadow; +layout(binding = 2) uniform sampler sA[4]; +layout(binding = 3) uniform texture2D t2d; +layout(binding = 4) uniform texture3D t3d[4]; +layout(location = 0) flat in int i; + +layout(location = 0) out vec4 color; + +void main() +{ + color = texture(sampler2D(t2d, s), vec2(0.5)); + color += texture(sampler3D(t3d[1], sA[2]), vec3(0.5)); + color += texture(sampler2D(t2d, s), vec2(0.5)); +} + +layout(binding = 5) uniform texture2D tex2D; +layout(binding = 6) uniform textureCube texCube; +layout(binding = 15) uniform texture2DArray tex2DArray; +layout(binding = 16) uniform itexture2D itex2D; +layout(binding = 17) uniform itexture3D itex3D; +layout(binding = 18) uniform itextureCube itexCube; +layout(binding = 19) uniform itexture2DArray itex2DArray; +layout(binding = 20) uniform utexture2D utex2D; +layout(binding = 21) uniform utexture3D utex3D; +layout(binding = 22) uniform utextureCube utexCube; +layout(binding = 23) uniform utexture2DArray utex2DArray; +layout(binding = 36) uniform texture3D tex3D; + +void foo() +{ + sampler2D (tex2D, s); + samplerCube (texCube, s); + samplerCubeShadow (texCube, sShadow); + sampler2DArray (tex2DArray, s); + sampler2DArrayShadow (tex2DArray, sShadow); + isampler2D (itex2D, s); + isampler3D (itex3D, s); + isamplerCube (itexCube, s); + isampler2DArray (itex2DArray, s); + usampler2D (utex2D, s); + usampler3D (utex3D, s); + usamplerCube (utexCube, s); + usampler2DArray (utex2DArray, s); + sampler3D (tex3D, s); + sampler2DShadow (tex2D, sShadow); +} diff --git a/Test/web.testlist b/Test/web.testlist index fba92127a6..764c0c0f2f 100644 --- a/Test/web.testlist +++ b/Test/web.testlist @@ -5,3 +5,5 @@ web.controlFlow.frag web.operations.frag web.texture.frag web.array.frag +web.separate.frag +web.comp diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index ef933b4fc9..3ed402d490 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -79,6 +79,7 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool ms : 1; bool image : 1; // image, combined should be false bool combined : 1; // true means texture is combined with a sampler, false means texture with no sampler + bool sampler : 1; // true means a pure sampler, other fields should be clear() #ifdef ENABLE_HLSL unsigned int vectorSize : 3; // vector return type size. unsigned int getVectorSize() const { return vectorSize; } @@ -105,8 +106,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool isRect() const { return false; } bool isSubpass() const { return false; } bool isCombined() const { return true; } - bool isPureSampler() const { return false; } - bool isTexture() const { return false; } bool isImage() const { return false; } bool isImageClass() const { return false; } bool isMultiSample() const { return false; } @@ -114,7 +113,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, void setExternal(bool e) { } bool isYuv() const { return false; } #else - bool sampler : 1; // true means a pure sampler, other fields should be clear() bool external : 1; // GL_OES_EGL_image_external bool yuv : 1; // GL_EXT_YUV_target // Some languages support structures as sample results. Storing the whole structure in the @@ -125,8 +123,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool isRect() const { return dim == EsdRect; } bool isSubpass() const { return dim == EsdSubpass; } bool isCombined() const { return combined; } - bool isPureSampler() const { return sampler; } - bool isTexture() const { return !sampler && !image; } bool isImage() const { return image && !isSubpass(); } bool isImageClass() const { return image; } bool isMultiSample() const { return ms; } @@ -134,6 +130,9 @@ struct TSampler { // misnomer now; includes images, textures without sampler, void setExternal(bool e) { external = e; } bool isYuv() const { return yuv; } #endif + bool isTexture() const { return !sampler && !image; } + bool isPureSampler() const { return sampler; } + void setCombined(bool c) { combined = c; } void setBasicType(TBasicType t) { type = t; } TBasicType getBasicType() const { return type; } @@ -149,8 +148,8 @@ struct TSampler { // misnomer now; includes images, textures without sampler, ms = false; image = false; combined = false; -#ifndef GLSLANG_WEB sampler = false; +#ifndef GLSLANG_WEB external = false; yuv = false; #endif @@ -197,6 +196,14 @@ struct TSampler { // misnomer now; includes images, textures without sampler, ms = m; } + // make a pure sampler, no texture, no image, nothing combined, the 'sampler' keyword + void setPureSampler(bool s) + { + clear(); + sampler = true; + shadow = s; + } + #ifndef GLSLANG_WEB // make a subpass input attachment void setSubpass(TBasicType t, bool m = false) @@ -207,14 +214,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, dim = EsdSubpass; ms = m; } - - // make a pure sampler, no texture, no image, nothing combined, the 'sampler' keyword - void setPureSampler(bool s) - { - clear(); - sampler = true; - shadow = s; - } #endif bool operator==(const TSampler& right) const @@ -529,6 +528,7 @@ class TQualifier { void clearMemory() { +#ifndef GLSLANG_WEB coherent = false; devicecoherent = false; queuefamilycoherent = false; @@ -539,6 +539,7 @@ class TQualifier { restrict = false; readonly = false; writeonly = false; +#endif } const char* semanticName; @@ -551,16 +552,6 @@ class TQualifier { bool centroid : 1; bool smooth : 1; bool flat : 1; - bool coherent : 1; - bool devicecoherent : 1; - bool queuefamilycoherent : 1; - bool workgroupcoherent : 1; - bool subgroupcoherent : 1; - bool nonprivate : 1; - bool volatil : 1; - bool restrict : 1; - bool readonly : 1; - bool writeonly : 1; // having a constant_id is not sufficient: expressions have no id, but are still specConstant bool specConstant : 1; bool nonUniform : 1; @@ -568,6 +559,9 @@ class TQualifier { #ifdef GLSLANG_WEB bool isWriteOnly() const { return false; } bool isReadOnly() const { return false; } + bool isRestrict() const { return false; } + bool isCoherent() const { return false; } + bool isVolatile() const { return false; } bool isSample() const { return false; } bool isMemory() const { return false; } bool isMemoryQualifierImageAndSSBOOnly() const { return false; } @@ -589,8 +583,21 @@ class TQualifier { bool perTaskNV : 1; bool patch : 1; bool sample : 1; + bool restrict : 1; + bool readonly : 1; + bool writeonly : 1; + bool coherent : 1; + bool volatil : 1; + bool devicecoherent : 1; + bool queuefamilycoherent : 1; + bool workgroupcoherent : 1; + bool subgroupcoherent : 1; + bool nonprivate : 1; bool isWriteOnly() const { return writeonly; } bool isReadOnly() const { return readonly; } + bool isRestrict() const { return restrict; } + bool isCoherent() const { return coherent; } + bool isVolatile() const { return volatil; } bool isSample() const { return sample; } bool isMemory() const { @@ -781,8 +788,8 @@ class TQualifier { { layoutLocation = layoutLocationEnd; layoutComponent = layoutComponentEnd; - layoutIndex = layoutIndexEnd; #ifndef GLSLANG_WEB + layoutIndex = layoutIndexEnd; clearStreamLayout(); clearXfbLayout(); #endif @@ -887,7 +894,9 @@ class TQualifier { layoutSet = layoutSetEnd; layoutBinding = layoutBindingEnd; +#ifndef GLSLANG_WEB layoutAttachment = layoutAttachmentEnd; +#endif } bool hasMatrix() const @@ -924,6 +933,7 @@ class TQualifier { bool hasOffset() const { return false; } bool isNonPerspective() const { return false; } bool hasIndex() const { return false; } + unsigned getIndex() const { return 0; } bool hasComponent() const { return false; } bool hasStream() const { return false; } bool hasFormat() const { return false; } @@ -948,6 +958,7 @@ class TQualifier { { return layoutIndex != layoutIndexEnd; } + unsigned getIndex() const { return layoutIndex; } bool hasComponent() const { return layoutComponent != layoutComponentEnd; @@ -1922,6 +1933,7 @@ class TType { case EbtFloat: return "float"; case EbtInt: return "int"; case EbtUint: return "uint"; + case EbtSampler: return "sampler/image"; #ifndef GLSLANG_WEB case EbtVoid: return "void"; case EbtDouble: return "double"; @@ -1934,7 +1946,6 @@ class TType { case EbtUint64: return "uint64_t"; case EbtBool: return "bool"; case EbtAtomicUint: return "atomic_uint"; - case EbtSampler: return "sampler/image"; case EbtStruct: return "structure"; case EbtBlock: return "block"; case EbtAccStructNV: return "accelerationStructureNV"; diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index f966899f03..4bddf1c26a 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1310,11 +1310,13 @@ class TIntermOperator : public TIntermTyped { bool isSparseTexture() const { return false; } bool isImageFootprint() const { return false; } bool isSparseImage() const { return false; } + bool isSubgroup() const { return false; } #else bool isImage() const { return op > EOpImageGuardBegin && op < EOpImageGuardEnd; } bool isSparseTexture() const { return op > EOpSparseTextureGuardBegin && op < EOpSparseTextureGuardEnd; } bool isImageFootprint() const { return op > EOpImageFootprintGuardBegin && op < EOpImageFootprintGuardEnd; } bool isSparseImage() const { return op == EOpSparseImageLoad; } + bool isSubgroup() const { return op > EOpSubgroupGuardStart && op < EOpSubgroupGuardStop; } #endif void setOperationPrecision(TPrecisionQualifier p) { operationPrecision = p; } diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 2344d36cee..6bf847bab3 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -85,18 +85,18 @@ const int TypeStringScalarMask = ~TypeStringColumnMask; // take type to enum ArgType { // numbers hardcoded to correspond to 'TypeString'; order and value matter - TypeB = 1 << 0, // Boolean - TypeF = 1 << 1, // float 32 - TypeI = 1 << 2, // int 32 - TypeU = 1 << 3, // uint 32 - TypeF16 = 1 << 4, // float 16 - TypeF64 = 1 << 5, // float 64 - TypeI8 = 1 << 6, // int 8 - TypeI16 = 1 << 7, // int 16 - TypeI64 = 1 << 8, // int 64 - TypeU8 = 1 << 9, // uint 8 - TypeU16 = 1 << 10, // uint 16 - TypeU64 = 1 << 11, // uint 64 + TypeB = 1 << 0, // Boolean + TypeF = 1 << 1, // float 32 + TypeI = 1 << 2, // int 32 + TypeU = 1 << 3, // uint 32 + TypeF16 = 1 << 4, // float 16 + TypeF64 = 1 << 5, // float 64 + TypeI8 = 1 << 6, // int 8 + TypeI16 = 1 << 7, // int 16 + TypeI64 = 1 << 8, // int 64 + TypeU8 = 1 << 9, // uint 8 + TypeU16 = 1 << 10, // uint 16 + TypeU64 = 1 << 11, // uint 64 }; // Mixtures of the above, to help the function tables const ArgType TypeFI = static_cast(TypeF | TypeI); @@ -106,22 +106,22 @@ const ArgType TypeIU = static_cast(TypeI | TypeU); // The relationships between arguments and return type, whether anything is // output, or other unusual situations. enum ArgClass { - ClassRegular = 0, // nothing special, just all vector widths with matching return type; traditional arithmetic - ClassLS = 1 << 0, // the last argument is also held fixed as a (type-matched) scalar while the others cycle - ClassXLS = 1 << 1, // the last argument is exclusively a (type-matched) scalar while the others cycle - ClassLS2 = 1 << 2, // the last two arguments are held fixed as a (type-matched) scalar while the others cycle - ClassFS = 1 << 3, // the first argument is held fixed as a (type-matched) scalar while the others cycle - ClassFS2 = 1 << 4, // the first two arguments are held fixed as a (type-matched) scalar while the others cycle - ClassLO = 1 << 5, // the last argument is an output - ClassB = 1 << 6, // return type cycles through only bool/bvec, matching vector width of args - ClassLB = 1 << 7, // last argument cycles through only bool/bvec, matching vector width of args - ClassV1 = 1 << 8, // scalar only - ClassFIO = 1 << 9, // first argument is inout - ClassRS = 1 << 10, // the return is held scalar as the arguments cycle - ClassNS = 1 << 11, // no scalar prototype - ClassCV = 1 << 12, // first argument is 'coherent volatile' - ClassFO = 1 << 13, // first argument is output - ClassV3 = 1 << 14, // vec3 only + ClassRegular = 0, // nothing special, just all vector widths with matching return type; traditional arithmetic + ClassLS = 1 << 0, // the last argument is also held fixed as a (type-matched) scalar while the others cycle + ClassXLS = 1 << 1, // the last argument is exclusively a (type-matched) scalar while the others cycle + ClassLS2 = 1 << 2, // the last two arguments are held fixed as a (type-matched) scalar while the others cycle + ClassFS = 1 << 3, // the first argument is held fixed as a (type-matched) scalar while the others cycle + ClassFS2 = 1 << 4, // the first two arguments are held fixed as a (type-matched) scalar while the others cycle + ClassLO = 1 << 5, // the last argument is an output + ClassB = 1 << 6, // return type cycles through only bool/bvec, matching vector width of args + ClassLB = 1 << 7, // last argument cycles through only bool/bvec, matching vector width of args + ClassV1 = 1 << 8, // scalar only + ClassFIO = 1 << 9, // first argument is inout + ClassRS = 1 << 10, // the return is held scalar as the arguments cycle + ClassNS = 1 << 11, // no scalar prototype + ClassCV = 1 << 12, // first argument is 'coherent volatile' + ClassFO = 1 << 13, // first argument is output + ClassV3 = 1 << 14, // vec3 only }; // Mixtures of the above, to help the function tables const ArgClass ClassV1FIOCV = (ArgClass)(ClassV1 | ClassFIO | ClassCV); @@ -147,6 +147,7 @@ EProfile EDesktopProfile = static_cast(ENoProfile | ECoreProfile | ECo // Declare pointers to put into the table for versioning. #ifdef GLSLANG_WEB const Versioning* Es300Desktop130 = nullptr; + const Versioning* Es310Desktop430 = nullptr; #else const Versioning Es300Desktop130Version[] = { { EEsProfile, 0, 300, 0, nullptr }, { EDesktopProfile, 0, 130, 0, nullptr }, @@ -256,7 +257,6 @@ const BuiltInFunction BaseFunctions[] = { { EOpGreaterThanEqual, "greaterThanEqual", 2, TypeU, ClassBNS, Es300Desktop130 }, { EOpVectorEqual, "equal", 2, TypeU, ClassBNS, Es300Desktop130 }, { EOpVectorNotEqual, "notEqual", 2, TypeU, ClassBNS, Es300Desktop130 }, -#ifndef GLSLANG_WEB { EOpAtomicAdd, "atomicAdd", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, { EOpAtomicMin, "atomicMin", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, { EOpAtomicMax, "atomicMax", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, @@ -265,9 +265,11 @@ const BuiltInFunction BaseFunctions[] = { { EOpAtomicXor, "atomicXor", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, { EOpAtomicExchange, "atomicExchange", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, { EOpAtomicCompSwap, "atomicCompSwap", 3, TypeIU, ClassV1FIOCV, Es310Desktop430 }, +#ifndef GLSLANG_WEB { EOpMix, "mix", 3, TypeB, ClassRegular, Es310Desktop450 }, { EOpMix, "mix", 3, TypeIU, ClassLB, Es310Desktop450 }, #endif + { EOpNull } }; @@ -278,6 +280,59 @@ const BuiltInFunction DerivativeFunctions[] = { { EOpNull } }; +// For functions declared some other way, but still use the table to relate to operator. +struct CustomFunction { + TOperator op; // operator to map the name to + const char* name; // function name + const Versioning* versioning; // nullptr means always a valid version +}; + +const CustomFunction CustomFunctions[] = { + { EOpBarrier, "barrier", nullptr }, + { EOpMemoryBarrierShared, "memoryBarrierShared", nullptr }, + { EOpGroupMemoryBarrier, "groupMemoryBarrier", nullptr }, + { EOpMemoryBarrier, "memoryBarrier", nullptr }, + { EOpMemoryBarrierBuffer, "memoryBarrierBuffer", nullptr }, + + { EOpPackSnorm2x16, "packSnorm2x16", nullptr }, + { EOpUnpackSnorm2x16, "unpackSnorm2x16", nullptr }, + { EOpPackUnorm2x16, "packUnorm2x16", nullptr }, + { EOpUnpackUnorm2x16, "unpackUnorm2x16", nullptr }, + { EOpPackHalf2x16, "packHalf2x16", nullptr }, + { EOpUnpackHalf2x16, "unpackHalf2x16", nullptr }, + + { EOpMul, "matrixCompMult", nullptr }, + { EOpOuterProduct, "outerProduct", nullptr }, + { EOpTranspose, "transpose", nullptr }, + { EOpDeterminant, "determinant", nullptr }, + { EOpMatrixInverse, "inverse", nullptr }, + { EOpFloatBitsToInt, "floatBitsToInt", nullptr }, + { EOpFloatBitsToUint, "floatBitsToUint", nullptr }, + { EOpIntBitsToFloat, "intBitsToFloat", nullptr }, + { EOpUintBitsToFloat, "uintBitsToFloat", nullptr }, + + { EOpTextureQuerySize, "textureSize", nullptr }, + { EOpTextureQueryLod, "textureQueryLod", nullptr }, + { EOpTextureQueryLevels, "textureQueryLevels", nullptr }, + { EOpTextureQuerySamples, "textureSamples", nullptr }, + { EOpTexture, "texture", nullptr }, + { EOpTextureProj, "textureProj", nullptr }, + { EOpTextureLod, "textureLod", nullptr }, + { EOpTextureOffset, "textureOffset", nullptr }, + { EOpTextureFetch, "texelFetch", nullptr }, + { EOpTextureFetchOffset, "texelFetchOffset", nullptr }, + { EOpTextureProjOffset, "textureProjOffset", nullptr }, + { EOpTextureLodOffset, "textureLodOffset", nullptr }, + { EOpTextureProjLod, "textureProjLod", nullptr }, + { EOpTextureProjLodOffset, "textureProjLodOffset", nullptr }, + { EOpTextureGrad, "textureGrad", nullptr }, + { EOpTextureGradOffset, "textureGradOffset", nullptr }, + { EOpTextureProjGrad, "textureProjGrad", nullptr }, + { EOpTextureProjGradOffset, "textureProjGradOffset", nullptr }, + + { EOpNull } +}; + // For the given table of functions, add all the indicated prototypes for each // one, to be returned in the passed in decls. void AddTabledBuiltin(TString& decls, const BuiltInFunction& function) @@ -331,8 +386,10 @@ void AddTabledBuiltin(TString& decls, const BuiltInFunction& function) if (arg == function.numArguments - 1 && (function.classes & ClassLO)) decls.append("out "); if (arg == 0) { +#ifndef GLSLANG_WEB if (function.classes & ClassCV) decls.append("coherent volatile "); +#endif if (function.classes & ClassFIO) decls.append("inout "); if (function.classes & ClassFO) @@ -382,9 +439,10 @@ bool ValidVersion(const BuiltInFunction& function, int version, EProfile profile // Relate a single table of built-ins to their AST operator. // This can get called redundantly (especially for the common built-ins, when // called once per stage). This is a performance issue only, not a correctness -// concern. It is done for quality arising from simplicity, as there are subtlies +// concern. It is done for quality arising from simplicity, as there are subtleties // to get correct if instead trying to do it surgically. -void RelateTabledBuiltins(const BuiltInFunction* functions, TSymbolTable& symbolTable) +template +void RelateTabledBuiltins(const FunctionT* functions, TSymbolTable& symbolTable) { while (functions->op != EOpNull) { symbolTable.relateToOperator(functions->name, functions->op); @@ -408,10 +466,6 @@ void TBuiltIns::addTabledBuiltins(int version, EProfile profile, const SpvVersio forEachFunction(commonBuiltins, BaseFunctions); forEachFunction(stageBuiltins[EShLangFragment], DerivativeFunctions); -#ifdef GLSLANG_WEB - return; -#endif - if ((profile == EEsProfile && version >= 320) || (profile != EEsProfile && version >= 450)) forEachFunction(stageBuiltins[EShLangCompute], DerivativeFunctions); } @@ -421,6 +475,7 @@ void TBuiltIns::relateTabledBuiltins(int /* version */, EProfile /* profile */, { RelateTabledBuiltins(BaseFunctions, symbolTable); RelateTabledBuiltins(DerivativeFunctions, symbolTable); + RelateTabledBuiltins(CustomFunctions, symbolTable); } inline bool IncludeLegacy(int version, EProfile profile, const SpvVersion& spvVersion) @@ -465,7 +520,7 @@ TBuiltIns::TBuiltIns() dimMap[Esd1D] = 1; dimMap[EsdRect] = 2; dimMap[EsdBuffer] = 1; - dimMap[EsdSubpass] = 2; // potientially unused for now + dimMap[EsdSubpass] = 2; // potentially unused for now #endif } @@ -484,6 +539,10 @@ TBuiltIns::~TBuiltIns() // void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvVersion) { +#ifdef GLSLANG_WEB + version = 310; + profile = EEsProfile; +#endif addTabledBuiltins(version, profile, spvVersion); //============================================================================ @@ -1306,14 +1365,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV commonBuiltins.append( "mediump vec2 unpackHalf2x16(highp uint);" "\n"); - } -#ifndef GLSLANG_WEB - else if (profile != EEsProfile && version >= 420) { + } else if (profile != EEsProfile && version >= 420) { commonBuiltins.append( " vec2 unpackHalf2x16(highp uint);" "\n"); } +#ifndef GLSLANG_WEB if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 400)) { commonBuiltins.append( @@ -3795,6 +3853,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void EndPrimitive();" "\n"); } +#endif //============================================================================ // @@ -3824,15 +3883,20 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV ); if ((profile != EEsProfile && version >= 420) || esBarrier) { commonBuiltins.append( - "void memoryBarrierAtomicCounter();" "void memoryBarrierBuffer();" - "void memoryBarrierImage();" ); stageBuiltins[EShLangCompute].append( "void memoryBarrierShared();" "void groupMemoryBarrier();" ); } +#ifndef GLSLANG_WEB + if ((profile != EEsProfile && version >= 420) || esBarrier) { + commonBuiltins.append( + "void memoryBarrierAtomicCounter();" + "void memoryBarrierImage();" + ); + } if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { stageBuiltins[EShLangMeshNV].append( "void memoryBarrierShared();" @@ -4279,6 +4343,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } +#endif //============================================================================ // @@ -4308,6 +4373,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } +#ifndef GLSLANG_WEB //============================================================================ // // Define the interface to the mesh/task shader. @@ -5314,10 +5380,9 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c #ifdef GLSLANG_WEB const int ms = 0; #else - for (int ms = 0; ms <= 1; ++ms) + for (int ms = 0; ms <= 1; ++ms) // loop over "bool" multisample or not #endif { -#ifndef GLSLANG_WEB if ((ms || image) && shadow) continue; if (ms && profile != EEsProfile && version < 150) @@ -5326,7 +5391,6 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c continue; if (ms && profile == EEsProfile && version < 310) continue; -#endif for (int arrayed = 0; arrayed <= 1; ++arrayed) { // loop over "bool" arrayed or not #ifdef GLSLANG_WEB @@ -5431,14 +5495,12 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c } } -#ifndef GLSLANG_WEB // // sparseTexelsResidentARB() // if (profile != EEsProfile && version >= 450) { commonBuiltins.append("bool sparseTexelsResidentARB(int code);\n"); } -#endif } // @@ -5725,6 +5787,11 @@ void TBuiltIns::addSubpassSampling(TSampler sampler, const TString& typeName, in // void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile) { +#ifdef GLSLANG_WEB + profile = EEsProfile; + version = 310; +#endif + // // texturing // @@ -6005,6 +6072,11 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, // void TBuiltIns::addGatherFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile) { +#ifdef GLSLANG_WEB + profile = EEsProfile; + version = 310; +#endif + switch (sampler.dim) { case Esd2D: case EsdRect: @@ -6243,6 +6315,11 @@ void TBuiltIns::addGatherFunctions(TSampler sampler, const TString& typeName, in // void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language) { +#ifdef GLSLANG_WEB + version = 310; + profile = EEsProfile; +#endif + // // Initialize the context-dependent (resource-dependent) built-in strings for parsing. // @@ -6300,9 +6377,7 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append(builtInConstant); } -#ifdef GLSLANG_WEB - } -#else +#ifndef GLSLANG_WEB if (version >= 310) { // geometry @@ -6584,8 +6659,29 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf snprintf(builtInConstant, maxSize, "const int gl_MaxTransformFeedbackInterleavedComponents = %d;", resources.maxTransformFeedbackInterleavedComponents); s.append(builtInConstant); } +#endif } + // compute + if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 420)) { + snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxComputeWorkGroupCount = ivec3(%d,%d,%d);", resources.maxComputeWorkGroupCountX, + resources.maxComputeWorkGroupCountY, + resources.maxComputeWorkGroupCountZ); + s.append(builtInConstant); + snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxComputeWorkGroupSize = ivec3(%d,%d,%d);", resources.maxComputeWorkGroupSizeX, + resources.maxComputeWorkGroupSizeY, + resources.maxComputeWorkGroupSizeZ); + s.append(builtInConstant); + + snprintf(builtInConstant, maxSize, "const int gl_MaxComputeUniformComponents = %d;", resources.maxComputeUniformComponents); + s.append(builtInConstant); + snprintf(builtInConstant, maxSize, "const int gl_MaxComputeTextureImageUnits = %d;", resources.maxComputeTextureImageUnits); + s.append(builtInConstant); + + s.append("\n"); + } + +#ifndef GLSLANG_WEB // images (some in compute below) if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 130)) { @@ -6601,6 +6697,18 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append(builtInConstant); } + // compute + if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 420)) { + snprintf(builtInConstant, maxSize, "const int gl_MaxComputeImageUniforms = %d;", resources.maxComputeImageUniforms); + s.append(builtInConstant); + snprintf(builtInConstant, maxSize, "const int gl_MaxComputeAtomicCounters = %d;", resources.maxComputeAtomicCounters); + s.append(builtInConstant); + snprintf(builtInConstant, maxSize, "const int gl_MaxComputeAtomicCounterBuffers = %d;", resources.maxComputeAtomicCounterBuffers); + s.append(builtInConstant); + + s.append("\n"); + } + // atomic counters (some in compute below) if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 420)) { @@ -6638,31 +6746,6 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append("\n"); } - // compute - if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 420)) { - snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxComputeWorkGroupCount = ivec3(%d,%d,%d);", resources.maxComputeWorkGroupCountX, - resources.maxComputeWorkGroupCountY, - resources.maxComputeWorkGroupCountZ); - s.append(builtInConstant); - snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxComputeWorkGroupSize = ivec3(%d,%d,%d);", resources.maxComputeWorkGroupSizeX, - resources.maxComputeWorkGroupSizeY, - resources.maxComputeWorkGroupSizeZ); - s.append(builtInConstant); - - snprintf(builtInConstant, maxSize, "const int gl_MaxComputeUniformComponents = %d;", resources.maxComputeUniformComponents); - s.append(builtInConstant); - snprintf(builtInConstant, maxSize, "const int gl_MaxComputeTextureImageUnits = %d;", resources.maxComputeTextureImageUnits); - s.append(builtInConstant); - snprintf(builtInConstant, maxSize, "const int gl_MaxComputeImageUniforms = %d;", resources.maxComputeImageUniforms); - s.append(builtInConstant); - snprintf(builtInConstant, maxSize, "const int gl_MaxComputeAtomicCounters = %d;", resources.maxComputeAtomicCounters); - s.append(builtInConstant); - snprintf(builtInConstant, maxSize, "const int gl_MaxComputeAtomicCounterBuffers = %d;", resources.maxComputeAtomicCounterBuffers); - s.append(builtInConstant); - - s.append("\n"); - } - // GL_ARB_cull_distance if (profile != EEsProfile && version >= 450) { snprintf(builtInConstant, maxSize, "const int gl_MaxCullDistances = %d;", resources.maxCullDistances); @@ -6781,6 +6864,11 @@ static void BuiltInVariable(const char* blockName, const char* name, TBuiltInVar // void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable) { +#ifdef GLSLANG_WEB + version = 310; + profile = EEsProfile; +#endif + // // Tag built-in variables and functions with additional qualifier and extension information // that cannot be declared with the text strings. @@ -7547,7 +7635,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion #endif break; -#ifndef GLSLANG_WEB case EShLangCompute: BuiltInVariable("gl_NumWorkGroups", EbvNumWorkGroups, symbolTable); BuiltInVariable("gl_WorkGroupSize", EbvWorkGroupSize, symbolTable); @@ -7555,6 +7642,15 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_LocalInvocationID", EbvLocalInvocationId, symbolTable); BuiltInVariable("gl_GlobalInvocationID", EbvGlobalInvocationId, symbolTable); BuiltInVariable("gl_LocalInvocationIndex", EbvLocalInvocationIndex, symbolTable); + BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); + BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable); + +#ifndef GLSLANG_WEB + if ((profile != EEsProfile && version >= 140) || + (profile == EEsProfile && version >= 310)) { + symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); + symbolTable.setVariableExtensions("gl_ViewIndex", 1, &E_GL_EXT_multiview); + } if (profile != EEsProfile && version < 430) { symbolTable.setVariableExtensions("gl_NumWorkGroups", 1, &E_GL_ARB_compute_shader); @@ -7636,14 +7732,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } - if ((profile != EEsProfile && version >= 140) || - (profile == EEsProfile && version >= 310)) { - symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); - BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); - symbolTable.setVariableExtensions("gl_ViewIndex", 1, &E_GL_EXT_multiview); - BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable); - } - // GL_KHR_shader_subgroup if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { @@ -7674,8 +7762,10 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("dFdyCoarse", 1, &E_GL_NV_compute_shader_derivatives); symbolTable.setFunctionExtensions("fwidthCoarse", 1, &E_GL_NV_compute_shader_derivatives); } - +#endif break; + +#ifndef GLSLANG_WEB case EShLangRayGenNV: case EShLangIntersectNV: case EShLangAnyHitNV: @@ -8034,21 +8124,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion relateTabledBuiltins(version, profile, spvVersion, language, symbolTable); - symbolTable.relateToOperator("matrixCompMult", EOpMul); - // 120 and 150 are correct for both ES and desktop - if (version >= 120) { - symbolTable.relateToOperator("outerProduct", EOpOuterProduct); - symbolTable.relateToOperator("transpose", EOpTranspose); - if (version >= 150) { - symbolTable.relateToOperator("determinant", EOpDeterminant); - symbolTable.relateToOperator("inverse", EOpMatrixInverse); - } - } - - symbolTable.relateToOperator("floatBitsToInt", EOpFloatBitsToInt); - symbolTable.relateToOperator("floatBitsToUint", EOpFloatBitsToUint); - symbolTable.relateToOperator("intBitsToFloat", EOpIntBitsToFloat); - symbolTable.relateToOperator("uintBitsToFloat", EOpUintBitsToFloat); #ifndef GLSLANG_WEB symbolTable.relateToOperator("doubleBitsToInt64", EOpDoubleBitsToInt64); symbolTable.relateToOperator("doubleBitsToUint64", EOpDoubleBitsToUint64); @@ -8063,14 +8138,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("int16BitsToHalf", EOpInt16BitsToFloat16); symbolTable.relateToOperator("uint16BitsToHalf", EOpUint16BitsToFloat16); -#endif - - symbolTable.relateToOperator("packSnorm2x16", EOpPackSnorm2x16); - symbolTable.relateToOperator("unpackSnorm2x16", EOpUnpackSnorm2x16); - symbolTable.relateToOperator("packUnorm2x16", EOpPackUnorm2x16); - symbolTable.relateToOperator("unpackUnorm2x16", EOpUnpackUnorm2x16); -#ifndef GLSLANG_WEB symbolTable.relateToOperator("packSnorm4x8", EOpPackSnorm4x8); symbolTable.relateToOperator("unpackSnorm4x8", EOpUnpackSnorm4x8); symbolTable.relateToOperator("packUnorm4x8", EOpPackUnorm4x8); @@ -8078,17 +8146,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("packDouble2x32", EOpPackDouble2x32); symbolTable.relateToOperator("unpackDouble2x32", EOpUnpackDouble2x32); -#endif - - symbolTable.relateToOperator("packHalf2x16", EOpPackHalf2x16); - symbolTable.relateToOperator("unpackHalf2x16", EOpUnpackHalf2x16); symbolTable.relateToOperator("packInt2x32", EOpPackInt2x32); symbolTable.relateToOperator("unpackInt2x32", EOpUnpackInt2x32); symbolTable.relateToOperator("packUint2x32", EOpPackUint2x32); symbolTable.relateToOperator("unpackUint2x32", EOpUnpackUint2x32); -#ifndef GLSLANG_WEB symbolTable.relateToOperator("packInt2x16", EOpPackInt2x16); symbolTable.relateToOperator("unpackInt2x16", EOpUnpackInt2x16); symbolTable.relateToOperator("packUint2x16", EOpPackUint2x16); @@ -8109,11 +8172,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("unpack16", EOpUnpack16); symbolTable.relateToOperator("unpack8", EOpUnpack8); - symbolTable.relateToOperator("barrier", EOpBarrier); symbolTable.relateToOperator("controlBarrier", EOpBarrier); - symbolTable.relateToOperator("memoryBarrier", EOpMemoryBarrier); symbolTable.relateToOperator("memoryBarrierAtomicCounter", EOpMemoryBarrierAtomicCounter); - symbolTable.relateToOperator("memoryBarrierBuffer", EOpMemoryBarrierBuffer); symbolTable.relateToOperator("memoryBarrierImage", EOpMemoryBarrierImage); symbolTable.relateToOperator("atomicLoad", EOpAtomicLoad); @@ -8156,10 +8216,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("findMSB", EOpFindMSB); symbolTable.relateToOperator("helperInvocationEXT", EOpIsHelperInvocation); -#endif if (PureOperatorBuiltins) { -#ifndef GLSLANG_WEB symbolTable.relateToOperator("imageSize", EOpImageQuerySize); symbolTable.relateToOperator("imageSamples", EOpImageQuerySamples); symbolTable.relateToOperator("imageLoad", EOpImageLoad); @@ -8177,28 +8235,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("subpassLoad", EOpSubpassLoad); symbolTable.relateToOperator("subpassLoadMS", EOpSubpassLoadMS); -#endif - symbolTable.relateToOperator("textureSize", EOpTextureQuerySize); - symbolTable.relateToOperator("textureQueryLod", EOpTextureQueryLod); - symbolTable.relateToOperator("textureQueryLevels", EOpTextureQueryLevels); - symbolTable.relateToOperator("textureSamples", EOpTextureQuerySamples); - symbolTable.relateToOperator("texture", EOpTexture); - symbolTable.relateToOperator("textureProj", EOpTextureProj); - symbolTable.relateToOperator("textureLod", EOpTextureLod); - symbolTable.relateToOperator("textureOffset", EOpTextureOffset); - symbolTable.relateToOperator("texelFetch", EOpTextureFetch); - symbolTable.relateToOperator("texelFetchOffset", EOpTextureFetchOffset); - symbolTable.relateToOperator("textureProjOffset", EOpTextureProjOffset); - symbolTable.relateToOperator("textureLodOffset", EOpTextureLodOffset); - symbolTable.relateToOperator("textureProjLod", EOpTextureProjLod); - symbolTable.relateToOperator("textureProjLodOffset", EOpTextureProjLodOffset); - symbolTable.relateToOperator("textureGrad", EOpTextureGrad); - symbolTable.relateToOperator("textureGradOffset", EOpTextureGradOffset); - symbolTable.relateToOperator("textureProjGrad", EOpTextureProjGrad); - symbolTable.relateToOperator("textureProjGradOffset", EOpTextureProjGradOffset); - -#ifndef GLSLANG_WEB symbolTable.relateToOperator("textureGather", EOpTextureGather); symbolTable.relateToOperator("textureGatherOffset", EOpTextureGatherOffset); symbolTable.relateToOperator("textureGatherOffsets", EOpTextureGatherOffsets); @@ -8440,10 +8477,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("shadow2DEXT", EOpTexture); symbolTable.relateToOperator("shadow2DProjEXT", EOpTextureProj); } -#endif } -#ifndef GLSLANG_WEB switch(language) { case EShLangVertex: break; @@ -8481,8 +8516,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion break; case EShLangCompute: - symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared); - symbolTable.relateToOperator("groupMemoryBarrier", EOpGroupMemoryBarrier); symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared); if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 429e1e8d30..fcf3e71530 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -801,10 +801,8 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped // // Add a new newNode for the conversion. // - TIntermUnary* newNode = nullptr; - - TOperator newOp = EOpNull; +#ifndef GLSLANG_WEB bool convertToIntTypes = (convertTo == EbtInt8 || convertTo == EbtUint8 || convertTo == EbtInt16 || convertTo == EbtUint16 || convertTo == EbtInt || convertTo == EbtUint || @@ -838,7 +836,10 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped (node->getBasicType() == EbtFloat16 && ! convertToFloatTypes)) return nullptr; } +#endif + TIntermUnary* newNode = nullptr; + TOperator newOp = EOpNull; if (!buildConvertOp(convertTo, node->getBasicType(), newOp)) { return nullptr; } @@ -847,11 +848,14 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped newNode = addUnaryNode(newOp, node, node->getLoc(), newType); if (node->getAsConstantUnion()) { +#ifndef GLSLANG_WEB // 8/16-bit storage extensions don't support 8/16-bit constants, so don't fold conversions // to those types if ((getArithemeticInt8Enabled() || !(convertTo == EbtInt8 || convertTo == EbtUint8)) && (getArithemeticInt16Enabled() || !(convertTo == EbtInt16 || convertTo == EbtUint16)) && - (getArithemeticFloat16Enabled() || !(convertTo == EbtFloat16))) { + (getArithemeticFloat16Enabled() || !(convertTo == EbtFloat16))) +#endif + { TIntermTyped* folded = node->getAsConstantUnion()->fold(newOp, newType); if (folded) return folded; diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index b381be9b7b..619bf81dd0 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1160,6 +1160,7 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction const TQualifier& argQualifier = argType.getQualifier(); if (argQualifier.isMemory() && (argType.containsOpaque() || argType.isReference())) { const char* message = "argument cannot drop memory qualifier when passed to formal parameter"; +#ifndef GLSLANG_WEB if (argQualifier.volatil && ! formalQualifier.volatil) error(arguments->getLoc(), message, "volatile", ""); if (argQualifier.coherent && ! (formalQualifier.devicecoherent || formalQualifier.coherent)) @@ -1179,6 +1180,7 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction // Don't check 'restrict', it is different than the rest: // "...but only restrict can be taken away from a calling argument, by a formal parameter that // lacks the restrict qualifier..." +#endif } if (!builtIn && argQualifier.getFormat() != formalQualifier.getFormat()) { // we have mismatched formats, which should only be allowed if writeonly @@ -2201,7 +2203,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan break; } - if (callNode.getOp() > EOpSubgroupGuardStart && callNode.getOp() < EOpSubgroupGuardStop) { + if (callNode.isSubgroup()) { // these require SPIR-V 1.3 if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_3) error(loc, "requires SPIR-V 1.3", "subgroup op", ""); @@ -2779,6 +2781,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T // it, in which case the type comes from the argument instead of from the // constructor function. switch (op) { +#ifndef GLSLANG_WEB case EOpConstructNonuniform: if (node != nullptr && node->getAsTyped() != nullptr) { type.shallowCopy(node->getAsTyped()->getType()); @@ -2786,6 +2789,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T type.getQualifier().nonUniform = true; } break; +#endif default: type.shallowCopy(function.getType()); break; @@ -2794,10 +2798,8 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T // See if it's a matrix bool constructingMatrix = false; switch (op) { -#ifndef GLSLANG_WEB case EOpConstructTextureSampler: return constructorTextureSamplerError(loc, function); -#endif case EOpConstructMat2x2: case EOpConstructMat2x3: case EOpConstructMat2x4: @@ -3389,11 +3391,11 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali requireProfile(loc, ~EEsProfile, "fragment-shader struct input containing an array"); } break; -#ifndef GLSLANG_WEB case EShLangCompute: if (! symbolTable.atBuiltInLevel()) error(loc, "global storage input qualifier cannot be used in a compute shader", "in", ""); break; +#ifndef GLSLANG_WEB case EShLangTessControl: if (qualifier.patch) error(loc, "can only use on output in tessellation-control shader", "patch", ""); @@ -3434,10 +3436,10 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali error(loc, "cannot contain a double, int64, or uint64", GetStorageQualifierString(qualifier.storage), ""); break; -#ifndef GLSLANG_WEB case EShLangCompute: error(loc, "global storage output qualifier cannot be used in a compute shader", "out", ""); break; +#ifndef GLSLANG_WEB case EShLangTessEvaluation: if (qualifier.patch) error(loc, "can only use on input in tessellation-evaluation shader", "patch", ""); @@ -3815,10 +3817,6 @@ void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qua // for ES, if size isn't coming from an initializer, it has to be explicitly declared now, // with very few exceptions - // last member of ssbo block exception: - if (qualifier.storage == EvqBuffer && lastMember) - return; - // implicitly-sized io exceptions: switch (language) { case EShLangGeometry: @@ -3853,6 +3851,10 @@ void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qua #endif + // last member of ssbo block exception: + if (qualifier.storage == EvqBuffer && lastMember) + return; + arraySizeRequiredCheck(loc, *arraySizes); } @@ -4477,6 +4479,7 @@ void TParseContext::paramCheckFixStorage(const TSourceLoc& loc, const TStorageQu void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& qualifier, TType& type) { +#ifndef GLSLANG_WEB if (qualifier.isMemory()) { type.getQualifier().volatil = qualifier.volatil; type.getQualifier().coherent = qualifier.coherent; @@ -4489,6 +4492,7 @@ void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& quali type.getQualifier().writeonly = qualifier.writeonly; type.getQualifier().restrict = qualifier.restrict; } +#endif if (qualifier.isAuxiliary() || qualifier.isInterpolation()) @@ -5295,11 +5299,10 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi error(loc, "needs a literal integer", "buffer_reference_align", ""); return; } +#endif switch (language) { - case EShLangVertex: - break; - +#ifndef GLSLANG_WEB case EShLangTessControl: if (id == "vertices") { if (value == 0) @@ -5312,9 +5315,6 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi } break; - case EShLangTessEvaluation: - break; - case EShLangGeometry: if (id == "invocations") { profileRequires(loc, ECompatibilityProfile | ECoreProfile, 400, nullptr, "invocations"); @@ -5387,16 +5387,17 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi case EShLangTaskNV: // Fall through +#endif case EShLangCompute: if (id.compare(0, 11, "local_size_") == 0) { +#ifndef GLSLANG_WEB if (language == EShLangMeshNV || language == EShLangTaskNV) { requireExtensions(loc, 1, &E_GL_NV_mesh_shader, "gl_WorkGroupSize"); - } - else - { + } else { profileRequires(loc, EEsProfile, 310, 0, "gl_WorkGroupSize"); profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_compute_shader, "gl_WorkGroupSize"); } +#endif if (nonLiteral) error(loc, "needs a literal integer", "local_size", ""); if (id.size() == 12 && value == 0) { @@ -5434,12 +5435,11 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi } } break; + default: break; } -#endif // GLSLANG_WEB - error(loc, "there is no such layout identifier for this stage taking an assigned value", id.c_str(), ""); } @@ -7386,6 +7386,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con for (unsigned int member = 0; member < typeList.size(); ++member) { TQualifier& memberQualifier = typeList[member].type->getQualifier(); const TSourceLoc& memberLoc = typeList[member].loc; +#ifndef GLSLANG_WEB if (memberQualifier.hasStream()) { if (defaultQualification.layoutStream != memberQualifier.layoutStream) error(memberLoc, "member cannot contradict block", "stream", ""); @@ -7399,6 +7400,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con if (defaultQualification.layoutXfbBuffer != memberQualifier.layoutXfbBuffer) error(memberLoc, "member cannot contradict block (or what block inherited from global)", "xfb_buffer", ""); } +#endif if (memberQualifier.hasPacking()) error(memberLoc, "member of block cannot have a packing layout qualifier", typeList[member].type->getFieldName().c_str(), ""); @@ -7441,6 +7443,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con layoutMemberLocationArrayCheck(loc, memberWithLocation, arraySizes); +#ifndef GLSLANG_WEB // Ensure that the block has an XfbBuffer assigned. This is needed // because if the block has a XfbOffset assigned, then it is // assumed that it has implicitly assigned the current global @@ -7450,6 +7453,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con if (!currentBlockQualifier.hasXfbBuffer() && currentBlockQualifier.hasXfbOffset()) currentBlockQualifier.layoutXfbBuffer = globalOutputDefaults.layoutXfbBuffer; } +#endif // Process the members fixBlockLocations(loc, currentBlockQualifier, typeList, memberWithLocation, memberWithoutLocation); @@ -8006,6 +8010,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con else error(loc, "can only apply to 'in'", "point_mode", ""); } +#endif for (int i = 0; i < 3; ++i) { if (publicType.shaderQualifiers.localSizeNotDefault[i]) { if (publicType.qualifier.storage == EvqVaryingIn) { @@ -8022,7 +8027,9 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con } if (intermediate.getLocalSize(i) > (unsigned int)max) error(loc, "too large; see gl_MaxComputeWorkGroupSize", "local_size", ""); - } else if (language == EShLangMeshNV) { + } +#ifndef GLSLANG_WEB + else if (language == EShLangMeshNV) { switch (i) { case 0: max = resources.maxMeshWorkGroupSizeX_NV; break; case 1: max = resources.maxMeshWorkGroupSizeY_NV; break; @@ -8040,7 +8047,9 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con } if (intermediate.getLocalSize(i) > (unsigned int)max) error(loc, "too large; see gl_MaxTaskWorkGroupSizeNV", "local_size", ""); - } else { + } +#endif + else { assert(0); } @@ -8065,6 +8074,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con } } +#ifndef GLSLANG_WEB if (publicType.shaderQualifiers.earlyFragmentTests) { if (publicType.qualifier.storage == EvqVaryingIn) intermediate.setEarlyFragmentTests(); diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index 9a9b69cc40..7b0093d7b2 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -343,6 +343,7 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["const"] = CONST; (*KeywordMap)["uniform"] = UNIFORM; + (*KeywordMap)["buffer"] = BUFFER; (*KeywordMap)["in"] = IN; (*KeywordMap)["out"] = OUT; (*KeywordMap)["smooth"] = SMOOTH; @@ -410,7 +411,6 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["attribute"] = ATTRIBUTE; (*KeywordMap)["varying"] = VARYING; (*KeywordMap)["noperspective"] = NOPERSPECTIVE; - (*KeywordMap)["buffer"] = BUFFER; (*KeywordMap)["coherent"] = COHERENT; (*KeywordMap)["devicecoherent"] = DEVICECOHERENT; (*KeywordMap)["queuefamilycoherent"] = QUEUEFAMILYCOHERENT; @@ -564,10 +564,6 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["sampler2D"] = SAMPLER2D; (*KeywordMap)["samplerCube"] = SAMPLERCUBE; - (*KeywordMap)["samplerCubeArray"] = SAMPLERCUBEARRAY; - (*KeywordMap)["samplerCubeArrayShadow"] = SAMPLERCUBEARRAYSHADOW; - (*KeywordMap)["isamplerCubeArray"] = ISAMPLERCUBEARRAY; - (*KeywordMap)["usamplerCubeArray"] = USAMPLERCUBEARRAY; (*KeywordMap)["samplerCubeShadow"] = SAMPLERCUBESHADOW; (*KeywordMap)["sampler2DArray"] = SAMPLER2DARRAY; (*KeywordMap)["sampler2DArrayShadow"] = SAMPLER2DARRAYSHADOW; @@ -582,7 +578,30 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["sampler3D"] = SAMPLER3D; (*KeywordMap)["sampler2DShadow"] = SAMPLER2DSHADOW; + (*KeywordMap)["texture2D"] = TEXTURE2D; + (*KeywordMap)["textureCube"] = TEXTURECUBE; + (*KeywordMap)["texture2DArray"] = TEXTURE2DARRAY; + (*KeywordMap)["itexture2D"] = ITEXTURE2D; + (*KeywordMap)["itexture3D"] = ITEXTURE3D; + (*KeywordMap)["itextureCube"] = ITEXTURECUBE; + (*KeywordMap)["itexture2DArray"] = ITEXTURE2DARRAY; + (*KeywordMap)["utexture2D"] = UTEXTURE2D; + (*KeywordMap)["utexture3D"] = UTEXTURE3D; + (*KeywordMap)["utextureCube"] = UTEXTURECUBE; + (*KeywordMap)["utexture2DArray"] = UTEXTURE2DARRAY; + (*KeywordMap)["texture3D"] = TEXTURE3D; + + (*KeywordMap)["sampler"] = SAMPLER; + (*KeywordMap)["samplerShadow"] = SAMPLERSHADOW; + #ifndef GLSLANG_WEB + (*KeywordMap)["textureCubeArray"] = TEXTURECUBEARRAY; + (*KeywordMap)["itextureCubeArray"] = ITEXTURECUBEARRAY; + (*KeywordMap)["utextureCubeArray"] = UTEXTURECUBEARRAY; + (*KeywordMap)["samplerCubeArray"] = SAMPLERCUBEARRAY; + (*KeywordMap)["samplerCubeArrayShadow"] = SAMPLERCUBEARRAYSHADOW; + (*KeywordMap)["isamplerCubeArray"] = ISAMPLERCUBEARRAY; + (*KeywordMap)["usamplerCubeArray"] = USAMPLERCUBEARRAY; (*KeywordMap)["sampler1DArrayShadow"] = SAMPLER1DARRAYSHADOW; (*KeywordMap)["isampler1DArray"] = ISAMPLER1DARRAY; (*KeywordMap)["usampler1D"] = USAMPLER1D; @@ -609,28 +628,11 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["__samplerExternal2DY2YEXT"] = SAMPLEREXTERNAL2DY2YEXT; // GL_EXT_YUV_target - (*KeywordMap)["sampler"] = SAMPLER; - (*KeywordMap)["samplerShadow"] = SAMPLERSHADOW; - - (*KeywordMap)["texture2D"] = TEXTURE2D; - (*KeywordMap)["textureCube"] = TEXTURECUBE; - (*KeywordMap)["textureCubeArray"] = TEXTURECUBEARRAY; - (*KeywordMap)["itextureCubeArray"] = ITEXTURECUBEARRAY; - (*KeywordMap)["utextureCubeArray"] = UTEXTURECUBEARRAY; (*KeywordMap)["itexture1DArray"] = ITEXTURE1DARRAY; (*KeywordMap)["utexture1D"] = UTEXTURE1D; (*KeywordMap)["itexture1D"] = ITEXTURE1D; (*KeywordMap)["utexture1DArray"] = UTEXTURE1DARRAY; (*KeywordMap)["textureBuffer"] = TEXTUREBUFFER; - (*KeywordMap)["texture2DArray"] = TEXTURE2DARRAY; - (*KeywordMap)["itexture2D"] = ITEXTURE2D; - (*KeywordMap)["itexture3D"] = ITEXTURE3D; - (*KeywordMap)["itextureCube"] = ITEXTURECUBE; - (*KeywordMap)["itexture2DArray"] = ITEXTURE2DARRAY; - (*KeywordMap)["utexture2D"] = UTEXTURE2D; - (*KeywordMap)["utexture3D"] = UTEXTURE3D; - (*KeywordMap)["utextureCube"] = UTEXTURECUBE; - (*KeywordMap)["utexture2DArray"] = UTEXTURE2DARRAY; (*KeywordMap)["itexture2DRect"] = ITEXTURE2DRECT; (*KeywordMap)["utexture2DRect"] = UTEXTURE2DRECT; (*KeywordMap)["itextureBuffer"] = ITEXTUREBUFFER; @@ -642,7 +644,6 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["itexture2DMSArray"] = ITEXTURE2DMSARRAY; (*KeywordMap)["utexture2DMSArray"] = UTEXTURE2DMSARRAY; (*KeywordMap)["texture1D"] = TEXTURE1D; - (*KeywordMap)["texture3D"] = TEXTURE3D; (*KeywordMap)["texture2DRect"] = TEXTURE2DRECT; (*KeywordMap)["texture1DArray"] = TEXTURE1DARRAY; @@ -904,6 +905,13 @@ int TScanContext::tokenizeIdentifier() case CASE: return keyword; + case BUFFER: + afterBuffer = true; + if ((parseContext.isEsProfile() && parseContext.version < 310) || + (!parseContext.isEsProfile() && parseContext.version < 430)) + return identifierOrType(); + return keyword; + case STRUCT: afterStruct = true; return keyword; @@ -997,12 +1005,6 @@ int TScanContext::tokenizeIdentifier() if (parseContext.isEsProfile() && parseContext.version >= 300) reservedWord(); return keyword; - case BUFFER: - afterBuffer = true; - if ((parseContext.isEsProfile() && parseContext.version < 310) || - (!parseContext.isEsProfile() && parseContext.version < 430)) - return identifierOrType(); - return keyword; case PAYLOADNV: case PAYLOADINNV: case HITATTRNV: @@ -1057,13 +1059,12 @@ int TScanContext::tokenizeIdentifier() case SUBROUTINE: return es30ReservedFromGLSL(400); +#endif case SHARED: if ((parseContext.isEsProfile() && parseContext.version < 300) || (!parseContext.isEsProfile() && parseContext.version < 140)) return identifierOrType(); return keyword; -#endif - case LAYOUT: { const int numLayoutExts = 2; @@ -1321,7 +1322,6 @@ int TScanContext::tokenizeIdentifier() return keyword; return identifierOrType(); -#endif case SAMPLERCUBEARRAY: case SAMPLERCUBEARRAYSHADOW: @@ -1335,6 +1335,15 @@ int TScanContext::tokenizeIdentifier() reservedWord(); return keyword; + case TEXTURECUBEARRAY: + case ITEXTURECUBEARRAY: + case UTEXTURECUBEARRAY: + if (parseContext.spvVersion.vulkan > 0) + return keyword; + else + return identifierOrType(); +#endif + case UINT: case UVEC2: case UVEC3: @@ -1369,6 +1378,25 @@ int TScanContext::tokenizeIdentifier() } return keyword; + case TEXTURE2D: + case TEXTURECUBE: + case TEXTURE2DARRAY: + case ITEXTURE2D: + case ITEXTURE3D: + case ITEXTURECUBE: + case ITEXTURE2DARRAY: + case UTEXTURE2D: + case UTEXTURE3D: + case UTEXTURECUBE: + case UTEXTURE2DARRAY: + case TEXTURE3D: + case SAMPLER: + case SAMPLERSHADOW: + if (parseContext.spvVersion.vulkan > 0) + return keyword; + else + return identifierOrType(); + #ifndef GLSLANG_WEB case ISAMPLER1D: case ISAMPLER1DARRAY: @@ -1458,25 +1486,11 @@ int TScanContext::tokenizeIdentifier() return keyword; return identifierOrType(); - case TEXTURE2D: - case TEXTURECUBE: - case TEXTURECUBEARRAY: - case ITEXTURECUBEARRAY: - case UTEXTURECUBEARRAY: case ITEXTURE1DARRAY: case UTEXTURE1D: case ITEXTURE1D: case UTEXTURE1DARRAY: case TEXTUREBUFFER: - case TEXTURE2DARRAY: - case ITEXTURE2D: - case ITEXTURE3D: - case ITEXTURECUBE: - case ITEXTURE2DARRAY: - case UTEXTURE2D: - case UTEXTURE3D: - case UTEXTURECUBE: - case UTEXTURE2DARRAY: case ITEXTURE2DRECT: case UTEXTURE2DRECT: case ITEXTUREBUFFER: @@ -1488,11 +1502,8 @@ int TScanContext::tokenizeIdentifier() case ITEXTURE2DMSARRAY: case UTEXTURE2DMSARRAY: case TEXTURE1D: - case TEXTURE3D: case TEXTURE2DRECT: case TEXTURE1DARRAY: - case SAMPLER: - case SAMPLERSHADOW: if (parseContext.spvVersion.vulkan > 0) return keyword; else diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 9b3cdc6d35..44ce1c19d1 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -288,6 +288,11 @@ void InitializeStageSymbolTable(TBuiltInParseables& builtInParseables, int versi EShLanguage language, EShSource source, TInfoSink& infoSink, TSymbolTable** commonTable, TSymbolTable** symbolTables) { +#ifdef GLSLANG_WEB + profile = EEsProfile; + version = 310; +#endif + (*symbolTables[language]).adoptLevels(*commonTable[CommonIndex(profile, language)]); InitializeSymbolTable(builtInParseables.getStageString(language), version, profile, spvVersion, language, source, infoSink, *symbolTables[language]); @@ -304,6 +309,11 @@ void InitializeStageSymbolTable(TBuiltInParseables& builtInParseables, int versi // bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TSymbolTable** symbolTables, int version, EProfile profile, const SpvVersion& spvVersion, EShSource source) { +#ifdef GLSLANG_WEB + profile = EEsProfile; + version = 310; +#endif + std::unique_ptr builtInParseables(CreateBuiltInParseables(infoSink, source)); if (builtInParseables == nullptr) @@ -341,6 +351,7 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS (profile == EEsProfile && version >= 310)) InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangGeometry, source, infoSink, commonTable, symbolTables); +#endif // check for compute if ((profile != EEsProfile && version >= 420) || @@ -375,7 +386,6 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS (profile == EEsProfile && version >= 320)) InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTaskNV, source, infoSink, commonTable, symbolTables); -#endif return true; } @@ -871,6 +881,11 @@ bool ProcessDeferred( bool goodVersion = DeduceVersionProfile(compiler->infoSink, stage, versionNotFirst, defaultVersion, source, version, profile, spvVersion); +#ifdef GLSLANG_WEB + profile = EEsProfile; + version = 310; +#endif + bool versionWillBeError = (versionNotFound || (profile == EEsProfile && version >= 300 && versionNotFirst)); #ifndef GLSLANG_WEB bool warnVersionNotFirst = false; diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index bccf6a55a2..518ba6cd25 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -527,11 +527,11 @@ const char* StageName(EShLanguage stage) switch(stage) { case EShLangVertex: return "vertex"; case EShLangFragment: return "fragment"; + case EShLangCompute: return "compute"; #ifndef GLSLANG_WEB case EShLangTessControl: return "tessellation control"; case EShLangTessEvaluation: return "tessellation evaluation"; case EShLangGeometry: return "geometry"; - case EShLangCompute: return "compute"; case EShLangRayGenNV: return "ray-generation"; case EShLangIntersectNV: return "intersection"; case EShLangAnyHitNV: return "any-hit"; diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index 6ace038041..20f2ba40df 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -38,7 +38,7 @@ // // Do not edit the .y file, only edit the .m4 file. -// The .y bison file is not a source file, it is a derivitive of the .m4 file. +// The .y bison file is not a source file, it is a derivative of the .m4 file. // The m4 file needs to be processed by m4 to generate the .y bison file. // // Code sandwiched between a pair: @@ -49,7 +49,7 @@ // ... // GLSLANG_WEB_EXCLUDE_OFF // -// Will be exluded from the grammar when m4 is executed as: +// Will be excluded from the grammar when m4 is executed as: // // m4 -P -DGLSLANG_WEB // @@ -166,8 +166,12 @@ extern int yylex(YYSTYPE*, TParseContext&); %token SAMPLER2DARRAYSHADOW ISAMPLER2D ISAMPLER3D ISAMPLERCUBE %token ISAMPLER2DARRAY USAMPLER2D USAMPLER3D %token USAMPLERCUBE USAMPLER2DARRAY -%token SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW -%token ISAMPLERCUBEARRAY USAMPLERCUBEARRAY + +// separate image/sampler +%token SAMPLER SAMPLERSHADOW +%token TEXTURE2D TEXTURE3D TEXTURECUBE TEXTURE2DARRAY +%token ITEXTURE2D ITEXTURE3D ITEXTURECUBE ITEXTURE2DARRAY +%token UTEXTURE2D UTEXTURE3D UTEXTURECUBE UTEXTURE2DARRAY GLSLANG_WEB_EXCLUDE_ON @@ -203,6 +207,8 @@ GLSLANG_WEB_EXCLUDE_ON %token FCOOPMATNV ICOOPMATNV UCOOPMATNV // combined image/sampler +%token SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW +%token ISAMPLERCUBEARRAY USAMPLERCUBEARRAY %token SAMPLER1D SAMPLER1DARRAY SAMPLER1DARRAYSHADOW ISAMPLER1D SAMPLER1DSHADOW %token SAMPLER2DRECT SAMPLER2DRECTSHADOW ISAMPLER2DRECT USAMPLER2DRECT %token SAMPLERBUFFER ISAMPLERBUFFER USAMPLERBUFFER @@ -233,18 +239,12 @@ GLSLANG_WEB_EXCLUDE_ON %token F16IMAGECUBE F16IMAGE1DARRAY F16IMAGE2DARRAY F16IMAGECUBEARRAY %token F16IMAGEBUFFER F16IMAGE2DMS F16IMAGE2DMSARRAY -// pure sampler -%token SAMPLER SAMPLERSHADOW - // texture without sampler -%token TEXTURE1D TEXTURE2D TEXTURE3D TEXTURECUBE -%token TEXTURE1DARRAY TEXTURE2DARRAY -%token ITEXTURE1D ITEXTURE2D ITEXTURE3D ITEXTURECUBE -%token ITEXTURE1DARRAY ITEXTURE2DARRAY UTEXTURE1D UTEXTURE2D UTEXTURE3D -%token UTEXTURECUBE UTEXTURE1DARRAY UTEXTURE2DARRAY +%token TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY +%token TEXTURE1D ITEXTURE1D UTEXTURE1D +%token TEXTURE1DARRAY ITEXTURE1DARRAY UTEXTURE1DARRAY %token TEXTURE2DRECT ITEXTURE2DRECT UTEXTURE2DRECT %token TEXTUREBUFFER ITEXTUREBUFFER UTEXTUREBUFFER -%token TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY %token TEXTURE2DMS ITEXTURE2DMS UTEXTURE2DMS %token TEXTURE2DMSARRAY ITEXTURE2DMSARRAY UTEXTURE2DMSARRAY @@ -277,7 +277,7 @@ GLSLANG_WEB_EXCLUDE_OFF %token CENTROID IN OUT INOUT %token STRUCT VOID WHILE %token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT -%token UNIFORM SHARED +%token UNIFORM SHARED BUFFER %token FLAT SMOOTH LAYOUT GLSLANG_WEB_EXCLUDE_ON @@ -285,7 +285,7 @@ GLSLANG_WEB_EXCLUDE_ON %token INT64CONSTANT UINT64CONSTANT %token SUBROUTINE DEMOTE %token PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV -%token PATCH SAMPLE BUFFER NONUNIFORM +%token PATCH SAMPLE NONUNIFORM %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT %token SUBGROUPCOHERENT NONPRIVATE %token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV @@ -1360,7 +1360,6 @@ storage_qualifier $$.init($1.loc); $$.qualifier.storage = EvqUniform; } -GLSLANG_WEB_EXCLUDE_ON | SHARED { parseContext.globalCheck($1.loc, "shared"); parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -1374,6 +1373,7 @@ GLSLANG_WEB_EXCLUDE_ON $$.init($1.loc); $$.qualifier.storage = EvqBuffer; } +GLSLANG_WEB_EXCLUDE_ON | ATTRIBUTE { parseContext.requireStage($1.loc, EShLangVertex, "attribute"); parseContext.checkDeprecated($1.loc, ECoreProfile, 130, "attribute"); @@ -2354,6 +2354,16 @@ GLSLANG_WEB_EXCLUDE_OFF $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, EsdCube, false, true); } + | SAMPLER2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, Esd2D, true); + } + | SAMPLER2DARRAYSHADOW { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, Esd2D, true, true); + } GLSLANG_WEB_EXCLUDE_ON | SAMPLER1DSHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2370,17 +2380,6 @@ GLSLANG_WEB_EXCLUDE_ON $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd1D, true, true); } -GLSLANG_WEB_EXCLUDE_OFF - | SAMPLER2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D, true); - } - | SAMPLER2DARRAYSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D, true, true); - } | SAMPLERCUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2391,7 +2390,6 @@ GLSLANG_WEB_EXCLUDE_OFF $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, EsdCube, true, true); } -GLSLANG_WEB_EXCLUDE_ON | F16SAMPLER1D { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2491,50 +2489,66 @@ GLSLANG_WEB_EXCLUDE_OFF $$.basicType = EbtSampler; $$.sampler.set(EbtInt, EsdCube); } -GLSLANG_WEB_EXCLUDE_ON - | ISAMPLER1DARRAY { + | ISAMPLER2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd1D, true); + $$.sampler.set(EbtInt, Esd2D, true); } -GLSLANG_WEB_EXCLUDE_OFF - | ISAMPLER2DARRAY { + | USAMPLER2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd2D, true); + $$.sampler.set(EbtUint, Esd2D); + } + | USAMPLER3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, Esd3D); + } + | USAMPLERCUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, EsdCube); + } +GLSLANG_WEB_EXCLUDE_ON + | ISAMPLER1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtInt, Esd1D, true); } | ISAMPLERCUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtInt, EsdCube, true); } -GLSLANG_WEB_EXCLUDE_ON | USAMPLER1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtUint, Esd1D); } -GLSLANG_WEB_EXCLUDE_OFF - | USAMPLER2D { + | USAMPLER1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd2D); + $$.sampler.set(EbtUint, Esd1D, true); } - | USAMPLER3D { + | USAMPLERCUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd3D); + $$.sampler.set(EbtUint, EsdCube, true); } - | USAMPLERCUBE { + | TEXTURECUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, EsdCube); + $$.sampler.setTexture(EbtFloat, EsdCube, true); } -GLSLANG_WEB_EXCLUDE_ON - | USAMPLER1DARRAY { + | ITEXTURECUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd1D, true); + $$.sampler.setTexture(EbtInt, EsdCube, true); + } + | UTEXTURECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, EsdCube, true); } GLSLANG_WEB_EXCLUDE_OFF | USAMPLER2DARRAY { @@ -2542,10 +2556,75 @@ GLSLANG_WEB_EXCLUDE_OFF $$.basicType = EbtSampler; $$.sampler.set(EbtUint, Esd2D, true); } - | USAMPLERCUBEARRAY { + | TEXTURE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, EsdCube, true); + $$.sampler.setTexture(EbtFloat, Esd2D); + } + | TEXTURE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat, Esd3D); + } + | TEXTURE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat, Esd2D, true); + } + | TEXTURECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat, EsdCube); + } + | ITEXTURE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, Esd2D); + } + | ITEXTURE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, Esd3D); + } + | ITEXTURECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, EsdCube); + } + | ITEXTURE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, Esd2D, true); + } + | UTEXTURE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, Esd2D); + } + | UTEXTURE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, Esd3D); + } + | UTEXTURECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, EsdCube); + } + | UTEXTURE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, Esd2D, true); + } + | SAMPLER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setPureSampler(false); + } + | SAMPLERSHADOW { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setPureSampler(true); } GLSLANG_WEB_EXCLUDE_ON | SAMPLER2DRECT { @@ -2643,16 +2722,6 @@ GLSLANG_WEB_EXCLUDE_ON $$.basicType = EbtSampler; $$.sampler.set(EbtUint, Esd2D, true, false, true); } - | SAMPLER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setPureSampler(false); - } - | SAMPLERSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setPureSampler(true); - } | TEXTURE1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2664,33 +2733,18 @@ GLSLANG_WEB_EXCLUDE_ON $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd1D); } - | TEXTURE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd2D); - } | F16TEXTURE2D { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd2D); } - | TEXTURE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd3D); - } | F16TEXTURE3D { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd3D); } - | TEXTURECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, EsdCube); - } | F16TEXTURECUBE { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2708,22 +2762,12 @@ GLSLANG_WEB_EXCLUDE_ON $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd1D, true); } - | TEXTURE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd2D, true); - } | F16TEXTURE2DARRAY { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd2D, true); } - | TEXTURECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, EsdCube, true); - } | F16TEXTURECUBEARRAY { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2735,71 +2779,21 @@ GLSLANG_WEB_EXCLUDE_ON $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, Esd1D); } - | ITEXTURE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd2D); - } - | ITEXTURE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd3D); - } - | ITEXTURECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, EsdCube); - } | ITEXTURE1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, Esd1D, true); } - | ITEXTURE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd2D, true); - } - | ITEXTURECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, EsdCube, true); - } | UTEXTURE1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, Esd1D); } - | UTEXTURE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd2D); - } - | UTEXTURE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd3D); - } - | UTEXTURECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, EsdCube); - } | UTEXTURE1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, Esd1D, true); } - | UTEXTURE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd2D, true); - } - | UTEXTURECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, EsdCube, true); - } | TEXTURE2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 008faf0ee2..e263f3d7a1 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -38,7 +38,7 @@ // // Do not edit the .y file, only edit the .m4 file. -// The .y bison file is not a source file, it is a derivitive of the .m4 file. +// The .y bison file is not a source file, it is a derivative of the .m4 file. // The m4 file needs to be processed by m4 to generate the .y bison file. // // Code sandwiched between a pair: @@ -49,7 +49,7 @@ // ... // GLSLANG_WEB_EXCLUDE_OFF // -// Will be exluded from the grammar when m4 is executed as: +// Will be excluded from the grammar when m4 is executed as: // // m4 -P -DGLSLANG_WEB // @@ -166,8 +166,12 @@ extern int yylex(YYSTYPE*, TParseContext&); %token SAMPLER2DARRAYSHADOW ISAMPLER2D ISAMPLER3D ISAMPLERCUBE %token ISAMPLER2DARRAY USAMPLER2D USAMPLER3D %token USAMPLERCUBE USAMPLER2DARRAY -%token SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW -%token ISAMPLERCUBEARRAY USAMPLERCUBEARRAY + +// separate image/sampler +%token SAMPLER SAMPLERSHADOW +%token TEXTURE2D TEXTURE3D TEXTURECUBE TEXTURE2DARRAY +%token ITEXTURE2D ITEXTURE3D ITEXTURECUBE ITEXTURE2DARRAY +%token UTEXTURE2D UTEXTURE3D UTEXTURECUBE UTEXTURE2DARRAY @@ -203,6 +207,8 @@ extern int yylex(YYSTYPE*, TParseContext&); %token FCOOPMATNV ICOOPMATNV UCOOPMATNV // combined image/sampler +%token SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW +%token ISAMPLERCUBEARRAY USAMPLERCUBEARRAY %token SAMPLER1D SAMPLER1DARRAY SAMPLER1DARRAYSHADOW ISAMPLER1D SAMPLER1DSHADOW %token SAMPLER2DRECT SAMPLER2DRECTSHADOW ISAMPLER2DRECT USAMPLER2DRECT %token SAMPLERBUFFER ISAMPLERBUFFER USAMPLERBUFFER @@ -233,18 +239,12 @@ extern int yylex(YYSTYPE*, TParseContext&); %token F16IMAGECUBE F16IMAGE1DARRAY F16IMAGE2DARRAY F16IMAGECUBEARRAY %token F16IMAGEBUFFER F16IMAGE2DMS F16IMAGE2DMSARRAY -// pure sampler -%token SAMPLER SAMPLERSHADOW - // texture without sampler -%token TEXTURE1D TEXTURE2D TEXTURE3D TEXTURECUBE -%token TEXTURE1DARRAY TEXTURE2DARRAY -%token ITEXTURE1D ITEXTURE2D ITEXTURE3D ITEXTURECUBE -%token ITEXTURE1DARRAY ITEXTURE2DARRAY UTEXTURE1D UTEXTURE2D UTEXTURE3D -%token UTEXTURECUBE UTEXTURE1DARRAY UTEXTURE2DARRAY +%token TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY +%token TEXTURE1D ITEXTURE1D UTEXTURE1D +%token TEXTURE1DARRAY ITEXTURE1DARRAY UTEXTURE1DARRAY %token TEXTURE2DRECT ITEXTURE2DRECT UTEXTURE2DRECT %token TEXTUREBUFFER ITEXTUREBUFFER UTEXTUREBUFFER -%token TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY %token TEXTURE2DMS ITEXTURE2DMS UTEXTURE2DMS %token TEXTURE2DMSARRAY ITEXTURE2DMSARRAY UTEXTURE2DMSARRAY @@ -277,7 +277,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token CENTROID IN OUT INOUT %token STRUCT VOID WHILE %token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT -%token UNIFORM SHARED +%token UNIFORM SHARED BUFFER %token FLAT SMOOTH LAYOUT @@ -285,7 +285,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token INT64CONSTANT UINT64CONSTANT %token SUBROUTINE DEMOTE %token PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV -%token PATCH SAMPLE BUFFER NONUNIFORM +%token PATCH SAMPLE NONUNIFORM %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT %token SUBGROUPCOHERENT NONPRIVATE %token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV @@ -1360,7 +1360,6 @@ storage_qualifier $$.init($1.loc); $$.qualifier.storage = EvqUniform; } - | SHARED { parseContext.globalCheck($1.loc, "shared"); parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -1374,6 +1373,7 @@ storage_qualifier $$.init($1.loc); $$.qualifier.storage = EvqBuffer; } + | ATTRIBUTE { parseContext.requireStage($1.loc, EShLangVertex, "attribute"); parseContext.checkDeprecated($1.loc, ECoreProfile, 130, "attribute"); @@ -2354,6 +2354,16 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, EsdCube, false, true); } + | SAMPLER2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, Esd2D, true); + } + | SAMPLER2DARRAYSHADOW { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, Esd2D, true, true); + } | SAMPLER1DSHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2370,17 +2380,6 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd1D, true, true); } - - | SAMPLER2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D, true); - } - | SAMPLER2DARRAYSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D, true, true); - } | SAMPLERCUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2391,7 +2390,6 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, EsdCube, true, true); } - | F16SAMPLER1D { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2491,50 +2489,66 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.set(EbtInt, EsdCube); } - - | ISAMPLER1DARRAY { + | ISAMPLER2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd1D, true); + $$.sampler.set(EbtInt, Esd2D, true); + } + | USAMPLER2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, Esd2D); + } + | USAMPLER3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, Esd3D); + } + | USAMPLERCUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, EsdCube); } - | ISAMPLER2DARRAY { + | ISAMPLER1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd2D, true); + $$.sampler.set(EbtInt, Esd1D, true); } | ISAMPLERCUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtInt, EsdCube, true); } - | USAMPLER1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtUint, Esd1D); } - - | USAMPLER2D { + | USAMPLER1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd2D); + $$.sampler.set(EbtUint, Esd1D, true); } - | USAMPLER3D { + | USAMPLERCUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd3D); + $$.sampler.set(EbtUint, EsdCube, true); } - | USAMPLERCUBE { + | TEXTURECUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, EsdCube); + $$.sampler.setTexture(EbtFloat, EsdCube, true); } - - | USAMPLER1DARRAY { + | ITEXTURECUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd1D, true); + $$.sampler.setTexture(EbtInt, EsdCube, true); + } + | UTEXTURECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, EsdCube, true); } | USAMPLER2DARRAY { @@ -2542,10 +2556,75 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.set(EbtUint, Esd2D, true); } - | USAMPLERCUBEARRAY { + | TEXTURE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, EsdCube, true); + $$.sampler.setTexture(EbtFloat, Esd2D); + } + | TEXTURE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat, Esd3D); + } + | TEXTURE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat, Esd2D, true); + } + | TEXTURECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat, EsdCube); + } + | ITEXTURE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, Esd2D); + } + | ITEXTURE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, Esd3D); + } + | ITEXTURECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, EsdCube); + } + | ITEXTURE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, Esd2D, true); + } + | UTEXTURE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, Esd2D); + } + | UTEXTURE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, Esd3D); + } + | UTEXTURECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, EsdCube); + } + | UTEXTURE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, Esd2D, true); + } + | SAMPLER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setPureSampler(false); + } + | SAMPLERSHADOW { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setPureSampler(true); } | SAMPLER2DRECT { @@ -2643,16 +2722,6 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.set(EbtUint, Esd2D, true, false, true); } - | SAMPLER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setPureSampler(false); - } - | SAMPLERSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setPureSampler(true); - } | TEXTURE1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2664,33 +2733,18 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd1D); } - | TEXTURE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd2D); - } | F16TEXTURE2D { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd2D); } - | TEXTURE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd3D); - } | F16TEXTURE3D { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd3D); } - | TEXTURECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, EsdCube); - } | F16TEXTURECUBE { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2708,22 +2762,12 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd1D, true); } - | TEXTURE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd2D, true); - } | F16TEXTURE2DARRAY { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd2D, true); } - | TEXTURECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, EsdCube, true); - } | F16TEXTURECUBEARRAY { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2735,71 +2779,21 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, Esd1D); } - | ITEXTURE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd2D); - } - | ITEXTURE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd3D); - } - | ITEXTURECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, EsdCube); - } | ITEXTURE1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, Esd1D, true); } - | ITEXTURE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd2D, true); - } - | ITEXTURECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, EsdCube, true); - } | UTEXTURE1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, Esd1D); } - | UTEXTURE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd2D); - } - | UTEXTURE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd3D); - } - | UTEXTURECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, EsdCube); - } | UTEXTURE1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, Esd1D, true); } - | UTEXTURE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd2D, true); - } - | UTEXTURECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, EsdCube, true); - } | TEXTURE2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 523e4058c6..d2967973d3 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -167,227 +167,227 @@ extern int yydebug; USAMPLER3D = 299, USAMPLERCUBE = 300, USAMPLER2DARRAY = 301, - SAMPLERCUBEARRAY = 302, - SAMPLERCUBEARRAYSHADOW = 303, - ISAMPLERCUBEARRAY = 304, - USAMPLERCUBEARRAY = 305, - ATTRIBUTE = 306, - VARYING = 307, - FLOAT16_T = 308, - FLOAT32_T = 309, - DOUBLE = 310, - FLOAT64_T = 311, - INT64_T = 312, - UINT64_T = 313, - INT32_T = 314, - UINT32_T = 315, - INT16_T = 316, - UINT16_T = 317, - INT8_T = 318, - UINT8_T = 319, - I64VEC2 = 320, - I64VEC3 = 321, - I64VEC4 = 322, - U64VEC2 = 323, - U64VEC3 = 324, - U64VEC4 = 325, - I32VEC2 = 326, - I32VEC3 = 327, - I32VEC4 = 328, - U32VEC2 = 329, - U32VEC3 = 330, - U32VEC4 = 331, - I16VEC2 = 332, - I16VEC3 = 333, - I16VEC4 = 334, - U16VEC2 = 335, - U16VEC3 = 336, - U16VEC4 = 337, - I8VEC2 = 338, - I8VEC3 = 339, - I8VEC4 = 340, - U8VEC2 = 341, - U8VEC3 = 342, - U8VEC4 = 343, - DVEC2 = 344, - DVEC3 = 345, - DVEC4 = 346, - DMAT2 = 347, - DMAT3 = 348, - DMAT4 = 349, - F16VEC2 = 350, - F16VEC3 = 351, - F16VEC4 = 352, - F16MAT2 = 353, - F16MAT3 = 354, - F16MAT4 = 355, - F32VEC2 = 356, - F32VEC3 = 357, - F32VEC4 = 358, - F32MAT2 = 359, - F32MAT3 = 360, - F32MAT4 = 361, - F64VEC2 = 362, - F64VEC3 = 363, - F64VEC4 = 364, - F64MAT2 = 365, - F64MAT3 = 366, - F64MAT4 = 367, - DMAT2X2 = 368, - DMAT2X3 = 369, - DMAT2X4 = 370, - DMAT3X2 = 371, - DMAT3X3 = 372, - DMAT3X4 = 373, - DMAT4X2 = 374, - DMAT4X3 = 375, - DMAT4X4 = 376, - F16MAT2X2 = 377, - F16MAT2X3 = 378, - F16MAT2X4 = 379, - F16MAT3X2 = 380, - F16MAT3X3 = 381, - F16MAT3X4 = 382, - F16MAT4X2 = 383, - F16MAT4X3 = 384, - F16MAT4X4 = 385, - F32MAT2X2 = 386, - F32MAT2X3 = 387, - F32MAT2X4 = 388, - F32MAT3X2 = 389, - F32MAT3X3 = 390, - F32MAT3X4 = 391, - F32MAT4X2 = 392, - F32MAT4X3 = 393, - F32MAT4X4 = 394, - F64MAT2X2 = 395, - F64MAT2X3 = 396, - F64MAT2X4 = 397, - F64MAT3X2 = 398, - F64MAT3X3 = 399, - F64MAT3X4 = 400, - F64MAT4X2 = 401, - F64MAT4X3 = 402, - F64MAT4X4 = 403, - ATOMIC_UINT = 404, - ACCSTRUCTNV = 405, - FCOOPMATNV = 406, - ICOOPMATNV = 407, - UCOOPMATNV = 408, - SAMPLER1D = 409, - SAMPLER1DARRAY = 410, - SAMPLER1DARRAYSHADOW = 411, - ISAMPLER1D = 412, - SAMPLER1DSHADOW = 413, - SAMPLER2DRECT = 414, - SAMPLER2DRECTSHADOW = 415, - ISAMPLER2DRECT = 416, - USAMPLER2DRECT = 417, - SAMPLERBUFFER = 418, - ISAMPLERBUFFER = 419, - USAMPLERBUFFER = 420, - SAMPLER2DMS = 421, - ISAMPLER2DMS = 422, - USAMPLER2DMS = 423, - SAMPLER2DMSARRAY = 424, - ISAMPLER2DMSARRAY = 425, - USAMPLER2DMSARRAY = 426, - SAMPLEREXTERNALOES = 427, - SAMPLEREXTERNAL2DY2YEXT = 428, - ISAMPLER1DARRAY = 429, - USAMPLER1D = 430, - USAMPLER1DARRAY = 431, - F16SAMPLER1D = 432, - F16SAMPLER2D = 433, - F16SAMPLER3D = 434, - F16SAMPLER2DRECT = 435, - F16SAMPLERCUBE = 436, - F16SAMPLER1DARRAY = 437, - F16SAMPLER2DARRAY = 438, - F16SAMPLERCUBEARRAY = 439, - F16SAMPLERBUFFER = 440, - F16SAMPLER2DMS = 441, - F16SAMPLER2DMSARRAY = 442, - F16SAMPLER1DSHADOW = 443, - F16SAMPLER2DSHADOW = 444, - F16SAMPLER1DARRAYSHADOW = 445, - F16SAMPLER2DARRAYSHADOW = 446, - F16SAMPLER2DRECTSHADOW = 447, - F16SAMPLERCUBESHADOW = 448, - F16SAMPLERCUBEARRAYSHADOW = 449, - IMAGE1D = 450, - IIMAGE1D = 451, - UIMAGE1D = 452, - IMAGE2D = 453, - IIMAGE2D = 454, - UIMAGE2D = 455, - IMAGE3D = 456, - IIMAGE3D = 457, - UIMAGE3D = 458, - IMAGE2DRECT = 459, - IIMAGE2DRECT = 460, - UIMAGE2DRECT = 461, - IMAGECUBE = 462, - IIMAGECUBE = 463, - UIMAGECUBE = 464, - IMAGEBUFFER = 465, - IIMAGEBUFFER = 466, - UIMAGEBUFFER = 467, - IMAGE1DARRAY = 468, - IIMAGE1DARRAY = 469, - UIMAGE1DARRAY = 470, - IMAGE2DARRAY = 471, - IIMAGE2DARRAY = 472, - UIMAGE2DARRAY = 473, - IMAGECUBEARRAY = 474, - IIMAGECUBEARRAY = 475, - UIMAGECUBEARRAY = 476, - IMAGE2DMS = 477, - IIMAGE2DMS = 478, - UIMAGE2DMS = 479, - IMAGE2DMSARRAY = 480, - IIMAGE2DMSARRAY = 481, - UIMAGE2DMSARRAY = 482, - F16IMAGE1D = 483, - F16IMAGE2D = 484, - F16IMAGE3D = 485, - F16IMAGE2DRECT = 486, - F16IMAGECUBE = 487, - F16IMAGE1DARRAY = 488, - F16IMAGE2DARRAY = 489, - F16IMAGECUBEARRAY = 490, - F16IMAGEBUFFER = 491, - F16IMAGE2DMS = 492, - F16IMAGE2DMSARRAY = 493, - SAMPLER = 494, - SAMPLERSHADOW = 495, - TEXTURE1D = 496, - TEXTURE2D = 497, - TEXTURE3D = 498, - TEXTURECUBE = 499, - TEXTURE1DARRAY = 500, - TEXTURE2DARRAY = 501, - ITEXTURE1D = 502, - ITEXTURE2D = 503, - ITEXTURE3D = 504, - ITEXTURECUBE = 505, - ITEXTURE1DARRAY = 506, - ITEXTURE2DARRAY = 507, - UTEXTURE1D = 508, - UTEXTURE2D = 509, - UTEXTURE3D = 510, - UTEXTURECUBE = 511, - UTEXTURE1DARRAY = 512, - UTEXTURE2DARRAY = 513, - TEXTURE2DRECT = 514, - ITEXTURE2DRECT = 515, - UTEXTURE2DRECT = 516, - TEXTUREBUFFER = 517, - ITEXTUREBUFFER = 518, - UTEXTUREBUFFER = 519, - TEXTURECUBEARRAY = 520, - ITEXTURECUBEARRAY = 521, - UTEXTURECUBEARRAY = 522, + SAMPLER = 302, + SAMPLERSHADOW = 303, + TEXTURE2D = 304, + TEXTURE3D = 305, + TEXTURECUBE = 306, + TEXTURE2DARRAY = 307, + ITEXTURE2D = 308, + ITEXTURE3D = 309, + ITEXTURECUBE = 310, + ITEXTURE2DARRAY = 311, + UTEXTURE2D = 312, + UTEXTURE3D = 313, + UTEXTURECUBE = 314, + UTEXTURE2DARRAY = 315, + ATTRIBUTE = 316, + VARYING = 317, + FLOAT16_T = 318, + FLOAT32_T = 319, + DOUBLE = 320, + FLOAT64_T = 321, + INT64_T = 322, + UINT64_T = 323, + INT32_T = 324, + UINT32_T = 325, + INT16_T = 326, + UINT16_T = 327, + INT8_T = 328, + UINT8_T = 329, + I64VEC2 = 330, + I64VEC3 = 331, + I64VEC4 = 332, + U64VEC2 = 333, + U64VEC3 = 334, + U64VEC4 = 335, + I32VEC2 = 336, + I32VEC3 = 337, + I32VEC4 = 338, + U32VEC2 = 339, + U32VEC3 = 340, + U32VEC4 = 341, + I16VEC2 = 342, + I16VEC3 = 343, + I16VEC4 = 344, + U16VEC2 = 345, + U16VEC3 = 346, + U16VEC4 = 347, + I8VEC2 = 348, + I8VEC3 = 349, + I8VEC4 = 350, + U8VEC2 = 351, + U8VEC3 = 352, + U8VEC4 = 353, + DVEC2 = 354, + DVEC3 = 355, + DVEC4 = 356, + DMAT2 = 357, + DMAT3 = 358, + DMAT4 = 359, + F16VEC2 = 360, + F16VEC3 = 361, + F16VEC4 = 362, + F16MAT2 = 363, + F16MAT3 = 364, + F16MAT4 = 365, + F32VEC2 = 366, + F32VEC3 = 367, + F32VEC4 = 368, + F32MAT2 = 369, + F32MAT3 = 370, + F32MAT4 = 371, + F64VEC2 = 372, + F64VEC3 = 373, + F64VEC4 = 374, + F64MAT2 = 375, + F64MAT3 = 376, + F64MAT4 = 377, + DMAT2X2 = 378, + DMAT2X3 = 379, + DMAT2X4 = 380, + DMAT3X2 = 381, + DMAT3X3 = 382, + DMAT3X4 = 383, + DMAT4X2 = 384, + DMAT4X3 = 385, + DMAT4X4 = 386, + F16MAT2X2 = 387, + F16MAT2X3 = 388, + F16MAT2X4 = 389, + F16MAT3X2 = 390, + F16MAT3X3 = 391, + F16MAT3X4 = 392, + F16MAT4X2 = 393, + F16MAT4X3 = 394, + F16MAT4X4 = 395, + F32MAT2X2 = 396, + F32MAT2X3 = 397, + F32MAT2X4 = 398, + F32MAT3X2 = 399, + F32MAT3X3 = 400, + F32MAT3X4 = 401, + F32MAT4X2 = 402, + F32MAT4X3 = 403, + F32MAT4X4 = 404, + F64MAT2X2 = 405, + F64MAT2X3 = 406, + F64MAT2X4 = 407, + F64MAT3X2 = 408, + F64MAT3X3 = 409, + F64MAT3X4 = 410, + F64MAT4X2 = 411, + F64MAT4X3 = 412, + F64MAT4X4 = 413, + ATOMIC_UINT = 414, + ACCSTRUCTNV = 415, + FCOOPMATNV = 416, + ICOOPMATNV = 417, + UCOOPMATNV = 418, + SAMPLERCUBEARRAY = 419, + SAMPLERCUBEARRAYSHADOW = 420, + ISAMPLERCUBEARRAY = 421, + USAMPLERCUBEARRAY = 422, + SAMPLER1D = 423, + SAMPLER1DARRAY = 424, + SAMPLER1DARRAYSHADOW = 425, + ISAMPLER1D = 426, + SAMPLER1DSHADOW = 427, + SAMPLER2DRECT = 428, + SAMPLER2DRECTSHADOW = 429, + ISAMPLER2DRECT = 430, + USAMPLER2DRECT = 431, + SAMPLERBUFFER = 432, + ISAMPLERBUFFER = 433, + USAMPLERBUFFER = 434, + SAMPLER2DMS = 435, + ISAMPLER2DMS = 436, + USAMPLER2DMS = 437, + SAMPLER2DMSARRAY = 438, + ISAMPLER2DMSARRAY = 439, + USAMPLER2DMSARRAY = 440, + SAMPLEREXTERNALOES = 441, + SAMPLEREXTERNAL2DY2YEXT = 442, + ISAMPLER1DARRAY = 443, + USAMPLER1D = 444, + USAMPLER1DARRAY = 445, + F16SAMPLER1D = 446, + F16SAMPLER2D = 447, + F16SAMPLER3D = 448, + F16SAMPLER2DRECT = 449, + F16SAMPLERCUBE = 450, + F16SAMPLER1DARRAY = 451, + F16SAMPLER2DARRAY = 452, + F16SAMPLERCUBEARRAY = 453, + F16SAMPLERBUFFER = 454, + F16SAMPLER2DMS = 455, + F16SAMPLER2DMSARRAY = 456, + F16SAMPLER1DSHADOW = 457, + F16SAMPLER2DSHADOW = 458, + F16SAMPLER1DARRAYSHADOW = 459, + F16SAMPLER2DARRAYSHADOW = 460, + F16SAMPLER2DRECTSHADOW = 461, + F16SAMPLERCUBESHADOW = 462, + F16SAMPLERCUBEARRAYSHADOW = 463, + IMAGE1D = 464, + IIMAGE1D = 465, + UIMAGE1D = 466, + IMAGE2D = 467, + IIMAGE2D = 468, + UIMAGE2D = 469, + IMAGE3D = 470, + IIMAGE3D = 471, + UIMAGE3D = 472, + IMAGE2DRECT = 473, + IIMAGE2DRECT = 474, + UIMAGE2DRECT = 475, + IMAGECUBE = 476, + IIMAGECUBE = 477, + UIMAGECUBE = 478, + IMAGEBUFFER = 479, + IIMAGEBUFFER = 480, + UIMAGEBUFFER = 481, + IMAGE1DARRAY = 482, + IIMAGE1DARRAY = 483, + UIMAGE1DARRAY = 484, + IMAGE2DARRAY = 485, + IIMAGE2DARRAY = 486, + UIMAGE2DARRAY = 487, + IMAGECUBEARRAY = 488, + IIMAGECUBEARRAY = 489, + UIMAGECUBEARRAY = 490, + IMAGE2DMS = 491, + IIMAGE2DMS = 492, + UIMAGE2DMS = 493, + IMAGE2DMSARRAY = 494, + IIMAGE2DMSARRAY = 495, + UIMAGE2DMSARRAY = 496, + F16IMAGE1D = 497, + F16IMAGE2D = 498, + F16IMAGE3D = 499, + F16IMAGE2DRECT = 500, + F16IMAGECUBE = 501, + F16IMAGE1DARRAY = 502, + F16IMAGE2DARRAY = 503, + F16IMAGECUBEARRAY = 504, + F16IMAGEBUFFER = 505, + F16IMAGE2DMS = 506, + F16IMAGE2DMSARRAY = 507, + TEXTURECUBEARRAY = 508, + ITEXTURECUBEARRAY = 509, + UTEXTURECUBEARRAY = 510, + TEXTURE1D = 511, + ITEXTURE1D = 512, + UTEXTURE1D = 513, + TEXTURE1DARRAY = 514, + ITEXTURE1DARRAY = 515, + UTEXTURE1DARRAY = 516, + TEXTURE2DRECT = 517, + ITEXTURE2DRECT = 518, + UTEXTURE2DRECT = 519, + TEXTUREBUFFER = 520, + ITEXTUREBUFFER = 521, + UTEXTUREBUFFER = 522, TEXTURE2DMS = 523, ITEXTURE2DMS = 524, UTEXTURE2DMS = 525, @@ -492,27 +492,27 @@ extern int yydebug; DEFAULT = 624, UNIFORM = 625, SHARED = 626, - FLAT = 627, - SMOOTH = 628, - LAYOUT = 629, - DOUBLECONSTANT = 630, - INT16CONSTANT = 631, - UINT16CONSTANT = 632, - FLOAT16CONSTANT = 633, - INT32CONSTANT = 634, - UINT32CONSTANT = 635, - INT64CONSTANT = 636, - UINT64CONSTANT = 637, - SUBROUTINE = 638, - DEMOTE = 639, - PAYLOADNV = 640, - PAYLOADINNV = 641, - HITATTRNV = 642, - CALLDATANV = 643, - CALLDATAINNV = 644, - PATCH = 645, - SAMPLE = 646, - BUFFER = 647, + BUFFER = 627, + FLAT = 628, + SMOOTH = 629, + LAYOUT = 630, + DOUBLECONSTANT = 631, + INT16CONSTANT = 632, + UINT16CONSTANT = 633, + FLOAT16CONSTANT = 634, + INT32CONSTANT = 635, + UINT32CONSTANT = 636, + INT64CONSTANT = 637, + UINT64CONSTANT = 638, + SUBROUTINE = 639, + DEMOTE = 640, + PAYLOADNV = 641, + PAYLOADINNV = 642, + HITATTRNV = 643, + CALLDATANV = 644, + CALLDATAINNV = 645, + PATCH = 646, + SAMPLE = 647, NONUNIFORM = 648, COHERENT = 649, VOLATILE = 650, @@ -960,7 +960,7 @@ static const yytype_uint16 yyrline[] = 1142, 1169, 1178, 1185, 1193, 1200, 1207, 1215, 1225, 1232, 1243, 1249, 1252, 1259, 1263, 1267, 1276, 1286, 1289, 1300, 1303, 1306, 1310, 1314, 1319, 1323, 1330, 1334, 1339, 1345, - 1351, 1358, 1364, 1372, 1377, 1389, 1403, 1409, 1414, 1422, + 1351, 1358, 1363, 1371, 1377, 1389, 1403, 1409, 1414, 1422, 1430, 1438, 1446, 1453, 1457, 1462, 1467, 1472, 1477, 1482, 1486, 1490, 1494, 1498, 1504, 1515, 1522, 1525, 1534, 1539, 1549, 1554, 1562, 1566, 1576, 1579, 1585, 1591, 1598, 1608, @@ -977,32 +977,32 @@ static const yytype_uint16 yyrline[] = 2173, 2179, 2185, 2191, 2197, 2203, 2209, 2215, 2221, 2227, 2233, 2239, 2245, 2251, 2257, 2263, 2269, 2275, 2281, 2287, 2293, 2299, 2305, 2311, 2317, 2321, 2326, 2332, 2337, 2342, - 2347, 2352, 2358, 2363, 2368, 2374, 2379, 2384, 2389, 2395, - 2401, 2407, 2413, 2419, 2425, 2431, 2437, 2443, 2449, 2455, - 2461, 2467, 2473, 2479, 2484, 2489, 2495, 2501, 2506, 2512, - 2518, 2523, 2528, 2534, 2540, 2545, 2551, 2556, 2561, 2567, - 2573, 2578, 2583, 2588, 2594, 2599, 2604, 2609, 2615, 2620, - 2625, 2630, 2636, 2641, 2646, 2651, 2656, 2661, 2667, 2672, - 2678, 2683, 2689, 2694, 2700, 2705, 2711, 2716, 2722, 2727, - 2733, 2738, 2743, 2748, 2753, 2758, 2763, 2768, 2773, 2778, - 2783, 2788, 2793, 2798, 2803, 2808, 2814, 2819, 2824, 2829, - 2835, 2840, 2845, 2850, 2856, 2861, 2866, 2871, 2877, 2882, - 2887, 2892, 2898, 2903, 2908, 2913, 2919, 2924, 2929, 2934, - 2940, 2945, 2950, 2955, 2961, 2966, 2971, 2976, 2982, 2987, - 2992, 2997, 3003, 3008, 3013, 3018, 3024, 3029, 3034, 3039, - 3045, 3050, 3055, 3060, 3066, 3071, 3076, 3081, 3087, 3092, - 3097, 3102, 3108, 3113, 3118, 3124, 3130, 3136, 3142, 3149, - 3156, 3162, 3168, 3174, 3180, 3186, 3192, 3199, 3204, 3220, - 3225, 3230, 3238, 3238, 3249, 3249, 3259, 3262, 3275, 3297, - 3324, 3328, 3334, 3339, 3350, 3354, 3360, 3371, 3374, 3381, - 3385, 3386, 3392, 3393, 3394, 3395, 3396, 3397, 3398, 3400, - 3406, 3415, 3416, 3420, 3416, 3432, 3433, 3437, 3437, 3444, - 3444, 3458, 3461, 3469, 3477, 3488, 3489, 3493, 3497, 3504, - 3511, 3515, 3523, 3527, 3540, 3544, 3551, 3551, 3571, 3574, - 3580, 3592, 3604, 3608, 3615, 3615, 3630, 3630, 3646, 3646, - 3667, 3670, 3676, 3679, 3685, 3689, 3696, 3701, 3706, 3713, - 3716, 3725, 3729, 3738, 3741, 3745, 3754, 3754, 3777, 3783, - 3786, 3791, 3794 + 2347, 2352, 2357, 2362, 2368, 2373, 2378, 2383, 2388, 2393, + 2399, 2405, 2411, 2417, 2423, 2429, 2435, 2441, 2447, 2453, + 2459, 2465, 2471, 2477, 2482, 2487, 2492, 2497, 2502, 2507, + 2513, 2518, 2523, 2528, 2533, 2538, 2543, 2548, 2554, 2559, + 2564, 2569, 2574, 2579, 2584, 2589, 2594, 2599, 2604, 2609, + 2614, 2619, 2624, 2630, 2635, 2640, 2646, 2652, 2657, 2662, + 2667, 2673, 2678, 2683, 2688, 2694, 2699, 2704, 2709, 2715, + 2720, 2725, 2730, 2736, 2742, 2748, 2754, 2759, 2765, 2771, + 2777, 2782, 2787, 2792, 2797, 2802, 2808, 2813, 2818, 2823, + 2829, 2834, 2839, 2844, 2850, 2855, 2860, 2865, 2871, 2876, + 2881, 2886, 2892, 2897, 2902, 2907, 2913, 2918, 2923, 2928, + 2934, 2939, 2944, 2949, 2955, 2960, 2965, 2970, 2976, 2981, + 2986, 2991, 2997, 3002, 3007, 3012, 3018, 3023, 3028, 3033, + 3039, 3044, 3049, 3054, 3060, 3065, 3070, 3075, 3081, 3086, + 3091, 3096, 3102, 3107, 3112, 3118, 3124, 3130, 3136, 3143, + 3150, 3156, 3162, 3168, 3174, 3180, 3186, 3193, 3198, 3214, + 3219, 3224, 3232, 3232, 3243, 3243, 3253, 3256, 3269, 3291, + 3318, 3322, 3328, 3333, 3344, 3348, 3354, 3365, 3368, 3375, + 3379, 3380, 3386, 3387, 3388, 3389, 3390, 3391, 3392, 3394, + 3400, 3409, 3410, 3414, 3410, 3426, 3427, 3431, 3431, 3438, + 3438, 3452, 3455, 3463, 3471, 3482, 3483, 3487, 3491, 3498, + 3505, 3509, 3517, 3521, 3534, 3538, 3545, 3545, 3565, 3568, + 3574, 3586, 3598, 3602, 3609, 3609, 3624, 3624, 3640, 3640, + 3661, 3664, 3670, 3673, 3679, 3683, 3690, 3695, 3700, 3707, + 3710, 3719, 3723, 3732, 3735, 3739, 3748, 3748, 3771, 3777, + 3780, 3785, 3788 }; #endif @@ -1018,9 +1018,11 @@ static const char *const yytname[] = "MAT4X4", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", "SAMPLER2DARRAY", "SAMPLER2DARRAYSHADOW", "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", "ISAMPLER2DARRAY", - "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER2DARRAY", - "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", - "USAMPLERCUBEARRAY", "ATTRIBUTE", "VARYING", "FLOAT16_T", "FLOAT32_T", + "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER2DARRAY", "SAMPLER", + "SAMPLERSHADOW", "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", + "TEXTURE2DARRAY", "ITEXTURE2D", "ITEXTURE3D", "ITEXTURECUBE", + "ITEXTURE2DARRAY", "UTEXTURE2D", "UTEXTURE3D", "UTEXTURECUBE", + "UTEXTURE2DARRAY", "ATTRIBUTE", "VARYING", "FLOAT16_T", "FLOAT32_T", "DOUBLE", "FLOAT64_T", "INT64_T", "UINT64_T", "INT32_T", "UINT32_T", "INT16_T", "UINT16_T", "INT8_T", "UINT8_T", "I64VEC2", "I64VEC3", "I64VEC4", "U64VEC2", "U64VEC3", "U64VEC4", "I32VEC2", "I32VEC3", @@ -1038,14 +1040,15 @@ static const char *const yytname[] = "F32MAT4X4", "F64MAT2X2", "F64MAT2X3", "F64MAT2X4", "F64MAT3X2", "F64MAT3X3", "F64MAT3X4", "F64MAT4X2", "F64MAT4X3", "F64MAT4X4", "ATOMIC_UINT", "ACCSTRUCTNV", "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", - "SAMPLER1D", "SAMPLER1DARRAY", "SAMPLER1DARRAYSHADOW", "ISAMPLER1D", - "SAMPLER1DSHADOW", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", - "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", - "USAMPLERBUFFER", "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS", - "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY", - "SAMPLEREXTERNALOES", "SAMPLEREXTERNAL2DY2YEXT", "ISAMPLER1DARRAY", - "USAMPLER1D", "USAMPLER1DARRAY", "F16SAMPLER1D", "F16SAMPLER2D", - "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE", + "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", + "USAMPLERCUBEARRAY", "SAMPLER1D", "SAMPLER1DARRAY", + "SAMPLER1DARRAYSHADOW", "ISAMPLER1D", "SAMPLER1DSHADOW", "SAMPLER2DRECT", + "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", "USAMPLER2DRECT", + "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", "SAMPLER2DMS", + "ISAMPLER2DMS", "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", + "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "SAMPLEREXTERNAL2DY2YEXT", + "ISAMPLER1DARRAY", "USAMPLER1D", "USAMPLER1DARRAY", "F16SAMPLER1D", + "F16SAMPLER2D", "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE", "F16SAMPLER1DARRAY", "F16SAMPLER2DARRAY", "F16SAMPLERCUBEARRAY", "F16SAMPLERBUFFER", "F16SAMPLER2DMS", "F16SAMPLER2DMSARRAY", "F16SAMPLER1DSHADOW", "F16SAMPLER2DSHADOW", "F16SAMPLER1DARRAYSHADOW", @@ -1061,40 +1064,37 @@ static const char *const yytname[] = "F16IMAGE1D", "F16IMAGE2D", "F16IMAGE3D", "F16IMAGE2DRECT", "F16IMAGECUBE", "F16IMAGE1DARRAY", "F16IMAGE2DARRAY", "F16IMAGECUBEARRAY", "F16IMAGEBUFFER", "F16IMAGE2DMS", - "F16IMAGE2DMSARRAY", "SAMPLER", "SAMPLERSHADOW", "TEXTURE1D", - "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", "TEXTURE1DARRAY", - "TEXTURE2DARRAY", "ITEXTURE1D", "ITEXTURE2D", "ITEXTURE3D", - "ITEXTURECUBE", "ITEXTURE1DARRAY", "ITEXTURE2DARRAY", "UTEXTURE1D", - "UTEXTURE2D", "UTEXTURE3D", "UTEXTURECUBE", "UTEXTURE1DARRAY", - "UTEXTURE2DARRAY", "TEXTURE2DRECT", "ITEXTURE2DRECT", "UTEXTURE2DRECT", - "TEXTUREBUFFER", "ITEXTUREBUFFER", "UTEXTUREBUFFER", "TEXTURECUBEARRAY", - "ITEXTURECUBEARRAY", "UTEXTURECUBEARRAY", "TEXTURE2DMS", "ITEXTURE2DMS", - "UTEXTURE2DMS", "TEXTURE2DMSARRAY", "ITEXTURE2DMSARRAY", - "UTEXTURE2DMSARRAY", "F16TEXTURE1D", "F16TEXTURE2D", "F16TEXTURE3D", - "F16TEXTURE2DRECT", "F16TEXTURECUBE", "F16TEXTURE1DARRAY", - "F16TEXTURE2DARRAY", "F16TEXTURECUBEARRAY", "F16TEXTUREBUFFER", - "F16TEXTURE2DMS", "F16TEXTURE2DMSARRAY", "SUBPASSINPUT", - "SUBPASSINPUTMS", "ISUBPASSINPUT", "ISUBPASSINPUTMS", "USUBPASSINPUT", - "USUBPASSINPUTMS", "F16SUBPASSINPUT", "F16SUBPASSINPUTMS", "LEFT_OP", - "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", - "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", - "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", - "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET", - "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON", - "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH", - "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", - "AMPERSAND", "QUESTION", "INVARIANT", "HIGH_PRECISION", - "MEDIUM_PRECISION", "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", - "SUPERP", "FLOATCONSTANT", "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT", - "IDENTIFIER", "TYPE_NAME", "CENTROID", "IN", "OUT", "INOUT", "STRUCT", - "VOID", "WHILE", "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF", - "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", "UNIFORM", "SHARED", - "FLAT", "SMOOTH", "LAYOUT", "DOUBLECONSTANT", "INT16CONSTANT", - "UINT16CONSTANT", "FLOAT16CONSTANT", "INT32CONSTANT", "UINT32CONSTANT", - "INT64CONSTANT", "UINT64CONSTANT", "SUBROUTINE", "DEMOTE", "PAYLOADNV", - "PAYLOADINNV", "HITATTRNV", "CALLDATANV", "CALLDATAINNV", "PATCH", - "SAMPLE", "BUFFER", "NONUNIFORM", "COHERENT", "VOLATILE", "RESTRICT", - "READONLY", "WRITEONLY", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT", + "F16IMAGE2DMSARRAY", "TEXTURECUBEARRAY", "ITEXTURECUBEARRAY", + "UTEXTURECUBEARRAY", "TEXTURE1D", "ITEXTURE1D", "UTEXTURE1D", + "TEXTURE1DARRAY", "ITEXTURE1DARRAY", "UTEXTURE1DARRAY", "TEXTURE2DRECT", + "ITEXTURE2DRECT", "UTEXTURE2DRECT", "TEXTUREBUFFER", "ITEXTUREBUFFER", + "UTEXTUREBUFFER", "TEXTURE2DMS", "ITEXTURE2DMS", "UTEXTURE2DMS", + "TEXTURE2DMSARRAY", "ITEXTURE2DMSARRAY", "UTEXTURE2DMSARRAY", + "F16TEXTURE1D", "F16TEXTURE2D", "F16TEXTURE3D", "F16TEXTURE2DRECT", + "F16TEXTURECUBE", "F16TEXTURE1DARRAY", "F16TEXTURE2DARRAY", + "F16TEXTURECUBEARRAY", "F16TEXTUREBUFFER", "F16TEXTURE2DMS", + "F16TEXTURE2DMSARRAY", "SUBPASSINPUT", "SUBPASSINPUTMS", "ISUBPASSINPUT", + "ISUBPASSINPUTMS", "USUBPASSINPUT", "USUBPASSINPUTMS", "F16SUBPASSINPUT", + "F16SUBPASSINPUTMS", "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", + "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", + "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", + "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", + "RIGHT_PAREN", "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", + "RIGHT_BRACE", "DOT", "COMMA", "COLON", "EQUAL", "SEMICOLON", "BANG", + "DASH", "TILDE", "PLUS", "STAR", "SLASH", "PERCENT", "LEFT_ANGLE", + "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", "AMPERSAND", "QUESTION", + "INVARIANT", "HIGH_PRECISION", "MEDIUM_PRECISION", "LOW_PRECISION", + "PRECISION", "PACKED", "RESOURCE", "SUPERP", "FLOATCONSTANT", + "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT", "IDENTIFIER", "TYPE_NAME", + "CENTROID", "IN", "OUT", "INOUT", "STRUCT", "VOID", "WHILE", "BREAK", + "CONTINUE", "DO", "ELSE", "FOR", "IF", "DISCARD", "RETURN", "SWITCH", + "CASE", "DEFAULT", "UNIFORM", "SHARED", "BUFFER", "FLAT", "SMOOTH", + "LAYOUT", "DOUBLECONSTANT", "INT16CONSTANT", "UINT16CONSTANT", + "FLOAT16CONSTANT", "INT32CONSTANT", "UINT32CONSTANT", "INT64CONSTANT", + "UINT64CONSTANT", "SUBROUTINE", "DEMOTE", "PAYLOADNV", "PAYLOADINNV", + "HITATTRNV", "CALLDATANV", "CALLDATAINNV", "PATCH", "SAMPLE", + "NONUNIFORM", "COHERENT", "VOLATILE", "RESTRICT", "READONLY", + "WRITEONLY", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT", "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE", "NOPERSPECTIVE", "EXPLICITINTERPAMD", "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", "PERTASKNV", "PRECISE", "$accept", "variable_identifier", @@ -1189,10 +1189,10 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -367 +#define YYPACT_NINF -453 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-367))) + (!!((Yystate) == (-453))) #define YYTABLE_NINF -528 @@ -1203,79 +1203,79 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 3994, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -13, -367, -367, -367, - -367, -367, 13, -367, -367, -367, -367, -367, 28, 40, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -2, -1, 88, - 98, 6034, 116, -367, 74, -367, -367, -367, -367, 4402, - -367, -367, -367, -367, 104, -367, -367, 730, -367, -367, - 11, -367, 136, -25, 111, -367, 8, -367, 147, -367, - 6034, -367, -367, -367, 6034, 139, 140, -367, 61, -367, - 78, -367, -367, 8391, 155, -367, -367, -367, 149, 6034, - -367, 152, -367, -309, -367, -367, 80, 6831, -367, 27, - 1138, -367, -367, -367, -367, 155, 53, -367, 7221, 69, - -367, 141, -367, 117, 8391, 8391, 8391, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, 77, -367, -367, -367, - 164, 89, 8781, 172, -367, 8391, -367, -367, -320, 176, - -367, 6034, 143, 4810, -367, 6034, 8391, -367, -25, -367, - 145, -367, -367, 138, 144, -231, 23, 65, 158, 153, - 162, 196, 197, 16, 182, 7611, -367, 185, 183, -367, - -367, 189, 180, 181, -367, 195, 198, 186, 8001, 200, - 8391, 199, 187, 122, -367, -367, 123, -367, -1, 203, - 204, -367, -367, -367, -367, -367, 1546, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -353, 176, 7221, 71, - 7221, -367, -367, 7221, 6034, -367, 169, -367, -367, -367, - 91, -367, -367, 8391, 170, -367, -367, 8391, 207, -367, - -367, -367, 8391, -367, 143, 155, 125, -367, -367, -367, - 5218, -367, -367, -367, -367, 8391, 8391, 8391, 8391, 8391, + 3994, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, 97, -453, -453, -453, + -453, -453, 6, -453, -453, -453, -453, -453, -453, -307, + -241, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -3, 95, 36, + 125, 6034, 82, -453, -22, -453, -453, -453, -453, 4402, + -453, -453, -453, -453, 131, -453, -453, 730, -453, -453, + 11, -453, 153, -28, 127, -453, 7, -453, 157, -453, + 6034, -453, -453, -453, 6034, 129, 134, -453, 13, -453, + 73, -453, -453, 8391, 162, -453, -453, -453, 161, 6034, + -453, 163, -453, -309, -453, -453, 27, 6831, -453, 16, + 1138, -453, -453, -453, -453, 162, 23, -453, 7221, 49, + -453, 138, -453, 87, 8391, 8391, 8391, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, 68, -453, -453, -453, + 174, 60, 8781, 176, -453, 8391, -453, -453, -320, 175, + -453, 6034, 142, 4810, -453, 6034, 8391, -453, -28, -453, + 143, -453, -453, 119, 128, 32, 21, 38, 158, 160, + 165, 195, 194, 18, 183, 7611, -453, 185, 184, -453, + -453, 188, 180, 181, -453, 196, 197, 190, 8001, 198, + 8391, 187, 193, 122, -453, -453, 91, -453, 95, 204, + 205, -453, -453, -453, -453, -453, 1546, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -353, 175, 7221, 69, + 7221, -453, -453, 7221, 6034, -453, 170, -453, -453, -453, + 78, -453, -453, 8391, 171, -453, -453, 8391, 207, -453, + -453, -453, 8391, -453, 142, 162, 93, -453, -453, -453, + 5218, -453, -453, -453, -453, 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, - 8391, 8391, 8391, 8391, -367, -367, -367, 206, 177, -367, - 1954, -367, -367, -367, 1954, -367, 8391, -367, -367, 135, - 8391, 60, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, 8391, 8391, -367, -367, -367, - -367, -367, -367, -367, 7221, -367, 129, -367, 5626, -367, - -367, 209, 208, -367, -367, -367, 142, 176, 143, -367, - -367, -367, -367, -367, 138, 138, 144, 144, -231, -231, - -231, -231, 23, 23, 65, 158, 153, 162, 196, 197, - 8391, -367, 214, -314, -367, 1954, 3586, 173, 3178, 93, - -367, 96, -367, -367, -367, -367, -367, 6441, -367, -367, - -367, -367, 121, 8391, 213, 177, 215, 208, 188, 6034, - 217, 221, -367, -367, 3586, 218, -367, -367, -367, 8391, - 222, -367, -367, -367, 216, 2362, 8391, -367, 219, 226, - 190, 224, 2770, -367, 227, -367, -367, 7221, -367, -367, - -367, 100, 8391, 2362, 218, -367, -367, 1954, -367, 220, - 208, -367, -367, 1954, 228, -367, -367 + 8391, 8391, 8391, 8391, -453, -453, -453, 206, 177, -453, + 1954, -453, -453, -453, 1954, -453, 8391, -453, -453, 100, + 8391, 144, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, 8391, 8391, -453, -453, -453, + -453, -453, -453, -453, 7221, -453, 140, -453, 5626, -453, + -453, 209, 208, -453, -453, -453, 123, 175, 142, -453, + -453, -453, -453, -453, 119, 119, 128, 128, 32, 32, + 32, 32, 21, 21, 38, 158, 160, 165, 195, 194, + 8391, -453, 214, 56, -453, 1954, 3586, 172, 3178, 80, + -453, 81, -453, -453, -453, -453, -453, 6441, -453, -453, + -453, -453, 146, 8391, 215, 177, 212, 208, 186, 6034, + 219, 221, -453, -453, 3586, 220, -453, -453, -453, 8391, + 222, -453, -453, -453, 216, 2362, 8391, -453, 217, 227, + 182, 225, 2770, -453, 229, -453, -453, 7221, -453, -453, + -453, 89, 8391, 2362, 220, -453, -453, 1954, -453, 224, + 208, -453, -453, 1954, 226, -453, -453 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1286,8 +1286,9 @@ static const yytype_uint16 yydefact[] = 0, 156, 203, 201, 202, 200, 207, 208, 209, 210, 211, 212, 213, 214, 215, 204, 205, 206, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 327, 328, 329, 330, 331, 335, 336, 353, 354, 355, - 357, 360, 361, 362, 364, 337, 338, 358, 365, 164, + 327, 328, 329, 330, 331, 332, 333, 353, 354, 355, + 356, 357, 358, 359, 368, 381, 382, 369, 370, 372, + 371, 373, 374, 375, 376, 377, 378, 379, 380, 164, 165, 229, 230, 228, 231, 238, 239, 236, 237, 234, 235, 232, 233, 261, 262, 263, 273, 274, 275, 258, 259, 260, 270, 271, 272, 255, 256, 257, 267, 268, @@ -1298,23 +1299,22 @@ static const yytype_uint16 yydefact[] = 291, 292, 293, 294, 295, 296, 297, 298, 299, 303, 304, 305, 306, 307, 308, 309, 310, 311, 315, 316, 317, 318, 319, 320, 321, 322, 323, 325, 324, 484, - 485, 486, 326, 333, 334, 352, 332, 366, 367, 370, - 371, 372, 374, 375, 376, 378, 379, 380, 382, 383, - 474, 475, 356, 359, 363, 339, 340, 341, 368, 342, - 346, 347, 350, 373, 377, 381, 343, 344, 348, 349, - 369, 345, 351, 430, 432, 433, 434, 436, 437, 438, - 440, 441, 442, 444, 445, 446, 448, 449, 450, 452, - 453, 454, 456, 457, 458, 460, 461, 462, 464, 465, - 466, 468, 469, 470, 472, 473, 431, 435, 439, 443, - 447, 455, 459, 463, 451, 467, 471, 384, 385, 386, - 388, 390, 392, 394, 396, 400, 401, 402, 403, 404, - 405, 407, 408, 409, 410, 411, 412, 414, 416, 417, - 418, 420, 421, 398, 406, 413, 422, 424, 425, 426, - 428, 429, 387, 389, 391, 415, 393, 395, 397, 399, + 485, 486, 337, 338, 361, 364, 326, 335, 336, 352, + 334, 383, 384, 387, 388, 389, 391, 392, 393, 395, + 396, 397, 399, 400, 474, 475, 360, 362, 363, 339, + 340, 341, 385, 342, 346, 347, 350, 390, 394, 398, + 343, 344, 348, 349, 386, 345, 351, 430, 432, 433, + 434, 436, 437, 438, 440, 441, 442, 444, 445, 446, + 448, 449, 450, 452, 453, 454, 456, 457, 458, 460, + 461, 462, 464, 465, 466, 468, 469, 470, 472, 473, + 431, 435, 439, 443, 447, 455, 459, 463, 451, 467, + 471, 365, 366, 367, 401, 410, 412, 406, 411, 413, + 414, 416, 417, 418, 420, 421, 422, 424, 425, 426, + 428, 429, 402, 403, 404, 415, 405, 407, 408, 409, 419, 423, 427, 476, 477, 480, 481, 482, 483, 478, 479, 575, 131, 489, 490, 491, 0, 488, 160, 158, - 159, 157, 0, 199, 161, 162, 133, 132, 0, 183, - 169, 170, 168, 171, 172, 166, 167, 163, 185, 173, + 159, 157, 0, 199, 161, 162, 163, 133, 132, 0, + 183, 169, 170, 168, 171, 172, 166, 167, 185, 173, 179, 180, 181, 182, 174, 175, 176, 177, 178, 134, 135, 136, 137, 138, 139, 146, 574, 0, 576, 0, 108, 107, 0, 119, 124, 153, 152, 150, 154, 0, @@ -1361,17 +1361,17 @@ static const yytype_uint16 yydefact[] = /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, 8696, -367, -81, -78, -225, -82, -20, -18, - -21, -17, -19, -16, -367, -85, -367, -98, -367, -110, - -118, 2, -367, -367, -367, 4, -367, -367, -367, 184, - 191, 192, -367, -367, -339, -367, -367, -367, -367, 102, - -367, -37, -44, -367, 9, -367, 0, -71, -367, -367, - -367, -367, 260, -367, -367, -367, -136, -137, 18, -65, - -209, -367, -94, -198, -366, -367, -134, -367, -367, -148, - -146, -367, -367, 202, -265, -87, -367, 56, -367, -111, - -367, 59, -367, -367, -367, -367, 62, -367, -367, -367, - -367, -367, -367, -367, -367, 225, -367, -367, -367, -367, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, 8696, -453, -89, -88, -122, -84, -19, -18, + -17, -16, -20, -15, -453, -85, -453, -98, -453, -110, + -119, 2, -453, -453, -453, 4, -453, -453, -453, 189, + 191, 192, -453, -453, -339, -453, -453, -453, -453, 98, + -453, -37, -44, -453, 9, -453, 0, -71, -453, -453, + -453, -453, 261, -453, -453, -453, -452, -137, 20, -68, + -209, -453, -96, -198, -326, -453, -136, -453, -453, -146, + -144, -453, -453, 200, -265, -87, -453, 57, -453, -112, + -453, 59, -453, -453, -453, -453, 61, -453, -453, -453, + -453, -453, -453, -453, -453, 228, -453, -453, -453, -453, -99 }; @@ -1397,14 +1397,14 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 353, 542, 336, 674, 338, 481, 457, 675, 484, 352, + 353, 542, 336, 550, 338, 481, 457, 363, 484, 352, 485, 486, 458, 543, 489, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 560, 561, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 618, 364, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, @@ -1428,34 +1428,34 @@ static const yytype_int16 yytable[] = 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 374, 381, 530, 409, 609, 613, - 521, 615, 474, 449, 617, 655, 549, 678, 573, 550, - 562, 563, 365, 367, 397, 391, 293, 294, 295, 708, - 381, 361, 398, 374, 517, 519, 716, 638, 639, 640, - 641, 375, 363, 475, 539, 678, 392, 708, 366, 382, - 352, 476, 451, 574, 364, 564, 565, 353, 352, 336, - 388, 338, 297, 362, 566, 567, 352, 302, 303, 397, - 375, 551, 531, 532, 375, 407, 518, 397, 589, 352, - 591, 606, 662, 352, 408, 475, 657, 475, 618, 452, - 577, -34, 523, 533, 614, 459, 410, 534, 352, 411, - 500, 460, 412, 369, 536, 665, 620, 381, 685, 499, - 537, 686, 606, 549, 606, 719, 451, 606, 451, 370, - 521, 606, 521, 622, 378, 521, 594, 595, 596, 597, - 598, 599, 600, 601, 602, 603, 383, 376, 526, 624, - 377, 527, 606, 689, 606, 604, 628, 607, 666, 629, - 667, 544, 723, 452, 390, 452, 606, 609, 688, 660, - 352, 395, 352, 628, 352, 400, 670, 555, 556, 557, - 558, 397, 559, 450, 627, 456, 659, 634, 635, 535, - 661, 549, 636, 637, 642, 643, 540, 451, 569, 405, - 406, 525, 475, 545, 568, 554, 570, 571, 718, 575, - 572, 578, 579, 581, 582, 583, 500, 663, 664, 585, - 587, 593, 586, 451, 590, 499, 521, -35, -33, 619, - 623, 592, -28, 651, 452, 609, 669, 652, 673, 606, - 691, 681, 695, 352, 693, 696, -527, 706, 694, 707, - 672, 713, 478, 712, 725, 717, 677, 726, 644, 646, - 452, 645, 714, 648, 647, 690, 360, 649, 403, 352, - 553, 402, 626, 671, 682, 721, 404, 715, 722, 521, - 401, 683, 610, 697, 677, 611, 692, 0, 612, 0, - 500, 451, 387, 0, 500, 0, 711, 0, 551, 499, + 521, 615, 474, 449, 617, 655, 549, 678, 562, 563, + 573, 365, 391, 397, 361, 560, 561, 407, 378, 397, + 381, 398, 475, 374, 517, 519, 408, 566, 567, 397, + 476, 375, 459, 392, 539, 678, 518, 366, 460, 382, + 352, 369, 451, 564, 565, 574, 362, 353, 352, 336, + 388, 338, 297, 531, 532, 475, 352, 302, 303, 708, + 375, 551, 523, 674, 375, 536, 716, 675, 589, 352, + 591, 537, -34, 352, 533, 475, 657, 708, 534, 452, + 577, 410, 614, 620, 411, 685, 686, 412, 352, 606, + 500, 606, 606, 376, 719, 665, 377, 381, 526, 499, + 606, 527, 606, 549, 628, 607, 451, 629, 451, 367, + 521, 606, 521, 622, 660, 521, 594, 595, 596, 597, + 598, 599, 600, 601, 602, 603, 293, 294, 295, 624, + 638, 639, 640, 641, 628, 604, 370, 670, 555, 556, + 557, 544, 723, 452, 558, 452, 559, 609, 688, 666, + 352, 667, 352, 383, 352, 606, 662, 606, 689, 634, + 635, 390, 636, 637, 627, 400, 659, 395, 397, 405, + 661, 549, 642, 643, 406, 450, 456, 451, 525, 535, + 540, 475, 545, 554, 568, 569, 571, 572, 718, 570, + 575, 578, 581, 579, 582, 583, 500, 663, 664, 592, + 585, 586, 590, 451, 587, 499, 521, 593, -35, -33, + 619, 623, -28, 651, 452, 609, 669, 652, 673, 606, + 681, 693, 691, 352, 695, 696, 694, 706, -527, 707, + 672, 712, 713, 478, 714, 726, 677, 717, 725, 644, + 452, 645, 648, 646, 690, 647, 553, 360, 649, 352, + 671, 402, 682, 403, 626, 715, 404, 721, 401, 521, + 722, 683, 697, 610, 677, 611, 692, 612, 0, 0, + 500, 451, 0, 0, 500, 387, 711, 0, 551, 499, 0, 705, 0, 499, 0, 0, 0, 0, 0, 0, 0, 0, 720, 0, 0, 0, 0, 0, 0, 521, 0, 0, 0, 0, 0, 0, 0, 0, 452, 679, @@ -1507,8 +1507,8 @@ static const yytype_int16 yytable[] = 294, 295, 296, 0, 0, 0, 0, 0, 0, 0, 0, 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 304, 305, 306, 307, 308, 0, 0, 0, 0, 0, - 0, 0, 0, 309, 0, 310, 311, 312, 313, 314, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 0, 0, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, 2, 3, 4, 5, 6, 7, 8, 9, @@ -1548,8 +1548,8 @@ static const yytype_int16 yytable[] = 296, 0, 0, 0, 421, 422, 423, 424, 425, 297, 298, 299, 300, 301, 302, 303, 481, 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, 491, 304, 305, - 306, 307, 308, 426, 427, 428, 429, 430, 431, 432, - 433, 309, 492, 310, 311, 312, 313, 314, 315, 316, + 306, 307, 308, 309, 426, 427, 428, 429, 430, 431, + 432, 433, 310, 492, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, @@ -1589,8 +1589,8 @@ static const yytype_int16 yytable[] = 0, 0, 421, 422, 423, 424, 425, 297, 298, 299, 300, 301, 302, 303, 481, 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, 491, 304, 305, 306, 307, - 308, 426, 427, 428, 429, 430, 431, 432, 433, 309, - 492, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 308, 309, 426, 427, 428, 429, 430, 431, 432, 433, + 310, 492, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, @@ -1629,8 +1629,8 @@ static const yytype_int16 yytable[] = 0, 0, 292, 293, 294, 295, 296, 0, 0, 0, 421, 422, 423, 424, 425, 297, 298, 299, 300, 301, 302, 303, 481, 482, 483, 484, 0, 485, 486, 487, - 488, 489, 490, 491, 304, 305, 306, 307, 308, 426, - 427, 428, 429, 430, 431, 432, 433, 309, 492, 310, + 488, 489, 490, 491, 304, 305, 306, 307, 308, 309, + 426, 427, 428, 429, 430, 431, 432, 433, 310, 492, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, 2, 3, 4, 5, @@ -1670,8 +1670,8 @@ static const yytype_int16 yytable[] = 292, 293, 294, 295, 296, 0, 0, 0, 421, 422, 423, 424, 425, 297, 298, 299, 300, 301, 302, 303, 481, 482, 483, 484, 0, 485, 486, 487, 488, 489, - 490, 491, 304, 305, 306, 307, 308, 426, 427, 428, - 429, 430, 431, 432, 433, 309, 492, 310, 311, 312, + 490, 491, 304, 305, 306, 307, 308, 309, 426, 427, + 428, 429, 430, 431, 432, 433, 310, 492, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, 2, 3, 4, 5, 6, 7, @@ -1711,8 +1711,8 @@ static const yytype_int16 yytable[] = 294, 295, 296, 0, 0, 0, 421, 422, 423, 424, 425, 297, 298, 299, 300, 301, 302, 303, 481, 482, 483, 484, 0, 485, 486, 487, 488, 489, 490, 491, - 304, 305, 306, 307, 308, 426, 427, 428, 429, 430, - 431, 432, 433, 309, 492, 310, 311, 312, 313, 314, + 304, 305, 306, 307, 308, 309, 426, 427, 428, 429, + 430, 431, 432, 433, 310, 492, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, 2, 3, 4, 5, 6, 7, 8, 9, @@ -1752,8 +1752,8 @@ static const yytype_int16 yytable[] = 296, 0, 0, 0, 421, 422, 423, 424, 425, 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 305, - 306, 307, 308, 426, 427, 428, 429, 430, 431, 432, - 433, 309, 0, 310, 311, 312, 313, 314, 315, 316, + 306, 307, 308, 309, 426, 427, 428, 429, 430, 431, + 432, 433, 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, @@ -1793,8 +1793,8 @@ static const yytype_int16 yytable[] = 0, 0, 421, 422, 423, 424, 425, 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 305, 306, 307, - 308, 426, 427, 428, 429, 430, 431, 432, 433, 309, - 0, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 308, 309, 426, 427, 428, 429, 430, 431, 432, 433, + 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, @@ -1833,8 +1833,8 @@ static const yytype_int16 yytable[] = 0, 0, 292, 293, 294, 295, 296, 0, 0, 0, 0, 0, 0, 0, 0, 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 304, 305, 306, 307, 308, 0, - 0, 0, 0, 0, 0, 0, 0, 309, 0, 310, + 0, 0, 0, 0, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 0, 0, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, 2, 3, 4, 5, @@ -1874,8 +1874,8 @@ static const yytype_int16 yytable[] = 292, 293, 294, 295, 0, 0, 0, 0, 0, 0, 0, 0, 380, 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 304, 305, 306, 307, 308, 0, 0, 0, - 0, 0, 0, 0, 0, 309, 0, 310, 311, 312, + 0, 0, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 0, 0, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, 2, 3, 4, 5, 6, 7, @@ -1915,8 +1915,8 @@ static const yytype_int16 yytable[] = 294, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 304, 305, 306, 307, 308, 0, 0, 0, 0, 0, - 0, 0, 0, 309, 0, 310, 311, 312, 313, 314, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 0, 0, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, 2, 3, 4, 5, 6, 7, 8, 9, @@ -1956,8 +1956,8 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 305, - 306, 307, 308, 0, 0, 0, 0, 0, 0, 0, - 0, 309, 0, 310, 311, 312, 313, 314, 315, 316, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 0, + 0, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, @@ -1997,8 +1997,8 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 305, 306, 307, - 308, 0, 0, 0, 0, 0, 0, 0, 0, 309, - 0, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 308, 309, 0, 0, 0, 0, 0, 0, 0, 0, + 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, @@ -2037,8 +2037,8 @@ static const yytype_int16 yytable[] = 0, 0, 292, 293, 294, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 304, 305, 306, 307, 308, 0, - 0, 0, 0, 0, 0, 0, 0, 309, 0, 310, + 0, 0, 0, 0, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 0, 0, 0, 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 2, 3, 4, 5, 6, @@ -2046,8 +2046,8 @@ static const yytype_int16 yytable[] = 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 0, 0, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, @@ -2078,15 +2078,15 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 426, 427, 428, 429, - 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, + 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 318, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 0, 0, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, @@ -2117,15 +2117,15 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 426, 427, 428, 429, - 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, + 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 318, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 0, 0, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, @@ -2156,15 +2156,15 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 426, 427, 428, 429, - 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, + 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 318, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 0, 0, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, @@ -2195,15 +2195,15 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 426, 427, 428, 429, - 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, + 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 318, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 0, 0, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, @@ -2234,15 +2234,15 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 426, 427, 428, 429, - 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, + 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 318, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 0, 0, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, @@ -2273,15 +2273,15 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 426, 427, 428, 429, - 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, + 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 318, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 0, 0, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, @@ -2312,8 +2312,8 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, 424, 425, 297, 0, 0, 0, 0, 302, 538, 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 462, 0, 0, 0, 426, 427, 428, 429, - 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, + 0, 0, 462, 0, 0, 0, 0, 426, 427, 428, + 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, 462, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2338,14 +2338,14 @@ static const yytype_int16 yytable[] = static const yytype_int16 yycheck[] = { - 0, 321, 0, 317, 0, 358, 315, 321, 361, 0, + 0, 321, 0, 455, 0, 358, 315, 314, 361, 0, 363, 364, 321, 333, 367, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 293, 294, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 524, 314, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, @@ -2369,34 +2369,34 @@ static const yytype_int16 yycheck[] = 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 341, 349, 416, 378, 506, 518, - 408, 520, 397, 384, 523, 580, 453, 656, 302, 455, - 297, 298, 324, 324, 316, 350, 339, 340, 341, 695, - 374, 318, 324, 370, 405, 406, 702, 562, 563, 564, - 565, 341, 314, 316, 442, 684, 371, 713, 350, 349, - 341, 324, 389, 337, 314, 332, 333, 357, 349, 357, - 360, 357, 351, 350, 299, 300, 357, 356, 357, 316, - 370, 456, 295, 296, 374, 314, 323, 316, 488, 370, - 490, 321, 322, 374, 323, 316, 584, 316, 524, 389, - 475, 314, 323, 316, 323, 315, 318, 320, 389, 321, - 400, 321, 324, 315, 315, 614, 315, 451, 315, 400, - 321, 315, 321, 550, 321, 315, 453, 321, 455, 321, - 518, 321, 520, 533, 350, 523, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 332, 321, 321, 537, - 324, 324, 321, 322, 321, 323, 321, 324, 319, 324, - 321, 451, 717, 453, 318, 455, 321, 655, 667, 324, - 451, 350, 453, 321, 455, 318, 324, 329, 330, 331, - 326, 316, 328, 324, 545, 323, 586, 558, 559, 315, - 590, 618, 560, 561, 566, 567, 314, 524, 335, 350, - 350, 350, 316, 350, 336, 350, 334, 301, 707, 317, - 303, 316, 319, 314, 324, 324, 506, 605, 606, 314, - 324, 324, 314, 550, 314, 506, 614, 314, 314, 350, - 350, 322, 315, 317, 524, 723, 317, 350, 314, 321, - 317, 358, 315, 524, 319, 314, 318, 315, 350, 323, - 650, 315, 318, 324, 324, 318, 656, 319, 568, 570, - 550, 569, 362, 572, 571, 673, 296, 573, 374, 550, - 458, 370, 544, 628, 658, 713, 374, 701, 714, 667, - 368, 658, 516, 684, 684, 516, 675, -1, 516, -1, - 580, 618, 357, -1, 584, -1, 696, -1, 673, 580, + 408, 520, 397, 384, 523, 580, 453, 656, 297, 298, + 302, 324, 350, 316, 318, 293, 294, 314, 350, 316, + 374, 324, 316, 370, 405, 406, 323, 299, 300, 316, + 324, 341, 315, 371, 442, 684, 323, 350, 321, 349, + 341, 315, 389, 332, 333, 337, 350, 357, 349, 357, + 360, 357, 351, 295, 296, 316, 357, 356, 357, 695, + 370, 456, 323, 317, 374, 315, 702, 321, 488, 370, + 490, 321, 314, 374, 316, 316, 584, 713, 320, 389, + 475, 318, 323, 315, 321, 315, 315, 324, 389, 321, + 400, 321, 321, 321, 315, 614, 324, 451, 321, 400, + 321, 324, 321, 550, 321, 324, 453, 324, 455, 324, + 518, 321, 520, 533, 324, 523, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 339, 340, 341, 537, + 562, 563, 564, 565, 321, 323, 321, 324, 329, 330, + 331, 451, 717, 453, 326, 455, 328, 655, 667, 319, + 451, 321, 453, 332, 455, 321, 322, 321, 322, 558, + 559, 318, 560, 561, 545, 318, 586, 350, 316, 350, + 590, 618, 566, 567, 350, 324, 323, 524, 350, 315, + 314, 316, 350, 350, 336, 335, 301, 303, 707, 334, + 317, 316, 314, 319, 324, 324, 506, 605, 606, 322, + 314, 314, 314, 550, 324, 506, 614, 324, 314, 314, + 350, 350, 315, 317, 524, 723, 317, 350, 314, 321, + 358, 319, 317, 524, 315, 314, 350, 315, 318, 323, + 650, 324, 315, 318, 362, 319, 656, 318, 324, 568, + 550, 569, 572, 570, 673, 571, 458, 296, 573, 550, + 628, 370, 658, 374, 544, 701, 374, 713, 368, 667, + 714, 658, 684, 516, 684, 516, 675, 516, -1, -1, + 580, 618, -1, -1, 584, 357, 696, -1, 673, 580, -1, 689, -1, 584, -1, -1, -1, -1, -1, -1, -1, -1, 712, -1, -1, -1, -1, -1, -1, 707, -1, -1, -1, -1, -1, -1, -1, -1, 618, 656, @@ -2448,8 +2448,8 @@ static const yytype_int16 yycheck[] = 340, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, 351, 352, 353, 354, 355, 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - -1, -1, -1, 383, -1, 385, 386, 387, 388, 389, + 370, 371, 372, 373, 374, 375, -1, -1, -1, -1, + -1, -1, -1, -1, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 3, 4, 5, 6, 7, 8, 9, 10, 11, @@ -2694,7 +2694,7 @@ static const yytype_int16 yycheck[] = 352, 353, 354, 355, 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, -1, 385, 386, 387, 388, 389, 390, 391, + 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, @@ -2735,7 +2735,7 @@ static const yytype_int16 yycheck[] = 354, 355, 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - -1, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, @@ -2774,8 +2774,8 @@ static const yytype_int16 yycheck[] = -1, -1, 338, 339, 340, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, 351, 352, 353, 354, 355, 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 370, 371, 372, 373, 374, -1, - -1, -1, -1, -1, -1, -1, -1, 383, -1, 385, + -1, -1, -1, -1, 370, 371, 372, 373, 374, 375, + -1, -1, -1, -1, -1, -1, -1, -1, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 3, 4, 5, 6, 7, @@ -2815,8 +2815,8 @@ static const yytype_int16 yycheck[] = 338, 339, 340, 341, -1, -1, -1, -1, -1, -1, -1, -1, 350, 351, 352, 353, 354, 355, 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 370, 371, 372, 373, 374, -1, -1, -1, - -1, -1, -1, -1, -1, 383, -1, 385, 386, 387, + -1, -1, 370, 371, 372, 373, 374, 375, -1, -1, + -1, -1, -1, -1, -1, -1, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 3, 4, 5, 6, 7, 8, 9, @@ -2856,8 +2856,8 @@ static const yytype_int16 yycheck[] = 340, 341, -1, -1, -1, -1, -1, -1, -1, -1, -1, 351, 352, 353, 354, 355, 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - -1, -1, -1, 383, -1, 385, 386, 387, 388, 389, + 370, 371, 372, 373, 374, 375, -1, -1, -1, -1, + -1, -1, -1, -1, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 3, 4, 5, 6, 7, 8, 9, 10, 11, @@ -2897,8 +2897,8 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, 351, 352, 353, 354, 355, 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, -1, -1, - -1, 383, -1, 385, 386, 387, 388, 389, 390, 391, + 372, 373, 374, 375, -1, -1, -1, -1, -1, -1, + -1, -1, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, @@ -2938,8 +2938,8 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, 351, 352, 353, 354, 355, 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, 372, 373, - 374, -1, -1, -1, -1, -1, -1, -1, -1, 383, - -1, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 374, 375, -1, -1, -1, -1, -1, -1, -1, -1, + 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, @@ -2978,8 +2978,8 @@ static const yytype_int16 yycheck[] = -1, -1, 338, 339, 340, 341, -1, -1, -1, -1, -1, -1, -1, -1, -1, 351, 352, 353, 354, 355, 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 370, 371, 372, 373, 374, -1, - -1, -1, -1, -1, -1, -1, -1, 383, -1, 385, + -1, -1, -1, -1, 370, 371, 372, 373, 374, 375, + -1, -1, -1, -1, -1, -1, -1, -1, 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 4, 5, 6, 7, 8, @@ -2987,8 +2987,8 @@ static const yytype_int16 yycheck[] = 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, @@ -3019,15 +3019,15 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, + 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, @@ -3058,15 +3058,15 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, + 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, @@ -3097,15 +3097,15 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, + 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, @@ -3136,15 +3136,15 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, + 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, @@ -3175,15 +3175,15 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, + 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, @@ -3214,15 +3214,15 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, + 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, @@ -3253,8 +3253,8 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, -1, 445, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 456, -1, -1, -1, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, + -1, -1, 456, -1, -1, -1, -1, 376, 377, 378, + 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, -1, 475, -1, -1, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -3311,8 +3311,8 @@ static const yytype_uint16 yystos[] = 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 324, 338, 339, 340, 341, 342, 351, 352, 353, - 354, 355, 356, 357, 370, 371, 372, 373, 374, 383, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 354, 355, 356, 357, 370, 371, 372, 373, 374, 375, + 384, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 442, 443, 446, 447, 448, 449, 453, 454, 455, 456, 457, 458, 461, 462, @@ -3323,14 +3323,14 @@ static const yytype_uint16 yystos[] = 318, 350, 371, 459, 460, 350, 466, 316, 324, 468, 318, 494, 451, 450, 452, 350, 350, 314, 323, 468, 318, 321, 324, 445, 295, 296, 314, 325, 326, 327, - 328, 346, 347, 348, 349, 350, 375, 376, 377, 378, - 379, 380, 381, 382, 412, 413, 414, 416, 417, 418, + 328, 346, 347, 348, 349, 350, 376, 377, 378, 379, + 380, 381, 382, 383, 412, 413, 414, 416, 417, 418, 419, 420, 421, 422, 423, 424, 465, 467, 471, 468, 324, 462, 467, 477, 478, 475, 323, 315, 321, 315, 321, 317, 423, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 316, 324, 316, 318, 319, 324, 358, 359, 360, 361, 363, 364, 365, 366, 367, - 368, 369, 384, 423, 436, 438, 440, 442, 446, 465, + 368, 369, 385, 423, 436, 438, 440, 442, 446, 465, 467, 483, 484, 485, 486, 487, 495, 496, 497, 498, 501, 502, 505, 506, 507, 514, 519, 468, 323, 468, 318, 438, 481, 323, 444, 350, 321, 324, 423, 423, @@ -5805,7 +5805,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 162: -#line 1364 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1363 "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"); @@ -5818,7 +5818,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 163: -#line 1372 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1371 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); @@ -7619,21 +7619,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 332: -#line 2358 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2357 "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); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } #line 7629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 333: -#line 2363 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2362 "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); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } #line 7639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; @@ -7643,33 +7643,33 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (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); + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } #line 7649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 335: -#line 2374 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2373 "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); + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } #line 7659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 336: -#line 2379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2378 "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); + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } #line 7669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 337: -#line 2384 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2383 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -7679,7 +7679,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 338: -#line 2389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -7689,7 +7689,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 339: -#line 2395 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2393 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -7700,7 +7700,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 340: -#line 2401 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2399 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -7711,7 +7711,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 341: -#line 2407 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2405 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -7722,7 +7722,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 342: -#line 2413 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2411 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -7733,7 +7733,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 343: -#line 2419 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2417 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -7744,7 +7744,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 344: -#line 2425 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2423 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -7755,7 +7755,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 345: -#line 2431 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2429 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -7766,7 +7766,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 346: -#line 2437 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2435 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -7777,7 +7777,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 347: -#line 2443 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2441 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -7788,7 +7788,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 348: -#line 2449 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2447 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -7799,7 +7799,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 349: -#line 2455 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -7810,7 +7810,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 350: -#line 2461 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2459 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -7821,7 +7821,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 351: -#line 2467 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2465 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -7832,7 +7832,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 352: -#line 2473 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2471 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -7842,7 +7842,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 353: -#line 2479 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2477 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -7852,7 +7852,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 354: -#line 2484 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -7862,7 +7862,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 355: -#line 2489 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -7872,77 +7872,77 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 356: -#line 2495 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2492 "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); + (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } #line 7882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 357: -#line 2501 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2497 "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); + (yyval.interm.type).sampler.set(EbtUint, Esd2D); } #line 7892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 358: -#line 2506 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2502 "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); + (yyval.interm.type).sampler.set(EbtUint, Esd3D); } #line 7902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 359: -#line 2512 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2507 "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); + (yyval.interm.type).sampler.set(EbtUint, EsdCube); } #line 7912 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 360: -#line 2518 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2513 "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); + (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } #line 7922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 361: -#line 2523 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2518 "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); + (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } #line 7932 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 362: -#line 2528 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2523 "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); + (yyval.interm.type).sampler.set(EbtUint, Esd1D); } #line 7942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 363: -#line 2534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2528 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -7952,519 +7952,519 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 364: -#line 2540 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2533 "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); + (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } #line 7962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 365: -#line 2545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2538 "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); + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } #line 7972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 366: -#line 2551 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2543 "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); + (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } #line 7982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 367: -#line 2556 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2548 "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); + (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } #line 7992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 368: -#line 2561 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2554 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); + (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 8003 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8002 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 369: -#line 2567 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2559 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 8014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 370: -#line 2573 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2564 "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); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 8024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 371: -#line 2578 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2569 "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); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 8034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 372: -#line 2583 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2574 "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); + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 8044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8042 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 373: -#line 2588 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 8055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8052 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 374: -#line 2594 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2584 "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); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 8065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 375: -#line 2599 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2589 "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); + (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 8075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 376: -#line 2604 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2594 "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); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 8085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 377: -#line 2609 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2599 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 8096 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 378: -#line 2615 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2604 "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); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 8106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 379: -#line 2620 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2609 "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); + (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 8116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 380: -#line 2625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2614 "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); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 8126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 381: -#line 2630 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2619 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); + (yyval.interm.type).sampler.setPureSampler(false); } -#line 8137 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 382: -#line 2636 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2624 "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); + (yyval.interm.type).sampler.setPureSampler(true); } -#line 8147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8142 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 383: -#line 2641 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2630 "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); + (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 8157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8152 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 384: -#line 2646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2635 "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); + (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 8167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8162 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 385: -#line 2651 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2640 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setPureSampler(true); + (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 8177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 386: -#line 2656 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); + (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 8187 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 387: -#line 2661 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2652 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); + (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 8198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 388: -#line 2667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2657 "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); + (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 8208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 389: -#line 2672 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2662 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); + (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 8219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 390: -#line 2678 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); + (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 8229 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 391: -#line 2683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2673 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); + (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 8240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8235 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 392: -#line 2689 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2678 "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); + (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 8250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8245 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 393: -#line 2694 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 8261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 394: -#line 2700 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2688 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); + (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 8271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8266 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 395: -#line 2705 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2694 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); + (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 8282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 396: -#line 2711 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2699 "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); + (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 8292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 397: -#line 2716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2704 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 8303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 398: -#line 2722 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2709 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); + (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 8313 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8307 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 399: -#line 2727 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2715 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); + (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 8324 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8317 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 400: -#line 2733 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2720 "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); + (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 8334 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 401: -#line 2738 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2725 "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); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 8344 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 402: -#line 2743 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2730 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 8354 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 403: -#line 2748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 8364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 404: -#line 2753 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2742 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 8374 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 405: -#line 2758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); + (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 8384 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 406: -#line 2763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2754 "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); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 8394 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 407: -#line 2768 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2759 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 8404 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 408: -#line 2773 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2765 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 8414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 409: -#line 2778 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2771 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); + (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } #line 8424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 410: -#line 2783 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2777 "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); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } #line 8434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 411: -#line 2788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2782 "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); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } #line 8444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 412: -#line 2793 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2787 "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); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } #line 8454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 413: -#line 2798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2792 "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); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } #line 8464 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 414: -#line 2803 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2797 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8474,7 +8474,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 415: -#line 2808 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2802 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -8485,7 +8485,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 416: -#line 2814 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2808 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8495,7 +8495,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 417: -#line 2819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8505,7 +8505,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 418: -#line 2824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2818 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8515,7 +8515,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 419: -#line 2829 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2823 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -8526,7 +8526,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 420: -#line 2835 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2829 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8536,7 +8536,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 421: -#line 2840 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2834 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8546,7 +8546,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 422: -#line 2845 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2839 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8556,7 +8556,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 423: -#line 2850 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2844 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -8567,7 +8567,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 424: -#line 2856 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2850 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8577,7 +8577,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 425: -#line 2861 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2855 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8587,7 +8587,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 426: -#line 2866 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2860 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8597,7 +8597,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 427: -#line 2871 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2865 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -8608,7 +8608,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 428: -#line 2877 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2871 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8618,7 +8618,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 429: -#line 2882 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2876 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8628,7 +8628,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 430: -#line 2887 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2881 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8638,7 +8638,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 431: -#line 2892 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2886 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -8649,7 +8649,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 432: -#line 2898 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2892 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8659,7 +8659,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 433: -#line 2903 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8669,7 +8669,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 434: -#line 2908 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2902 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8679,7 +8679,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 435: -#line 2913 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2907 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -8690,7 +8690,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 436: -#line 2919 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2913 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8700,7 +8700,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 437: -#line 2924 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2918 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8710,7 +8710,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 438: -#line 2929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2923 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8720,7 +8720,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 439: -#line 2934 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2928 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -8731,7 +8731,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 440: -#line 2940 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2934 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8741,7 +8741,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 441: -#line 2945 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8751,7 +8751,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 442: -#line 2950 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2944 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8761,7 +8761,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 443: -#line 2955 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2949 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -8772,7 +8772,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 444: -#line 2961 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2955 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8782,7 +8782,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 445: -#line 2966 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2960 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8792,7 +8792,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 446: -#line 2971 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2965 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8802,7 +8802,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 447: -#line 2976 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2970 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -8813,7 +8813,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 448: -#line 2982 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2976 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8823,7 +8823,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 449: -#line 2987 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2981 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8833,7 +8833,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 450: -#line 2992 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2986 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8843,7 +8843,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 451: -#line 2997 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2991 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -8854,7 +8854,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 452: -#line 3003 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2997 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8864,7 +8864,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 453: -#line 3008 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3002 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8874,7 +8874,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 454: -#line 3013 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3007 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8884,7 +8884,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 455: -#line 3018 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3012 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -8895,7 +8895,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 456: -#line 3024 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3018 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8905,7 +8905,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 457: -#line 3029 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3023 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8915,7 +8915,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 458: -#line 3034 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3028 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8925,7 +8925,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 459: -#line 3039 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3033 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -8936,7 +8936,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 460: -#line 3045 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3039 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8946,7 +8946,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 461: -#line 3050 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3044 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8956,7 +8956,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 462: -#line 3055 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8966,7 +8966,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 463: -#line 3060 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3054 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -8977,7 +8977,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 464: -#line 3066 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3060 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8987,7 +8987,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 465: -#line 3071 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3065 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -8997,7 +8997,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 466: -#line 3076 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3070 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -9007,7 +9007,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 467: -#line 3081 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3075 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -9018,7 +9018,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 468: -#line 3087 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3081 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -9028,7 +9028,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 469: -#line 3092 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3086 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -9038,7 +9038,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 470: -#line 3097 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3091 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -9048,7 +9048,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 471: -#line 3102 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3096 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -9059,7 +9059,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 472: -#line 3108 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3102 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -9069,7 +9069,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 473: -#line 3113 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3107 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -9079,7 +9079,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 474: -#line 3118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3112 "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; @@ -9090,7 +9090,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 475: -#line 3124 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; @@ -9101,7 +9101,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 476: -#line 3130 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3124 "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()); @@ -9112,7 +9112,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 477: -#line 3136 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3130 "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()); @@ -9123,7 +9123,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 478: -#line 3142 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3136 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -9135,7 +9135,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 479: -#line 3149 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3143 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -9147,7 +9147,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 480: -#line 3156 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3150 "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()); @@ -9158,7 +9158,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 481: -#line 3162 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3156 "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()); @@ -9169,7 +9169,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 482: -#line 3168 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3162 "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()); @@ -9180,7 +9180,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 483: -#line 3174 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3168 "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()); @@ -9191,7 +9191,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 484: -#line 3180 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3174 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fcoopmatCheck((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -9202,7 +9202,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 485: -#line 3186 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3180 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -9213,7 +9213,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 486: -#line 3192 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3186 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -9224,7 +9224,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 487: -#line 3199 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; @@ -9234,7 +9234,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 488: -#line 3204 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3198 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // This is for user defined type names. The lexical phase looked up the @@ -9252,7 +9252,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 489: -#line 3220 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3214 "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()); @@ -9262,7 +9262,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 490: -#line 3225 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3219 "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()); @@ -9272,7 +9272,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 491: -#line 3230 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3224 "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()); @@ -9282,13 +9282,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 492: -#line 3238 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3232 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } #line 9288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 493: -#line 3238 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3232 "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); @@ -9304,13 +9304,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 494: -#line 3249 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3243 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } #line 9310 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 495: -#line 3249 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3243 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -9322,7 +9322,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 496: -#line 3259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3253 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } @@ -9330,7 +9330,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 497: -#line 3262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3256 "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) { @@ -9345,7 +9345,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 498: -#line 3275 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3269 "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"); @@ -9372,7 +9372,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 499: -#line 3297 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3291 "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"); @@ -9401,7 +9401,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 500: -#line 3324 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3318 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); @@ -9410,7 +9410,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 501: -#line 3328 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3322 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } @@ -9418,7 +9418,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 502: -#line 3334 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3328 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; @@ -9428,7 +9428,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 503: -#line 3339 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3333 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -9441,7 +9441,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 504: -#line 3350 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3344 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } @@ -9449,7 +9449,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 505: -#line 3354 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3348 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); @@ -9460,7 +9460,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 506: -#line 3360 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3354 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); @@ -9471,7 +9471,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 507: -#line 3371 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3365 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } @@ -9479,7 +9479,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 508: -#line 3374 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3368 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } @@ -9487,73 +9487,73 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 509: -#line 3381 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3375 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 9493 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 510: -#line 3385 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 9499 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 511: -#line 3386 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3380 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 9505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 512: -#line 3392 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3386 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 9511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 513: -#line 3393 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3387 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 9517 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 514: -#line 3394 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 9523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 515: -#line 3395 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 9529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 516: -#line 3396 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3390 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 9535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 517: -#line 3397 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3391 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 9541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 518: -#line 3398 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3392 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 9547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 519: -#line 3400 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3394 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 9553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 520: -#line 3406 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3400 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); @@ -9563,13 +9563,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 521: -#line 3415 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3409 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } #line 9569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 522: -#line 3416 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3410 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; @@ -9578,7 +9578,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 523: -#line 3420 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3414 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; @@ -9587,7 +9587,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 524: -#line 3424 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3418 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); @@ -9597,19 +9597,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 525: -#line 3432 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3426 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 9603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 526: -#line 3433 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3427 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } #line 9609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 527: -#line 3437 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3431 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.controlFlowNestingLevel; } @@ -9617,7 +9617,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 528: -#line 3440 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3434 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); @@ -9626,7 +9626,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 529: -#line 3444 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; @@ -9636,7 +9636,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 530: -#line 3449 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3443 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; @@ -9647,7 +9647,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 531: -#line 3458 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3452 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } @@ -9655,7 +9655,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 532: -#line 3461 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3455 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); @@ -9665,7 +9665,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 533: -#line 3469 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3463 "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 || @@ -9678,7 +9678,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 534: -#line 3477 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3471 "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)) { @@ -9691,19 +9691,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 535: -#line 3488 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } #line 9697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 536: -#line 3489 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3483 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } #line 9703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 537: -#line 3493 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } @@ -9711,7 +9711,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 538: -#line 3497 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3491 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); @@ -9720,7 +9720,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 539: -#line 3504 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3498 "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); @@ -9729,7 +9729,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 540: -#line 3511 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3505 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); @@ -9738,7 +9738,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 541: -#line 3515 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3509 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; @@ -9747,7 +9747,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 542: -#line 3523 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3517 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); @@ -9756,7 +9756,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 543: -#line 3527 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3521 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -9771,7 +9771,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 544: -#line 3540 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } @@ -9779,7 +9779,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 545: -#line 3544 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3538 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); @@ -9788,7 +9788,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 546: -#line 3551 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -9801,7 +9801,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 547: -#line 3559 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3553 "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(); @@ -9815,7 +9815,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 548: -#line 3571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3565 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } @@ -9823,7 +9823,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 549: -#line 3574 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3568 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } @@ -9831,7 +9831,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 550: -#line 3580 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3574 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -9848,7 +9848,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 551: -#line 3592 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3586 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -9862,7 +9862,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 552: -#line 3604 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } @@ -9870,7 +9870,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 553: -#line 3608 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); @@ -9879,7 +9879,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 554: -#line 3615 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3609 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -9892,7 +9892,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 555: -#line 3623 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3617 "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); @@ -9904,7 +9904,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 556: -#line 3630 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3624 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; @@ -9914,7 +9914,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 557: -#line 3635 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3629 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -9930,7 +9930,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 558: -#line 3646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3640 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; @@ -9941,7 +9941,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 559: -#line 3652 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3646 "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); @@ -9958,7 +9958,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 560: -#line 3667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3661 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } @@ -9966,7 +9966,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 561: -#line 3670 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3664 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } @@ -9974,7 +9974,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 562: -#line 3676 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3670 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } @@ -9982,7 +9982,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 563: -#line 3679 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3673 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = 0; } @@ -9990,7 +9990,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 564: -#line 3685 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3679 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; @@ -9999,7 +9999,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 565: -#line 3689 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); @@ -10008,7 +10008,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 566: -#line 3696 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3690 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); @@ -10018,7 +10018,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 567: -#line 3701 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3695 "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", "", ""); @@ -10028,7 +10028,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 568: -#line 3706 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3700 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -10040,7 +10040,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 569: -#line 3713 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } @@ -10048,7 +10048,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 570: -#line 3716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3710 "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); @@ -10057,7 +10057,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 571: -#line 3725 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3719 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); @@ -10066,7 +10066,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 572: -#line 3729 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3723 "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)); @@ -10077,7 +10077,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 573: -#line 3738 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3732 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } @@ -10085,7 +10085,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 574: -#line 3741 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3735 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } @@ -10093,7 +10093,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 575: -#line 3745 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3739 "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"); @@ -10103,7 +10103,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 576: -#line 3754 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3748 "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); @@ -10112,7 +10112,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 577: -#line 3758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3752 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -10132,7 +10132,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 578: -#line 3777 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3771 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute"); @@ -10141,7 +10141,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 579: -#line 3783 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3777 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } @@ -10149,7 +10149,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 580: -#line 3786 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3780 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } @@ -10157,7 +10157,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 581: -#line 3791 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3785 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } @@ -10165,7 +10165,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 582: -#line 3794 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } @@ -10401,5 +10401,5 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #endif return yyresult; } -#line 3799 "MachineIndependent/glslang.y" /* yacc.c:1906 */ +#line 3793 "MachineIndependent/glslang.y" /* yacc.c:1906 */ diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index f3f0251f22..f4f4114730 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -89,227 +89,227 @@ extern int yydebug; USAMPLER3D = 299, USAMPLERCUBE = 300, USAMPLER2DARRAY = 301, - SAMPLERCUBEARRAY = 302, - SAMPLERCUBEARRAYSHADOW = 303, - ISAMPLERCUBEARRAY = 304, - USAMPLERCUBEARRAY = 305, - ATTRIBUTE = 306, - VARYING = 307, - FLOAT16_T = 308, - FLOAT32_T = 309, - DOUBLE = 310, - FLOAT64_T = 311, - INT64_T = 312, - UINT64_T = 313, - INT32_T = 314, - UINT32_T = 315, - INT16_T = 316, - UINT16_T = 317, - INT8_T = 318, - UINT8_T = 319, - I64VEC2 = 320, - I64VEC3 = 321, - I64VEC4 = 322, - U64VEC2 = 323, - U64VEC3 = 324, - U64VEC4 = 325, - I32VEC2 = 326, - I32VEC3 = 327, - I32VEC4 = 328, - U32VEC2 = 329, - U32VEC3 = 330, - U32VEC4 = 331, - I16VEC2 = 332, - I16VEC3 = 333, - I16VEC4 = 334, - U16VEC2 = 335, - U16VEC3 = 336, - U16VEC4 = 337, - I8VEC2 = 338, - I8VEC3 = 339, - I8VEC4 = 340, - U8VEC2 = 341, - U8VEC3 = 342, - U8VEC4 = 343, - DVEC2 = 344, - DVEC3 = 345, - DVEC4 = 346, - DMAT2 = 347, - DMAT3 = 348, - DMAT4 = 349, - F16VEC2 = 350, - F16VEC3 = 351, - F16VEC4 = 352, - F16MAT2 = 353, - F16MAT3 = 354, - F16MAT4 = 355, - F32VEC2 = 356, - F32VEC3 = 357, - F32VEC4 = 358, - F32MAT2 = 359, - F32MAT3 = 360, - F32MAT4 = 361, - F64VEC2 = 362, - F64VEC3 = 363, - F64VEC4 = 364, - F64MAT2 = 365, - F64MAT3 = 366, - F64MAT4 = 367, - DMAT2X2 = 368, - DMAT2X3 = 369, - DMAT2X4 = 370, - DMAT3X2 = 371, - DMAT3X3 = 372, - DMAT3X4 = 373, - DMAT4X2 = 374, - DMAT4X3 = 375, - DMAT4X4 = 376, - F16MAT2X2 = 377, - F16MAT2X3 = 378, - F16MAT2X4 = 379, - F16MAT3X2 = 380, - F16MAT3X3 = 381, - F16MAT3X4 = 382, - F16MAT4X2 = 383, - F16MAT4X3 = 384, - F16MAT4X4 = 385, - F32MAT2X2 = 386, - F32MAT2X3 = 387, - F32MAT2X4 = 388, - F32MAT3X2 = 389, - F32MAT3X3 = 390, - F32MAT3X4 = 391, - F32MAT4X2 = 392, - F32MAT4X3 = 393, - F32MAT4X4 = 394, - F64MAT2X2 = 395, - F64MAT2X3 = 396, - F64MAT2X4 = 397, - F64MAT3X2 = 398, - F64MAT3X3 = 399, - F64MAT3X4 = 400, - F64MAT4X2 = 401, - F64MAT4X3 = 402, - F64MAT4X4 = 403, - ATOMIC_UINT = 404, - ACCSTRUCTNV = 405, - FCOOPMATNV = 406, - ICOOPMATNV = 407, - UCOOPMATNV = 408, - SAMPLER1D = 409, - SAMPLER1DARRAY = 410, - SAMPLER1DARRAYSHADOW = 411, - ISAMPLER1D = 412, - SAMPLER1DSHADOW = 413, - SAMPLER2DRECT = 414, - SAMPLER2DRECTSHADOW = 415, - ISAMPLER2DRECT = 416, - USAMPLER2DRECT = 417, - SAMPLERBUFFER = 418, - ISAMPLERBUFFER = 419, - USAMPLERBUFFER = 420, - SAMPLER2DMS = 421, - ISAMPLER2DMS = 422, - USAMPLER2DMS = 423, - SAMPLER2DMSARRAY = 424, - ISAMPLER2DMSARRAY = 425, - USAMPLER2DMSARRAY = 426, - SAMPLEREXTERNALOES = 427, - SAMPLEREXTERNAL2DY2YEXT = 428, - ISAMPLER1DARRAY = 429, - USAMPLER1D = 430, - USAMPLER1DARRAY = 431, - F16SAMPLER1D = 432, - F16SAMPLER2D = 433, - F16SAMPLER3D = 434, - F16SAMPLER2DRECT = 435, - F16SAMPLERCUBE = 436, - F16SAMPLER1DARRAY = 437, - F16SAMPLER2DARRAY = 438, - F16SAMPLERCUBEARRAY = 439, - F16SAMPLERBUFFER = 440, - F16SAMPLER2DMS = 441, - F16SAMPLER2DMSARRAY = 442, - F16SAMPLER1DSHADOW = 443, - F16SAMPLER2DSHADOW = 444, - F16SAMPLER1DARRAYSHADOW = 445, - F16SAMPLER2DARRAYSHADOW = 446, - F16SAMPLER2DRECTSHADOW = 447, - F16SAMPLERCUBESHADOW = 448, - F16SAMPLERCUBEARRAYSHADOW = 449, - IMAGE1D = 450, - IIMAGE1D = 451, - UIMAGE1D = 452, - IMAGE2D = 453, - IIMAGE2D = 454, - UIMAGE2D = 455, - IMAGE3D = 456, - IIMAGE3D = 457, - UIMAGE3D = 458, - IMAGE2DRECT = 459, - IIMAGE2DRECT = 460, - UIMAGE2DRECT = 461, - IMAGECUBE = 462, - IIMAGECUBE = 463, - UIMAGECUBE = 464, - IMAGEBUFFER = 465, - IIMAGEBUFFER = 466, - UIMAGEBUFFER = 467, - IMAGE1DARRAY = 468, - IIMAGE1DARRAY = 469, - UIMAGE1DARRAY = 470, - IMAGE2DARRAY = 471, - IIMAGE2DARRAY = 472, - UIMAGE2DARRAY = 473, - IMAGECUBEARRAY = 474, - IIMAGECUBEARRAY = 475, - UIMAGECUBEARRAY = 476, - IMAGE2DMS = 477, - IIMAGE2DMS = 478, - UIMAGE2DMS = 479, - IMAGE2DMSARRAY = 480, - IIMAGE2DMSARRAY = 481, - UIMAGE2DMSARRAY = 482, - F16IMAGE1D = 483, - F16IMAGE2D = 484, - F16IMAGE3D = 485, - F16IMAGE2DRECT = 486, - F16IMAGECUBE = 487, - F16IMAGE1DARRAY = 488, - F16IMAGE2DARRAY = 489, - F16IMAGECUBEARRAY = 490, - F16IMAGEBUFFER = 491, - F16IMAGE2DMS = 492, - F16IMAGE2DMSARRAY = 493, - SAMPLER = 494, - SAMPLERSHADOW = 495, - TEXTURE1D = 496, - TEXTURE2D = 497, - TEXTURE3D = 498, - TEXTURECUBE = 499, - TEXTURE1DARRAY = 500, - TEXTURE2DARRAY = 501, - ITEXTURE1D = 502, - ITEXTURE2D = 503, - ITEXTURE3D = 504, - ITEXTURECUBE = 505, - ITEXTURE1DARRAY = 506, - ITEXTURE2DARRAY = 507, - UTEXTURE1D = 508, - UTEXTURE2D = 509, - UTEXTURE3D = 510, - UTEXTURECUBE = 511, - UTEXTURE1DARRAY = 512, - UTEXTURE2DARRAY = 513, - TEXTURE2DRECT = 514, - ITEXTURE2DRECT = 515, - UTEXTURE2DRECT = 516, - TEXTUREBUFFER = 517, - ITEXTUREBUFFER = 518, - UTEXTUREBUFFER = 519, - TEXTURECUBEARRAY = 520, - ITEXTURECUBEARRAY = 521, - UTEXTURECUBEARRAY = 522, + SAMPLER = 302, + SAMPLERSHADOW = 303, + TEXTURE2D = 304, + TEXTURE3D = 305, + TEXTURECUBE = 306, + TEXTURE2DARRAY = 307, + ITEXTURE2D = 308, + ITEXTURE3D = 309, + ITEXTURECUBE = 310, + ITEXTURE2DARRAY = 311, + UTEXTURE2D = 312, + UTEXTURE3D = 313, + UTEXTURECUBE = 314, + UTEXTURE2DARRAY = 315, + ATTRIBUTE = 316, + VARYING = 317, + FLOAT16_T = 318, + FLOAT32_T = 319, + DOUBLE = 320, + FLOAT64_T = 321, + INT64_T = 322, + UINT64_T = 323, + INT32_T = 324, + UINT32_T = 325, + INT16_T = 326, + UINT16_T = 327, + INT8_T = 328, + UINT8_T = 329, + I64VEC2 = 330, + I64VEC3 = 331, + I64VEC4 = 332, + U64VEC2 = 333, + U64VEC3 = 334, + U64VEC4 = 335, + I32VEC2 = 336, + I32VEC3 = 337, + I32VEC4 = 338, + U32VEC2 = 339, + U32VEC3 = 340, + U32VEC4 = 341, + I16VEC2 = 342, + I16VEC3 = 343, + I16VEC4 = 344, + U16VEC2 = 345, + U16VEC3 = 346, + U16VEC4 = 347, + I8VEC2 = 348, + I8VEC3 = 349, + I8VEC4 = 350, + U8VEC2 = 351, + U8VEC3 = 352, + U8VEC4 = 353, + DVEC2 = 354, + DVEC3 = 355, + DVEC4 = 356, + DMAT2 = 357, + DMAT3 = 358, + DMAT4 = 359, + F16VEC2 = 360, + F16VEC3 = 361, + F16VEC4 = 362, + F16MAT2 = 363, + F16MAT3 = 364, + F16MAT4 = 365, + F32VEC2 = 366, + F32VEC3 = 367, + F32VEC4 = 368, + F32MAT2 = 369, + F32MAT3 = 370, + F32MAT4 = 371, + F64VEC2 = 372, + F64VEC3 = 373, + F64VEC4 = 374, + F64MAT2 = 375, + F64MAT3 = 376, + F64MAT4 = 377, + DMAT2X2 = 378, + DMAT2X3 = 379, + DMAT2X4 = 380, + DMAT3X2 = 381, + DMAT3X3 = 382, + DMAT3X4 = 383, + DMAT4X2 = 384, + DMAT4X3 = 385, + DMAT4X4 = 386, + F16MAT2X2 = 387, + F16MAT2X3 = 388, + F16MAT2X4 = 389, + F16MAT3X2 = 390, + F16MAT3X3 = 391, + F16MAT3X4 = 392, + F16MAT4X2 = 393, + F16MAT4X3 = 394, + F16MAT4X4 = 395, + F32MAT2X2 = 396, + F32MAT2X3 = 397, + F32MAT2X4 = 398, + F32MAT3X2 = 399, + F32MAT3X3 = 400, + F32MAT3X4 = 401, + F32MAT4X2 = 402, + F32MAT4X3 = 403, + F32MAT4X4 = 404, + F64MAT2X2 = 405, + F64MAT2X3 = 406, + F64MAT2X4 = 407, + F64MAT3X2 = 408, + F64MAT3X3 = 409, + F64MAT3X4 = 410, + F64MAT4X2 = 411, + F64MAT4X3 = 412, + F64MAT4X4 = 413, + ATOMIC_UINT = 414, + ACCSTRUCTNV = 415, + FCOOPMATNV = 416, + ICOOPMATNV = 417, + UCOOPMATNV = 418, + SAMPLERCUBEARRAY = 419, + SAMPLERCUBEARRAYSHADOW = 420, + ISAMPLERCUBEARRAY = 421, + USAMPLERCUBEARRAY = 422, + SAMPLER1D = 423, + SAMPLER1DARRAY = 424, + SAMPLER1DARRAYSHADOW = 425, + ISAMPLER1D = 426, + SAMPLER1DSHADOW = 427, + SAMPLER2DRECT = 428, + SAMPLER2DRECTSHADOW = 429, + ISAMPLER2DRECT = 430, + USAMPLER2DRECT = 431, + SAMPLERBUFFER = 432, + ISAMPLERBUFFER = 433, + USAMPLERBUFFER = 434, + SAMPLER2DMS = 435, + ISAMPLER2DMS = 436, + USAMPLER2DMS = 437, + SAMPLER2DMSARRAY = 438, + ISAMPLER2DMSARRAY = 439, + USAMPLER2DMSARRAY = 440, + SAMPLEREXTERNALOES = 441, + SAMPLEREXTERNAL2DY2YEXT = 442, + ISAMPLER1DARRAY = 443, + USAMPLER1D = 444, + USAMPLER1DARRAY = 445, + F16SAMPLER1D = 446, + F16SAMPLER2D = 447, + F16SAMPLER3D = 448, + F16SAMPLER2DRECT = 449, + F16SAMPLERCUBE = 450, + F16SAMPLER1DARRAY = 451, + F16SAMPLER2DARRAY = 452, + F16SAMPLERCUBEARRAY = 453, + F16SAMPLERBUFFER = 454, + F16SAMPLER2DMS = 455, + F16SAMPLER2DMSARRAY = 456, + F16SAMPLER1DSHADOW = 457, + F16SAMPLER2DSHADOW = 458, + F16SAMPLER1DARRAYSHADOW = 459, + F16SAMPLER2DARRAYSHADOW = 460, + F16SAMPLER2DRECTSHADOW = 461, + F16SAMPLERCUBESHADOW = 462, + F16SAMPLERCUBEARRAYSHADOW = 463, + IMAGE1D = 464, + IIMAGE1D = 465, + UIMAGE1D = 466, + IMAGE2D = 467, + IIMAGE2D = 468, + UIMAGE2D = 469, + IMAGE3D = 470, + IIMAGE3D = 471, + UIMAGE3D = 472, + IMAGE2DRECT = 473, + IIMAGE2DRECT = 474, + UIMAGE2DRECT = 475, + IMAGECUBE = 476, + IIMAGECUBE = 477, + UIMAGECUBE = 478, + IMAGEBUFFER = 479, + IIMAGEBUFFER = 480, + UIMAGEBUFFER = 481, + IMAGE1DARRAY = 482, + IIMAGE1DARRAY = 483, + UIMAGE1DARRAY = 484, + IMAGE2DARRAY = 485, + IIMAGE2DARRAY = 486, + UIMAGE2DARRAY = 487, + IMAGECUBEARRAY = 488, + IIMAGECUBEARRAY = 489, + UIMAGECUBEARRAY = 490, + IMAGE2DMS = 491, + IIMAGE2DMS = 492, + UIMAGE2DMS = 493, + IMAGE2DMSARRAY = 494, + IIMAGE2DMSARRAY = 495, + UIMAGE2DMSARRAY = 496, + F16IMAGE1D = 497, + F16IMAGE2D = 498, + F16IMAGE3D = 499, + F16IMAGE2DRECT = 500, + F16IMAGECUBE = 501, + F16IMAGE1DARRAY = 502, + F16IMAGE2DARRAY = 503, + F16IMAGECUBEARRAY = 504, + F16IMAGEBUFFER = 505, + F16IMAGE2DMS = 506, + F16IMAGE2DMSARRAY = 507, + TEXTURECUBEARRAY = 508, + ITEXTURECUBEARRAY = 509, + UTEXTURECUBEARRAY = 510, + TEXTURE1D = 511, + ITEXTURE1D = 512, + UTEXTURE1D = 513, + TEXTURE1DARRAY = 514, + ITEXTURE1DARRAY = 515, + UTEXTURE1DARRAY = 516, + TEXTURE2DRECT = 517, + ITEXTURE2DRECT = 518, + UTEXTURE2DRECT = 519, + TEXTUREBUFFER = 520, + ITEXTUREBUFFER = 521, + UTEXTUREBUFFER = 522, TEXTURE2DMS = 523, ITEXTURE2DMS = 524, UTEXTURE2DMS = 525, @@ -414,27 +414,27 @@ extern int yydebug; DEFAULT = 624, UNIFORM = 625, SHARED = 626, - FLAT = 627, - SMOOTH = 628, - LAYOUT = 629, - DOUBLECONSTANT = 630, - INT16CONSTANT = 631, - UINT16CONSTANT = 632, - FLOAT16CONSTANT = 633, - INT32CONSTANT = 634, - UINT32CONSTANT = 635, - INT64CONSTANT = 636, - UINT64CONSTANT = 637, - SUBROUTINE = 638, - DEMOTE = 639, - PAYLOADNV = 640, - PAYLOADINNV = 641, - HITATTRNV = 642, - CALLDATANV = 643, - CALLDATAINNV = 644, - PATCH = 645, - SAMPLE = 646, - BUFFER = 647, + BUFFER = 627, + FLAT = 628, + SMOOTH = 629, + LAYOUT = 630, + DOUBLECONSTANT = 631, + INT16CONSTANT = 632, + UINT16CONSTANT = 633, + FLOAT16CONSTANT = 634, + INT32CONSTANT = 635, + UINT32CONSTANT = 636, + INT64CONSTANT = 637, + UINT64CONSTANT = 638, + SUBROUTINE = 639, + DEMOTE = 640, + PAYLOADNV = 641, + PAYLOADINNV = 642, + HITATTRNV = 643, + CALLDATANV = 644, + CALLDATAINNV = 645, + PATCH = 646, + SAMPLE = 647, NONUNIFORM = 648, COHERENT = 649, VOLATILE = 650, diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 5b920f2d52..921eb84e58 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -496,6 +496,7 @@ void TIntermediate::mergeImplicitArraySizes(TType& type, const TType& unitType) // void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& symbol, const TIntermSymbol& unitSymbol, bool crossStage) { +#ifndef GLSLANG_WEB bool writeTypeComparison = false; // Types have to match @@ -546,7 +547,6 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy writeTypeComparison = true; } -#ifndef GLSLANG_WEB // Memory... if (symbol.getQualifier().coherent != unitSymbol.getQualifier().coherent || symbol.getQualifier().devicecoherent != unitSymbol.getQualifier().devicecoherent || @@ -561,7 +561,6 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy error(infoSink, "Memory qualifiers must match:"); writeTypeComparison = true; } -#endif // Layouts... // TODO: 4.4 enhanced layouts: Generalize to include offset/align: current spec @@ -591,6 +590,7 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy if (writeTypeComparison) infoSink.info << " " << symbol.getName() << ": \"" << symbol.getType().getCompleteString() << "\" versus \"" << unitSymbol.getType().getCompleteString() << "\"\n"; +#endif } // @@ -1095,7 +1095,7 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ } // combine location and component ranges - TIoRange range(locationRange, componentRange, type.getBasicType(), qualifier.hasIndex() ? qualifier.layoutIndex : 0); + TIoRange range(locationRange, componentRange, type.getBasicType(), qualifier.hasIndex() ? qualifier.getIndex() : 0); // check for collisions, except for vertex inputs on desktop targeting OpenGL if (! (!isEsProfile() && language == EShLangVertex && qualifier.isPipeInput()) || spvVersion.vulkan > 0) diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 13b0f6c216..5f34a6c745 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -147,6 +147,7 @@ struct TOffsetRange { TRange offset; }; +#ifndef GLSLANG_WEB // Things that need to be tracked per xfb buffer. struct TXfbBuffer { TXfbBuffer() : stride(TQualifier::layoutXfbStrideEnd), implicitStride(0), contains64BitType(false), @@ -158,6 +159,7 @@ struct TXfbBuffer { bool contains32BitType; bool contains16BitType; }; +#endif // Track a set of strings describing how the module was processed. // Using the form: @@ -267,7 +269,6 @@ class TIntermediate { uniformLocationBase(0) #endif { -#ifndef GLSLANG_WEB localSize[0] = 1; localSize[1] = 1; localSize[2] = 1; @@ -277,6 +278,7 @@ class TIntermediate { localSizeSpecId[0] = TQualifier::layoutNotSet; localSizeSpecId[1] = TQualifier::layoutNotSet; localSizeSpecId[2] = TQualifier::layoutNotSet; +#ifndef GLSLANG_WEB xfbBuffers.resize(TQualifier::layoutXfbBufferEnd); shiftBinding.fill(0); #endif @@ -465,7 +467,23 @@ class TIntermediate { bool usingStorageBuffer() const { return useStorageBuffer; } void setDepthReplacing() { depthReplacing = true; } bool isDepthReplacing() const { return depthReplacing; } - + bool setLocalSize(int dim, int size) + { + if (localSizeNotDefault[dim]) + return size == localSize[dim]; + localSizeNotDefault[dim] = true; + localSize[dim] = size; + return true; + } + unsigned int getLocalSize(int dim) const { return localSize[dim]; } + bool setLocalSizeSpecId(int dim, int id) + { + if (localSizeSpecId[dim] != TQualifier::layoutNotSet) + return id == localSizeSpecId[dim]; + localSizeSpecId[dim] = id; + return true; + } + int getLocalSizeSpecId(int dim) const { return localSizeSpecId[dim]; } #ifdef GLSLANG_WEB void output(TInfoSink&, bool tree) { } @@ -492,6 +510,7 @@ class TIntermediate { bool usingVariablePointers() const { return false; } unsigned getXfbStride(int buffer) const { return 0; } bool hasLayoutDerivativeModeNone() const { return false; } + ComputeDerivativeMode getLayoutDerivativeModeNone() const { return LayoutDerivativeNone; } #else void output(TInfoSink&, bool tree); @@ -655,24 +674,6 @@ class TIntermediate { } TInterlockOrdering getInterlockOrdering() const { return interlockOrdering; } - bool setLocalSize(int dim, int size) - { - if (localSizeNotDefault[dim]) - return size == localSize[dim]; - localSizeNotDefault[dim] = true; - localSize[dim] = size; - return true; - } - unsigned int getLocalSize(int dim) const { return localSize[dim]; } - - bool setLocalSizeSpecId(int dim, int id) - { - if (localSizeSpecId[dim] != TQualifier::layoutNotSet) - return id == localSizeSpecId[dim]; - localSizeSpecId[dim] = id; - return true; - } - int getLocalSizeSpecId(int dim) const { return localSizeSpecId[dim]; } void setXfbMode() { xfbMode = true; } bool getXfbMode() const { return xfbMode; } void setMultiStream() { multiStream = true; } @@ -757,7 +758,7 @@ class TIntermediate { void setBinaryDoubleOutput() { binaryDoubleOutput = true; } bool getBinaryDoubleOutput() { return binaryDoubleOutput; } -#endif +#endif // GLSLANG_WEB #ifdef ENABLE_HLSL void setHlslFunctionality1() { hlslFunctionality1 = true; } @@ -920,6 +921,9 @@ class TIntermediate { bool useStorageBuffer; bool nanMinMaxClamp; // true if desiring min/max/clamp to favor non-NaN over NaN bool depthReplacing; + int localSize[3]; + bool localSizeNotDefault[3]; + int localSizeSpecId[3]; #ifndef GLSLANG_WEB bool useVulkanMemoryModel; int invocations; @@ -932,9 +936,6 @@ class TIntermediate { TVertexOrder vertexOrder; TInterlockOrdering interlockOrdering; bool pointMode; - int localSize[3]; - bool localSizeNotDefault[3]; - int localSizeSpecId[3]; bool earlyFragmentTests; bool postDepthCoverage; TLayoutDepth depthLayout;