diff --git a/3rdparty/glslang/SPIRV/GLSL.ext.KHR.h b/3rdparty/glslang/SPIRV/GLSL.ext.KHR.h index 4614a3c67..a8f20c351 100644 --- a/3rdparty/glslang/SPIRV/GLSL.ext.KHR.h +++ b/3rdparty/glslang/SPIRV/GLSL.ext.KHR.h @@ -27,10 +27,17 @@ #ifndef GLSLextKHR_H #define GLSLextKHR_H -// SPV_KHR_shader_ballot -static const char* const E_SPV_KHR_shader_ballot = "SPV_KHR_shader_ballot"; +enum BuiltIn; +enum Op; +enum Capability; + +static const int GLSLextKHRVersion = 100; +static const int GLSLextKHRRevision = 1; + +static const char* const E_SPV_KHR_shader_ballot = "SPV_KHR_shader_ballot"; +static const char* const E_SPV_KHR_subgroup_vote = "SPV_KHR_subgroup_vote"; +static const char* const E_SPV_KHR_device_group = "SPV_KHR_device_group"; +static const char* const E_SPV_KHR_multiview = "SPV_KHR_multiview"; +static const char* const E_SPV_KHR_shader_draw_parameters = "SPV_KHR_shader_draw_parameters"; -// SPV_KHR_shader_draw_parameters -static const char* const E_SPV_KHR_shader_draw_parameters = "SPV_KHR_shader_draw_parameters"; -static const char* const E_SPV_KHR_subgroup_vote = "SPV_KHR_subgroup_vote"; #endif // #ifndef GLSLextKHR_H diff --git a/3rdparty/glslang/SPIRV/GLSL.ext.NV.h b/3rdparty/glslang/SPIRV/GLSL.ext.NV.h index e93c9f7e1..c01858be4 100644 --- a/3rdparty/glslang/SPIRV/GLSL.ext.NV.h +++ b/3rdparty/glslang/SPIRV/GLSL.ext.NV.h @@ -38,46 +38,17 @@ static const int GLSLextNVRevision = 5; //SPV_NV_sample_mask_override_coverage const char* const E_SPV_NV_sample_mask_override_coverage = "SPV_NV_sample_mask_override_coverage"; -static const Decoration DecorationOverrideCoverageNV = static_cast(5248); - - //SPV_NV_geometry_shader_passthrough const char* const E_SPV_NV_geometry_shader_passthrough = "SPV_NV_geometry_shader_passthrough"; -static const Decoration DecorationPassthroughNV = static_cast(5250); - -static const Capability CapabilityGeometryShaderPassthroughNV = static_cast(5251); - - //SPV_NV_viewport_array2 const char* const E_SPV_NV_viewport_array2 = "SPV_NV_viewport_array2"; const char* const E_ARB_shader_viewport_layer_array = "SPV_ARB_shader_viewport_layer_array"; -static const Decoration DecorationViewportRelativeNV = static_cast(5252); - -static const BuiltIn BuiltInViewportMaskNV = static_cast(5253); - -static const Capability CapabilityShaderViewportIndexLayerNV = static_cast(5254); -static const Capability CapabilityShaderViewportMaskNV = static_cast(5255); - - //SPV_NV_stereo_view_rendering const char* const E_SPV_NV_stereo_view_rendering = "SPV_NV_stereo_view_rendering"; -static const Decoration DecorationSecondaryViewportRelativeNV = static_cast(5256); - -static const BuiltIn BuiltInSecondaryPositionNV = static_cast(5257); -static const BuiltIn BuiltInSecondaryViewportMaskNV = static_cast(5258); - -static const Capability CapabilityShaderStereoViewNV = static_cast(5259); - - //SPV_NVX_multiview_per_view_attributes const char* const E_SPV_NVX_multiview_per_view_attributes = "SPV_NVX_multiview_per_view_attributes"; -static const BuiltIn BuiltInPositionPerViewNV = static_cast(5260); -static const BuiltIn BuiltInViewportMaskPerViewNV = static_cast(5261); - -static const Capability CapabilityPerViewAttributesNV = static_cast(5262); - #endif // #ifndef GLSLextNV_H \ No newline at end of file diff --git a/3rdparty/glslang/SPIRV/GlslangToSpv.cpp b/3rdparty/glslang/SPIRV/GlslangToSpv.cpp index 13bc305bb..5385eeefb 100755 --- a/3rdparty/glslang/SPIRV/GlslangToSpv.cpp +++ b/3rdparty/glslang/SPIRV/GlslangToSpv.cpp @@ -628,6 +628,16 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI return spv::BuiltInBaryCoordPullModelAMD; #endif + case glslang::EbvDeviceIndex: + builder.addExtension(spv::E_SPV_KHR_device_group); + builder.addCapability(spv::CapabilityDeviceGroup); + return spv::BuiltInDeviceIndex; + + case glslang::EbvViewIndex: + builder.addExtension(spv::E_SPV_KHR_multiview); + builder.addCapability(spv::CapabilityMultiView); + return spv::BuiltInViewIndex; + #ifdef NV_EXTENSIONS case glslang::EbvViewportMaskNV: builder.addExtension(spv::E_SPV_NV_viewport_array2); @@ -1779,7 +1789,8 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang // Crucially, side effects must be avoided, and there are performance trade-offs. // Return true if good idea (and safe) for OpSelect, false otherwise. const auto selectPolicy = [&]() -> bool { - if (node->getBasicType() == glslang::EbtVoid) + if ((!node->getType().isScalar() && !node->getType().isVector()) || + node->getBasicType() == glslang::EbtVoid) return false; if (node->getTrueBlock() == nullptr || @@ -2730,7 +2741,8 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF for (int p = 0; p < (int)parameters.size(); ++p) { const glslang::TType& paramType = parameters[p]->getAsTyped()->getType(); spv::Id typeId = convertGlslangToSpvType(paramType); - if (paramType.containsOpaque()) + if (paramType.containsOpaque() || + (paramType.getBasicType() == glslang::EbtBlock && paramType.getQualifier().storage == glslang::EvqBuffer)) typeId = builder.makePointer(TranslateStorageClass(paramType), typeId); else if (paramType.getQualifier().storage != glslang::EvqConstReadOnly) typeId = builder.makePointer(spv::StorageClassFunction, typeId); @@ -3210,7 +3222,8 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg for (int a = 0; a < (int)glslangArgs.size(); ++a) { const glslang::TType& paramType = glslangArgs[a]->getAsTyped()->getType(); spv::Id arg; - if (paramType.containsOpaque()) { + if (paramType.containsOpaque() || + (paramType.getBasicType() == glslang::EbtBlock && qualifiers[a] == glslang::EvqBuffer)) { builder.setAccessChain(lValues[lValueCount]); arg = builder.accessChainGetLValue(); ++lValueCount; diff --git a/3rdparty/glslang/SPIRV/doc.cpp b/3rdparty/glslang/SPIRV/doc.cpp index 91e3b8934..a99522b6f 100755 --- a/3rdparty/glslang/SPIRV/doc.cpp +++ b/3rdparty/glslang/SPIRV/doc.cpp @@ -48,6 +48,7 @@ namespace spv { extern "C" { // Include C-based headers that don't have a namespace + #include "GLSL.ext.KHR.h" #ifdef AMD_EXTENSIONS #include "GLSL.ext.AMD.h" #endif @@ -318,15 +319,13 @@ const char* BuiltInString(int builtIn) case 42: return "VertexIndex"; // TBD: put next to VertexId? case 43: return "InstanceIndex"; // TBD: put next to InstanceId? - case BuiltInCeiling: - default: return "Bad"; - case 4416: return "SubgroupEqMaskKHR"; case 4417: return "SubgroupGeMaskKHR"; case 4418: return "SubgroupGtMaskKHR"; case 4419: return "SubgroupLeMaskKHR"; case 4420: return "SubgroupLtMaskKHR"; - + case 4438: return "DeviceIndex"; + case 4440: return "ViewIndex"; case 4424: return "BaseVertex"; case 4425: return "BaseInstance"; case 4426: return "DrawIndex"; @@ -340,13 +339,17 @@ const char* BuiltInString(int builtIn) case 4997: return "BaryCoordSmoothSampleAMD"; case 4998: return "BaryCoordPullModelAMD"; #endif + #ifdef NV_EXTENSIONS case 5253: return "ViewportMaskNV"; case 5257: return "SecondaryPositionNV"; case 5258: return "SecondaryViewportMaskNV"; - case 5260: return "PositionPerViewNV"; - case 5261: return "ViewportMaskPerViewNV"; + case 5261: return "PositionPerViewNV"; + case 5262: return "ViewportMaskPerViewNV"; #endif + + case BuiltInCeiling: + default: return "Bad"; } } @@ -823,21 +826,23 @@ const char* CapabilityString(int info) case 56: return "StorageImageWriteWithoutFormat"; case 57: return "MultiViewport"; - case CapabilityCeiling: - default: return "Bad"; - case 4423: return "SubgroupBallotKHR"; case 4427: return "DrawParameters"; case 4431: return "SubgroupVoteKHR"; + case 4437: return "DeviceGroup"; + case 4439: return "MultiView"; + #ifdef NV_EXTENSIONS case 5251: return "GeometryShaderPassthroughNV"; case 5254: return "ShaderViewportIndexLayerNV"; case 5255: return "ShaderViewportMaskNV"; case 5259: return "ShaderStereoViewNV"; - case 5262: return "PerViewAttributesNV"; + case 5260: return "PerViewAttributesNV"; #endif + case CapabilityCeiling: + default: return "Bad"; } } @@ -1166,10 +1171,6 @@ const char* OpcodeString(int op) case 319: return "OpAtomicFlagClear"; case 320: return "OpImageSparseRead"; - case OpcodeCeiling: - default: - return "Bad"; - case 4421: return "OpSubgroupBallotKHR"; case 4422: return "OpSubgroupFirstInvocationKHR"; case 4428: return "OpSubgroupAllKHR"; @@ -1187,6 +1188,10 @@ const char* OpcodeString(int op) case 5006: return "OpGroupUMaxNonUniformAMD"; case 5007: return "OpGroupSMaxNonUniformAMD"; #endif + + case OpcodeCeiling: + default: + return "Bad"; } } diff --git a/3rdparty/glslang/SPIRV/spirv.hpp b/3rdparty/glslang/SPIRV/spirv.hpp index c7b3d5faa..5580c403a 100755 --- a/3rdparty/glslang/SPIRV/spirv.hpp +++ b/3rdparty/glslang/SPIRV/spirv.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2014-2016 The Khronos Group Inc. +// Copyright (c) 2014-2017 The Khronos Group Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and/or associated documentation files (the "Materials"), @@ -47,11 +47,11 @@ namespace spv { typedef unsigned int Id; #define SPV_VERSION 0x10000 -#define SPV_REVISION 8 +#define SPV_REVISION 10 static const unsigned int MagicNumber = 0x07230203; static const unsigned int Version = 0x00010000; -static const unsigned int Revision = 8; +static const unsigned int Revision = 10; static const unsigned int OpCodeMask = 0xffff; static const unsigned int WordCountShift = 16; @@ -61,7 +61,6 @@ enum SourceLanguage { SourceLanguageGLSL = 2, SourceLanguageOpenCL_C = 3, SourceLanguageOpenCL_CPP = 4, - SourceLanguageHLSL = 5, SourceLanguageMax = 0x7fffffff, }; @@ -375,6 +374,10 @@ enum Decoration { DecorationNoContraction = 42, DecorationInputAttachmentIndex = 43, DecorationAlignment = 44, + DecorationOverrideCoverageNV = 5248, + DecorationPassthroughNV = 5250, + DecorationViewportRelativeNV = 5252, + DecorationSecondaryViewportRelativeNV = 5256, DecorationMax = 0x7fffffff, }; @@ -428,6 +431,13 @@ enum BuiltIn { BuiltInBaseVertex = 4424, BuiltInBaseInstance = 4425, BuiltInDrawIndex = 4426, + BuiltInDeviceIndex = 4438, + BuiltInViewIndex = 4440, + BuiltInViewportMaskNV = 5253, + BuiltInSecondaryPositionNV = 5257, + BuiltInSecondaryViewportMaskNV = 5258, + BuiltInPositionPerViewNV = 5261, + BuiltInViewportMaskPerViewNV = 5262, BuiltInMax = 0x7fffffff, }; @@ -606,6 +616,18 @@ enum Capability { CapabilitySubgroupBallotKHR = 4423, CapabilityDrawParameters = 4427, CapabilitySubgroupVoteKHR = 4431, + CapabilityStorageUniformBufferBlock16 = 4433, + CapabilityStorageUniform16 = 4434, + CapabilityStoragePushConstant16 = 4435, + CapabilityStorageInputOutput16 = 4436, + CapabilityDeviceGroup = 4437, + CapabilityMultiView = 4439, + CapabilitySampleMaskOverrideCoverageNV = 5249, + CapabilityGeometryShaderPassthroughNV = 5251, + CapabilityShaderViewportIndexLayerNV = 5254, + CapabilityShaderViewportMaskNV = 5255, + CapabilityShaderStereoViewNV = 5259, + CapabilityPerViewAttributesNV = 5260, CapabilityMax = 0x7fffffff, }; @@ -906,10 +928,10 @@ enum Op { OpImageSparseRead = 320, OpSubgroupBallotKHR = 4421, OpSubgroupFirstInvocationKHR = 4422, - OpSubgroupReadInvocationKHR = 4432, - OpSubgroupAllKHR = 4428, - OpSubgroupAnyKHR = 4429, + OpSubgroupAllKHR = 4428, + OpSubgroupAnyKHR = 4429, OpSubgroupAllEqualKHR = 4430, + OpSubgroupReadInvocationKHR = 4432, OpMax = 0x7fffffff, }; diff --git a/3rdparty/glslang/Test/120.frag b/3rdparty/glslang/Test/120.frag index 028d30810..ea35b80e4 100644 --- a/3rdparty/glslang/Test/120.frag +++ b/3rdparty/glslang/Test/120.frag @@ -243,4 +243,6 @@ void voidTernary() b ? foo121111() : foo12111(); b ? foo121111() : 4; // ERROR b ? 3 : foo12111(); // ERROR -} \ No newline at end of file +} + +float halfFloat1 = 1.0h; // syntax ERROR diff --git a/3rdparty/glslang/Test/badChars.frag b/3rdparty/glslang/Test/badChars.frag index d67bf3a5e..3e9700d93 100644 --- a/3rdparty/glslang/Test/badChars.frag +++ b/3rdparty/glslang/Test/badChars.frag @@ -4,3 +4,4 @@ #if #endif int aÿ +#define A "ÿ \ No newline at end of file diff --git a/3rdparty/glslang/Test/baseResults/120.frag.out b/3rdparty/glslang/Test/baseResults/120.frag.out index 5028b7514..c64eacc75 100644 --- a/3rdparty/glslang/Test/baseResults/120.frag.out +++ b/3rdparty/glslang/Test/baseResults/120.frag.out @@ -52,7 +52,8 @@ ERROR: 0:209: 'assign' : cannot convert from 'const float' to 'temp 4-component ERROR: 0:212: 'sampler2DRect' : Reserved word. ERROR: 0:244: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type 'global void' and a right operand of type 'const int' (or there is no acceptable conversion) ERROR: 0:245: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type 'const int' and a right operand of type 'global void' (or there is no acceptable conversion) -ERROR: 53 compilation errors. No code generated. +ERROR: 0:248: '' : syntax error +ERROR: 54 compilation errors. No code generated. Shader version: 120 @@ -645,6 +646,7 @@ ERROR: node is still EOpNull! 0:? 's2DRbad' (uniform sampler2DRect) 0:? 's2DR' (uniform sampler2DRect) 0:? 's2DRS' (uniform sampler2DRectShadow) +0:? 'halfFloat1' (global float) Linked fragment stage: @@ -688,4 +690,5 @@ ERROR: node is still EOpNull! 0:? 's2DRbad' (uniform sampler2DRect) 0:? 's2DR' (uniform sampler2DRect) 0:? 's2DRS' (uniform sampler2DRectShadow) +0:? 'halfFloat1' (global float) diff --git a/3rdparty/glslang/Test/baseResults/420.vert.out b/3rdparty/glslang/Test/baseResults/420.vert.out index cc6b13fea..9de843fa3 100644 --- a/3rdparty/glslang/Test/baseResults/420.vert.out +++ b/3rdparty/glslang/Test/baseResults/420.vert.out @@ -47,12 +47,13 @@ ERROR: 0:142: 'r8_snorm' : does not apply to signed integer images ERROR: 0:143: 'rgba32ui' : does not apply to signed integer images ERROR: 0:144: 'r8ui' : does not apply to signed integer images ERROR: 0:147: 'offset on block member' : not supported for this version or the enabled extensions +ERROR: 0:147: 'offset/align' : can only be used with std140 or std430 layout packing ERROR: 0:157: 'textureQueryLevels' : no matching overloaded function found ERROR: 0:157: 'assign' : cannot convert from 'const float' to 'temp int' ERROR: 0:158: 'textureQueryLevels' : no matching overloaded function found ERROR: 0:158: 'assign' : cannot convert from 'const float' to 'temp int' WARNING: 0:161: '[]' : assuming array size of one for compile-time checking of binding numbers for implicitly-sized array -ERROR: 50 compilation errors. No code generated. +ERROR: 51 compilation errors. No code generated. Shader version: 420 diff --git a/3rdparty/glslang/Test/baseResults/430.vert.out b/3rdparty/glslang/Test/baseResults/430.vert.out index 8cd1156b5..358d6c800 100644 --- a/3rdparty/glslang/Test/baseResults/430.vert.out +++ b/3rdparty/glslang/Test/baseResults/430.vert.out @@ -28,8 +28,9 @@ ERROR: 0:64: 'uniform buffer-member align' : not supported for this version or t ERROR: 0:65: 'uniform buffer-member align' : not supported for this version or the enabled extensions ERROR: 0:65: 'offset on block member' : not supported for this version or the enabled extensions ERROR: 0:66: 'offset on block member' : not supported for this version or the enabled extensions -ERROR: 0:64: 'offset/align' : can only be used with std140 or std430 layout packing -ERROR: 0:65: 'align' : can only be used with std140 or std430 layout packing +ERROR: 0:64: 'align' : can only be used with std140 or std430 layout packing +ERROR: 0:65: 'offset/align' : can only be used with std140 or std430 layout packing +ERROR: 0:66: 'offset/align' : can only be used with std140 or std430 layout packing ERROR: 0:71: 'offset on block member' : not supported for this version or the enabled extensions ERROR: 0:74: 'gl_MaxTransformFeedbackBuffers' : required extension not requested: GL_ARB_enhanced_layouts ERROR: 0:75: 'gl_MaxTransformFeedbackInterleavedComponents' : required extension not requested: GL_ARB_enhanced_layouts @@ -63,7 +64,7 @@ ERROR: 0:221: 'textureQueryLevels' : no matching overloaded function found ERROR: 0:221: 'assign' : cannot convert from 'const float' to 'temp int' ERROR: 0:222: 'textureQueryLevels' : no matching overloaded function found ERROR: 0:222: 'assign' : cannot convert from 'const float' to 'temp int' -ERROR: 63 compilation errors. No code generated. +ERROR: 64 compilation errors. No code generated. Shader version: 430 diff --git a/3rdparty/glslang/Test/baseResults/440.frag.out b/3rdparty/glslang/Test/baseResults/440.frag.out index bdc1b0956..560017245 100644 --- a/3rdparty/glslang/Test/baseResults/440.frag.out +++ b/3rdparty/glslang/Test/baseResults/440.frag.out @@ -22,11 +22,11 @@ ERROR: 0:38: 'offset' : only applies to block members, not blocks ERROR: 0:39: 'output block' : not supported in this stage: fragment ERROR: 0:39: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:39: 'offset' : only applies to block members, not blocks -ERROR: 0:42: 'offset/align' : can only be used with std140 or std430 layout packing -ERROR: 0:43: 'offset/align' : can only be used with std140 or std430 layout packing +ERROR: 0:42: 'align' : can only be used with std140 or std430 layout packing +ERROR: 0:43: 'align' : can only be used with std140 or std430 layout packing ERROR: 0:43: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:44: 'output block' : not supported in this stage: fragment -ERROR: 0:44: 'offset/align' : can only be used with std140 or std430 layout packing +ERROR: 0:44: 'align' : can only be used with std140 or std430 layout packing ERROR: 0:44: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:46: 'offset' : cannot specify on a variable declaration ERROR: 0:47: 'layout' : offset/align can only be used on a uniform or buffer @@ -37,8 +37,9 @@ ERROR: 0:52: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:54: 'layout' : matrix or packing qualifiers can only be used on a uniform or buffer ERROR: 0:55: 'layout' : cannot specify packing on a variable declaration ERROR: 0:57: 'align' : must be a power of 2 -ERROR: 0:58: 'align' : can only be used with std140 or std430 layout packing -ERROR: 0:63: 'align' : can only be used with std140 or std430 layout packing +ERROR: 0:58: 'offset/align' : can only be used with std140 or std430 layout packing +ERROR: 0:62: 'offset/align' : can only be used with std140 or std430 layout packing +ERROR: 0:63: 'offset/align' : can only be used with std140 or std430 layout packing ERROR: 0:62: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:63: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:84: 'align' : must be a power of 2 @@ -48,7 +49,7 @@ ERROR: 0:103: 'align' : must be a power of 2 ERROR: 0:105: 'align' : must be a power of 2 ERROR: 0:102: 'offset' : cannot lie in previous members ERROR: 0:104: 'offset' : must be a multiple of the member's alignment -ERROR: 48 compilation errors. No code generated. +ERROR: 49 compilation errors. No code generated. Shader version: 440 diff --git a/3rdparty/glslang/Test/baseResults/badChars.frag.out b/3rdparty/glslang/Test/baseResults/badChars.frag.out index e9ebff729..9a2aecab5 100644 --- a/3rdparty/glslang/Test/baseResults/badChars.frag.out +++ b/3rdparty/glslang/Test/baseResults/badChars.frag.out @@ -5,8 +5,9 @@ ERROR: 0:3: '#error' : A B ERROR: 0:4: 'preprocessor evaluation' : bad expression ERROR: 0:4: '#if' : unexpected tokens following directive ERROR: 0:6: '€' : unexpected token +ERROR: 0:7: 'string' : End of line in string ERROR: 0:7: '' : syntax error -ERROR: 7 compilation errors. No code generated. +ERROR: 8 compilation errors. No code generated. Shader version: 100 diff --git a/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.f1632.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.f1632.frag.out index f00c6f89a..1fd33c60e 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.f1632.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.f1632.frag.out @@ -1,80 +1,131 @@ hlsl.intrinsics.f1632.frag -ERROR: 0:3: 'f32tof16' : unimplemented intrinsic: handle natively -ERROR: 0:16: 'f32tof16' : unimplemented intrinsic: handle natively -ERROR: 0:23: 'f32tof16' : unimplemented intrinsic: handle natively -ERROR: 0:30: 'f32tof16' : unimplemented intrinsic: handle natively -ERROR: 4 compilation errors. No code generated. - - Shader version: 450 gl_FragCoord origin is upper left -ERROR: node is still EOpNull! -0:2 Function Definition: PixelShaderFunctionS(f1; (temp float) +0:? Sequence +0:2 Function Definition: PixelShaderFunctionS(u1; (temp float) 0:2 Function Parameters: -0:2 'inF0' (in float) +0:2 'inF0' (in uint) 0:? Sequence -0:3 ERROR: Bad unary op - (temp uint) -0:3 'inF0' (in float) -0:5 Branch: Return with expression -0:5 Constant: -0:5 0.000000 -0:9 Function Definition: PixelShaderFunction1(vf1; (temp 1-component vector of float) -0:9 Function Parameters: -0:9 'inF0' (in 1-component vector of float) +0:3 Branch: Return with expression +0:3 direct index (temp float) +0:3 unpackHalf2x16 (temp 2-component vector of float) +0:3 'inF0' (in uint) +0:3 Constant: +0:3 0 (const int) +0:7 Function Definition: PixelShaderFunction1(vu1; (temp 1-component vector of float) +0:7 Function Parameters: +0:7 'inF0' (in 1-component vector of uint) 0:? Sequence -0:11 Branch: Return with expression -0:11 Constant: -0:11 0.000000 -0:15 Function Definition: PixelShaderFunction2(vf2; (temp 2-component vector of float) -0:15 Function Parameters: -0:15 'inF0' (in 2-component vector of float) +0:8 Branch: Return with expression +0:8 Constant: +0:8 0.000000 +0:12 Function Definition: PixelShaderFunction2(vu2; (temp 2-component vector of float) +0:12 Function Parameters: +0:12 'inF0' (in 2-component vector of uint) +0:? Sequence +0:13 Branch: Return with expression +0:13 Construct vec2 (temp 2-component vector of float) +0:13 direct index (temp float) +0:13 unpackHalf2x16 (temp 2-component vector of float) +0:13 direct index (temp uint) +0:13 'inF0' (in 2-component vector of uint) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 direct index (temp float) +0:13 unpackHalf2x16 (temp 2-component vector of float) +0:13 direct index (temp uint) +0:13 'inF0' (in 2-component vector of uint) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 0 (const int) +0:17 Function Definition: PixelShaderFunction3(vu3; (temp 3-component vector of float) +0:17 Function Parameters: +0:17 'inF0' (in 3-component vector of uint) 0:? Sequence -0:16 ERROR: Bad unary op - (temp 2-component vector of uint) -0:16 'inF0' (in 2-component vector of float) 0:18 Branch: Return with expression -0:? Constant: -0:? 1.000000 -0:? 2.000000 -0:22 Function Definition: PixelShaderFunction3(vf3; (temp 3-component vector of float) +0:18 Construct vec3 (temp 3-component vector of float) +0:18 direct index (temp float) +0:18 unpackHalf2x16 (temp 2-component vector of float) +0:18 direct index (temp uint) +0:18 'inF0' (in 3-component vector of uint) +0:18 Constant: +0:18 0 (const int) +0:18 Constant: +0:18 0 (const int) +0:18 direct index (temp float) +0:18 unpackHalf2x16 (temp 2-component vector of float) +0:18 direct index (temp uint) +0:18 'inF0' (in 3-component vector of uint) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 0 (const int) +0:18 direct index (temp float) +0:18 unpackHalf2x16 (temp 2-component vector of float) +0:18 direct index (temp uint) +0:18 'inF0' (in 3-component vector of uint) +0:18 Constant: +0:18 2 (const int) +0:18 Constant: +0:18 0 (const int) +0:22 Function Definition: PixelShaderFunction(vu4; (temp 4-component vector of float) 0:22 Function Parameters: -0:22 'inF0' (in 3-component vector of float) +0:22 'inF0' (in 4-component vector of uint) 0:? Sequence -0:23 ERROR: Bad unary op - (temp 3-component vector of uint) -0:23 'inF0' (in 3-component vector of float) -0:25 Branch: Return with expression -0:? Constant: -0:? 1.000000 -0:? 2.000000 -0:? 3.000000 -0:29 Function Definition: @PixelShaderFunction(vf4; (temp 4-component vector of float) -0:29 Function Parameters: -0:29 'inF0' (in 4-component vector of float) +0:23 Branch: Return with expression +0:23 Construct vec4 (temp 4-component vector of float) +0:23 direct index (temp float) +0:23 unpackHalf2x16 (temp 2-component vector of float) +0:23 direct index (temp uint) +0:23 'inF0' (in 4-component vector of uint) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 direct index (temp float) +0:23 unpackHalf2x16 (temp 2-component vector of float) +0:23 direct index (temp uint) +0:23 'inF0' (in 4-component vector of uint) +0:23 Constant: +0:23 1 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 direct index (temp float) +0:23 unpackHalf2x16 (temp 2-component vector of float) +0:23 direct index (temp uint) +0:23 'inF0' (in 4-component vector of uint) +0:23 Constant: +0:23 2 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 direct index (temp float) +0:23 unpackHalf2x16 (temp 2-component vector of float) +0:23 direct index (temp uint) +0:23 'inF0' (in 4-component vector of uint) +0:23 Constant: +0:23 3 (const int) +0:23 Constant: +0:23 0 (const int) +0:27 Function Definition: @main( (temp 4-component vector of float) +0:27 Function Parameters: 0:? Sequence -0:30 ERROR: Bad unary op - (temp 4-component vector of uint) -0:30 'inF0' (in 4-component vector of float) -0:32 Branch: Return with expression -0:? Constant: -0:? 1.000000 -0:? 2.000000 -0:? 3.000000 -0:? 4.000000 -0:29 Function Definition: PixelShaderFunction( (temp void) -0:29 Function Parameters: +0:28 Branch: Return with expression +0:28 Constant: +0:28 0.000000 +0:28 0.000000 +0:28 0.000000 +0:28 0.000000 +0:27 Function Definition: main( (temp void) +0:27 Function Parameters: 0:? Sequence -0:29 move second child to first child (temp 4-component vector of float) -0:? 'inF0' (temp 4-component vector of float) -0:? 'inF0' (layout(location=0 ) in 4-component vector of float) -0:29 move second child to first child (temp 4-component vector of float) +0:27 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:29 Function Call: @PixelShaderFunction(vf4; (temp 4-component vector of float) -0:? 'inF0' (temp 4-component vector of float) +0:27 Function Call: @main( (temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:? 'inF0' (layout(location=0 ) in 4-component vector of float) Linked fragment stage: @@ -82,72 +133,256 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left -ERROR: node is still EOpNull! -0:2 Function Definition: PixelShaderFunctionS(f1; (temp float) +0:? Sequence +0:2 Function Definition: PixelShaderFunctionS(u1; (temp float) 0:2 Function Parameters: -0:2 'inF0' (in float) +0:2 'inF0' (in uint) 0:? Sequence -0:3 ERROR: Bad unary op - (temp uint) -0:3 'inF0' (in float) -0:5 Branch: Return with expression -0:5 Constant: -0:5 0.000000 -0:9 Function Definition: PixelShaderFunction1(vf1; (temp 1-component vector of float) -0:9 Function Parameters: -0:9 'inF0' (in 1-component vector of float) +0:3 Branch: Return with expression +0:3 direct index (temp float) +0:3 unpackHalf2x16 (temp 2-component vector of float) +0:3 'inF0' (in uint) +0:3 Constant: +0:3 0 (const int) +0:7 Function Definition: PixelShaderFunction1(vu1; (temp 1-component vector of float) +0:7 Function Parameters: +0:7 'inF0' (in 1-component vector of uint) 0:? Sequence -0:11 Branch: Return with expression -0:11 Constant: -0:11 0.000000 -0:15 Function Definition: PixelShaderFunction2(vf2; (temp 2-component vector of float) -0:15 Function Parameters: -0:15 'inF0' (in 2-component vector of float) +0:8 Branch: Return with expression +0:8 Constant: +0:8 0.000000 +0:12 Function Definition: PixelShaderFunction2(vu2; (temp 2-component vector of float) +0:12 Function Parameters: +0:12 'inF0' (in 2-component vector of uint) +0:? Sequence +0:13 Branch: Return with expression +0:13 Construct vec2 (temp 2-component vector of float) +0:13 direct index (temp float) +0:13 unpackHalf2x16 (temp 2-component vector of float) +0:13 direct index (temp uint) +0:13 'inF0' (in 2-component vector of uint) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 0 (const int) +0:13 direct index (temp float) +0:13 unpackHalf2x16 (temp 2-component vector of float) +0:13 direct index (temp uint) +0:13 'inF0' (in 2-component vector of uint) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 0 (const int) +0:17 Function Definition: PixelShaderFunction3(vu3; (temp 3-component vector of float) +0:17 Function Parameters: +0:17 'inF0' (in 3-component vector of uint) 0:? Sequence -0:16 ERROR: Bad unary op - (temp 2-component vector of uint) -0:16 'inF0' (in 2-component vector of float) 0:18 Branch: Return with expression -0:? Constant: -0:? 1.000000 -0:? 2.000000 -0:22 Function Definition: PixelShaderFunction3(vf3; (temp 3-component vector of float) +0:18 Construct vec3 (temp 3-component vector of float) +0:18 direct index (temp float) +0:18 unpackHalf2x16 (temp 2-component vector of float) +0:18 direct index (temp uint) +0:18 'inF0' (in 3-component vector of uint) +0:18 Constant: +0:18 0 (const int) +0:18 Constant: +0:18 0 (const int) +0:18 direct index (temp float) +0:18 unpackHalf2x16 (temp 2-component vector of float) +0:18 direct index (temp uint) +0:18 'inF0' (in 3-component vector of uint) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 0 (const int) +0:18 direct index (temp float) +0:18 unpackHalf2x16 (temp 2-component vector of float) +0:18 direct index (temp uint) +0:18 'inF0' (in 3-component vector of uint) +0:18 Constant: +0:18 2 (const int) +0:18 Constant: +0:18 0 (const int) +0:22 Function Definition: PixelShaderFunction(vu4; (temp 4-component vector of float) 0:22 Function Parameters: -0:22 'inF0' (in 3-component vector of float) +0:22 'inF0' (in 4-component vector of uint) 0:? Sequence -0:23 ERROR: Bad unary op - (temp 3-component vector of uint) -0:23 'inF0' (in 3-component vector of float) -0:25 Branch: Return with expression -0:? Constant: -0:? 1.000000 -0:? 2.000000 -0:? 3.000000 -0:29 Function Definition: @PixelShaderFunction(vf4; (temp 4-component vector of float) -0:29 Function Parameters: -0:29 'inF0' (in 4-component vector of float) +0:23 Branch: Return with expression +0:23 Construct vec4 (temp 4-component vector of float) +0:23 direct index (temp float) +0:23 unpackHalf2x16 (temp 2-component vector of float) +0:23 direct index (temp uint) +0:23 'inF0' (in 4-component vector of uint) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 direct index (temp float) +0:23 unpackHalf2x16 (temp 2-component vector of float) +0:23 direct index (temp uint) +0:23 'inF0' (in 4-component vector of uint) +0:23 Constant: +0:23 1 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 direct index (temp float) +0:23 unpackHalf2x16 (temp 2-component vector of float) +0:23 direct index (temp uint) +0:23 'inF0' (in 4-component vector of uint) +0:23 Constant: +0:23 2 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 direct index (temp float) +0:23 unpackHalf2x16 (temp 2-component vector of float) +0:23 direct index (temp uint) +0:23 'inF0' (in 4-component vector of uint) +0:23 Constant: +0:23 3 (const int) +0:23 Constant: +0:23 0 (const int) +0:27 Function Definition: @main( (temp 4-component vector of float) +0:27 Function Parameters: 0:? Sequence -0:30 ERROR: Bad unary op - (temp 4-component vector of uint) -0:30 'inF0' (in 4-component vector of float) -0:32 Branch: Return with expression -0:? Constant: -0:? 1.000000 -0:? 2.000000 -0:? 3.000000 -0:? 4.000000 -0:29 Function Definition: PixelShaderFunction( (temp void) -0:29 Function Parameters: +0:28 Branch: Return with expression +0:28 Constant: +0:28 0.000000 +0:28 0.000000 +0:28 0.000000 +0:28 0.000000 +0:27 Function Definition: main( (temp void) +0:27 Function Parameters: 0:? Sequence -0:29 move second child to first child (temp 4-component vector of float) -0:? 'inF0' (temp 4-component vector of float) -0:? 'inF0' (layout(location=0 ) in 4-component vector of float) -0:29 move second child to first child (temp 4-component vector of float) +0:27 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:29 Function Call: @PixelShaderFunction(vf4; (temp 4-component vector of float) -0:? 'inF0' (temp 4-component vector of float) +0:27 Function Call: @main( (temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:? 'inF0' (layout(location=0 ) in 4-component vector of float) -SPIR-V is not generated for failed compile or link +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 103 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 101 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 11 "PixelShaderFunctionS(u1;" + Name 10 "inF0" + Name 14 "PixelShaderFunction1(vu1;" + Name 13 "inF0" + Name 21 "PixelShaderFunction2(vu2;" + Name 20 "inF0" + Name 28 "PixelShaderFunction3(vu3;" + Name 27 "inF0" + Name 35 "PixelShaderFunction(vu4;" + Name 34 "inF0" + Name 38 "@main(" + Name 101 "@entryPointOutput" + Decorate 101(@entryPointOutput) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 8: TypeFloat 32 + 9: TypeFunction 8(float) 7(ptr) + 16: TypeVector 6(int) 2 + 17: TypePointer Function 16(ivec2) + 18: TypeVector 8(float) 2 + 19: TypeFunction 18(fvec2) 17(ptr) + 23: TypeVector 6(int) 3 + 24: TypePointer Function 23(ivec3) + 25: TypeVector 8(float) 3 + 26: TypeFunction 25(fvec3) 24(ptr) + 30: TypeVector 6(int) 4 + 31: TypePointer Function 30(ivec4) + 32: TypeVector 8(float) 4 + 33: TypeFunction 32(fvec4) 31(ptr) + 37: TypeFunction 32(fvec4) + 42: 6(int) Constant 0 + 46: 8(float) Constant 0 + 53: 6(int) Constant 1 + 69: 6(int) Constant 2 + 89: 6(int) Constant 3 + 97: 32(fvec4) ConstantComposite 46 46 46 46 + 100: TypePointer Output 32(fvec4) +101(@entryPointOutput): 100(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 102: 32(fvec4) FunctionCall 38(@main() + Store 101(@entryPointOutput) 102 + Return + FunctionEnd +11(PixelShaderFunctionS(u1;): 8(float) Function None 9 + 10(inF0): 7(ptr) FunctionParameter + 12: Label + 40: 6(int) Load 10(inF0) + 41: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 40 + 43: 8(float) CompositeExtract 41 0 + ReturnValue 43 + FunctionEnd +14(PixelShaderFunction1(vu1;): 8(float) Function None 9 + 13(inF0): 7(ptr) FunctionParameter + 15: Label + ReturnValue 46 + FunctionEnd +21(PixelShaderFunction2(vu2;): 18(fvec2) Function None 19 + 20(inF0): 17(ptr) FunctionParameter + 22: Label + 49: 7(ptr) AccessChain 20(inF0) 42 + 50: 6(int) Load 49 + 51: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 50 + 52: 8(float) CompositeExtract 51 0 + 54: 7(ptr) AccessChain 20(inF0) 53 + 55: 6(int) Load 54 + 56: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 55 + 57: 8(float) CompositeExtract 56 0 + 58: 18(fvec2) CompositeConstruct 52 57 + ReturnValue 58 + FunctionEnd +28(PixelShaderFunction3(vu3;): 25(fvec3) Function None 26 + 27(inF0): 24(ptr) FunctionParameter + 29: Label + 61: 7(ptr) AccessChain 27(inF0) 42 + 62: 6(int) Load 61 + 63: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 62 + 64: 8(float) CompositeExtract 63 0 + 65: 7(ptr) AccessChain 27(inF0) 53 + 66: 6(int) Load 65 + 67: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 66 + 68: 8(float) CompositeExtract 67 0 + 70: 7(ptr) AccessChain 27(inF0) 69 + 71: 6(int) Load 70 + 72: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 71 + 73: 8(float) CompositeExtract 72 0 + 74: 25(fvec3) CompositeConstruct 64 68 73 + ReturnValue 74 + FunctionEnd +35(PixelShaderFunction(vu4;): 32(fvec4) Function None 33 + 34(inF0): 31(ptr) FunctionParameter + 36: Label + 77: 7(ptr) AccessChain 34(inF0) 42 + 78: 6(int) Load 77 + 79: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 78 + 80: 8(float) CompositeExtract 79 0 + 81: 7(ptr) AccessChain 34(inF0) 53 + 82: 6(int) Load 81 + 83: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 82 + 84: 8(float) CompositeExtract 83 0 + 85: 7(ptr) AccessChain 34(inF0) 69 + 86: 6(int) Load 85 + 87: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 86 + 88: 8(float) CompositeExtract 87 0 + 90: 7(ptr) AccessChain 34(inF0) 89 + 91: 6(int) Load 90 + 92: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 91 + 93: 8(float) CompositeExtract 92 0 + 94: 32(fvec4) CompositeConstruct 80 84 88 93 + ReturnValue 94 + FunctionEnd + 38(@main(): 32(fvec4) Function None 37 + 39: Label + ReturnValue 97 + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.f3216.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.f3216.frag.out new file mode 100644 index 000000000..a75fe653b --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.f3216.frag.out @@ -0,0 +1,401 @@ +hlsl.intrinsics.f3216.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: PixelShaderFunctionS(f1; (temp uint) +0:2 Function Parameters: +0:2 'inF0' (in float) +0:? Sequence +0:3 Branch: Return with expression +0:3 packHalf2x16 (temp uint) +0:3 Construct vec2 (temp 2-component vector of float) +0:3 'inF0' (in float) +0:3 Constant: +0:3 0.000000 +0:7 Function Definition: PixelShaderFunction1(vf1; (temp 1-component vector of uint) +0:7 Function Parameters: +0:7 'inF0' (in 1-component vector of float) +0:? Sequence +0:8 Branch: Return with expression +0:8 Construct uint (temp 1-component vector of uint) +0:8 packHalf2x16 (temp uint) +0:8 Construct vec2 (temp 2-component vector of float) +0:8 Construct float (in float) +0:8 'inF0' (in 1-component vector of float) +0:8 Constant: +0:8 0.000000 +0:12 Function Definition: PixelShaderFunction2(vf2; (temp 2-component vector of uint) +0:12 Function Parameters: +0:12 'inF0' (in 2-component vector of float) +0:? Sequence +0:13 Branch: Return with expression +0:13 Construct uvec2 (temp 2-component vector of uint) +0:13 packHalf2x16 (temp uint) +0:13 Construct vec2 (temp 2-component vector of float) +0:13 direct index (temp float) +0:13 'inF0' (in 2-component vector of float) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 0.000000 +0:13 packHalf2x16 (temp uint) +0:13 Construct vec2 (temp 2-component vector of float) +0:13 direct index (temp float) +0:13 'inF0' (in 2-component vector of float) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 0.000000 +0:17 Function Definition: PixelShaderFunction3(vf3; (temp 3-component vector of uint) +0:17 Function Parameters: +0:17 'inF0' (in 3-component vector of float) +0:? Sequence +0:18 Branch: Return with expression +0:18 Construct uvec3 (temp 3-component vector of uint) +0:18 packHalf2x16 (temp uint) +0:18 Construct vec2 (temp 2-component vector of float) +0:18 direct index (temp float) +0:18 'inF0' (in 3-component vector of float) +0:18 Constant: +0:18 0 (const int) +0:18 Constant: +0:18 0.000000 +0:18 packHalf2x16 (temp uint) +0:18 Construct vec2 (temp 2-component vector of float) +0:18 direct index (temp float) +0:18 'inF0' (in 3-component vector of float) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 0.000000 +0:18 packHalf2x16 (temp uint) +0:18 Construct vec2 (temp 2-component vector of float) +0:18 direct index (temp float) +0:18 'inF0' (in 3-component vector of float) +0:18 Constant: +0:18 2 (const int) +0:18 Constant: +0:18 0.000000 +0:22 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of uint) +0:22 Function Parameters: +0:22 'inF0' (in 4-component vector of float) +0:? Sequence +0:23 Branch: Return with expression +0:23 Construct uvec4 (temp 4-component vector of uint) +0:23 packHalf2x16 (temp uint) +0:23 Construct vec2 (temp 2-component vector of float) +0:23 direct index (temp float) +0:23 'inF0' (in 4-component vector of float) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0.000000 +0:23 packHalf2x16 (temp uint) +0:23 Construct vec2 (temp 2-component vector of float) +0:23 direct index (temp float) +0:23 'inF0' (in 4-component vector of float) +0:23 Constant: +0:23 1 (const int) +0:23 Constant: +0:23 0.000000 +0:23 packHalf2x16 (temp uint) +0:23 Construct vec2 (temp 2-component vector of float) +0:23 direct index (temp float) +0:23 'inF0' (in 4-component vector of float) +0:23 Constant: +0:23 2 (const int) +0:23 Constant: +0:23 0.000000 +0:23 packHalf2x16 (temp uint) +0:23 Construct vec2 (temp 2-component vector of float) +0:23 direct index (temp float) +0:23 'inF0' (in 4-component vector of float) +0:23 Constant: +0:23 3 (const int) +0:23 Constant: +0:23 0.000000 +0:27 Function Definition: @main( (temp 4-component vector of float) +0:27 Function Parameters: +0:? Sequence +0:28 Branch: Return with expression +0:28 Constant: +0:28 0.000000 +0:28 0.000000 +0:28 0.000000 +0:28 0.000000 +0:27 Function Definition: main( (temp void) +0:27 Function Parameters: +0:? Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:27 Function Call: @main( (temp 4-component vector of float) +0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: PixelShaderFunctionS(f1; (temp uint) +0:2 Function Parameters: +0:2 'inF0' (in float) +0:? Sequence +0:3 Branch: Return with expression +0:3 packHalf2x16 (temp uint) +0:3 Construct vec2 (temp 2-component vector of float) +0:3 'inF0' (in float) +0:3 Constant: +0:3 0.000000 +0:7 Function Definition: PixelShaderFunction1(vf1; (temp 1-component vector of uint) +0:7 Function Parameters: +0:7 'inF0' (in 1-component vector of float) +0:? Sequence +0:8 Branch: Return with expression +0:8 Construct uint (temp 1-component vector of uint) +0:8 packHalf2x16 (temp uint) +0:8 Construct vec2 (temp 2-component vector of float) +0:8 Construct float (in float) +0:8 'inF0' (in 1-component vector of float) +0:8 Constant: +0:8 0.000000 +0:12 Function Definition: PixelShaderFunction2(vf2; (temp 2-component vector of uint) +0:12 Function Parameters: +0:12 'inF0' (in 2-component vector of float) +0:? Sequence +0:13 Branch: Return with expression +0:13 Construct uvec2 (temp 2-component vector of uint) +0:13 packHalf2x16 (temp uint) +0:13 Construct vec2 (temp 2-component vector of float) +0:13 direct index (temp float) +0:13 'inF0' (in 2-component vector of float) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 0.000000 +0:13 packHalf2x16 (temp uint) +0:13 Construct vec2 (temp 2-component vector of float) +0:13 direct index (temp float) +0:13 'inF0' (in 2-component vector of float) +0:13 Constant: +0:13 1 (const int) +0:13 Constant: +0:13 0.000000 +0:17 Function Definition: PixelShaderFunction3(vf3; (temp 3-component vector of uint) +0:17 Function Parameters: +0:17 'inF0' (in 3-component vector of float) +0:? Sequence +0:18 Branch: Return with expression +0:18 Construct uvec3 (temp 3-component vector of uint) +0:18 packHalf2x16 (temp uint) +0:18 Construct vec2 (temp 2-component vector of float) +0:18 direct index (temp float) +0:18 'inF0' (in 3-component vector of float) +0:18 Constant: +0:18 0 (const int) +0:18 Constant: +0:18 0.000000 +0:18 packHalf2x16 (temp uint) +0:18 Construct vec2 (temp 2-component vector of float) +0:18 direct index (temp float) +0:18 'inF0' (in 3-component vector of float) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 0.000000 +0:18 packHalf2x16 (temp uint) +0:18 Construct vec2 (temp 2-component vector of float) +0:18 direct index (temp float) +0:18 'inF0' (in 3-component vector of float) +0:18 Constant: +0:18 2 (const int) +0:18 Constant: +0:18 0.000000 +0:22 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of uint) +0:22 Function Parameters: +0:22 'inF0' (in 4-component vector of float) +0:? Sequence +0:23 Branch: Return with expression +0:23 Construct uvec4 (temp 4-component vector of uint) +0:23 packHalf2x16 (temp uint) +0:23 Construct vec2 (temp 2-component vector of float) +0:23 direct index (temp float) +0:23 'inF0' (in 4-component vector of float) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0.000000 +0:23 packHalf2x16 (temp uint) +0:23 Construct vec2 (temp 2-component vector of float) +0:23 direct index (temp float) +0:23 'inF0' (in 4-component vector of float) +0:23 Constant: +0:23 1 (const int) +0:23 Constant: +0:23 0.000000 +0:23 packHalf2x16 (temp uint) +0:23 Construct vec2 (temp 2-component vector of float) +0:23 direct index (temp float) +0:23 'inF0' (in 4-component vector of float) +0:23 Constant: +0:23 2 (const int) +0:23 Constant: +0:23 0.000000 +0:23 packHalf2x16 (temp uint) +0:23 Construct vec2 (temp 2-component vector of float) +0:23 direct index (temp float) +0:23 'inF0' (in 4-component vector of float) +0:23 Constant: +0:23 3 (const int) +0:23 Constant: +0:23 0.000000 +0:27 Function Definition: @main( (temp 4-component vector of float) +0:27 Function Parameters: +0:? Sequence +0:28 Branch: Return with expression +0:28 Constant: +0:28 0.000000 +0:28 0.000000 +0:28 0.000000 +0:28 0.000000 +0:27 Function Definition: main( (temp void) +0:27 Function Parameters: +0:? Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:27 Function Call: @main( (temp 4-component vector of float) +0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 106 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 104 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 11 "PixelShaderFunctionS(f1;" + Name 10 "inF0" + Name 14 "PixelShaderFunction1(vf1;" + Name 13 "inF0" + Name 21 "PixelShaderFunction2(vf2;" + Name 20 "inF0" + Name 28 "PixelShaderFunction3(vf3;" + Name 27 "inF0" + Name 35 "PixelShaderFunction(vf4;" + Name 34 "inF0" + Name 38 "@main(" + Name 104 "@entryPointOutput" + Decorate 104(@entryPointOutput) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 8: TypeInt 32 0 + 9: TypeFunction 8(int) 7(ptr) + 16: TypeVector 6(float) 2 + 17: TypePointer Function 16(fvec2) + 18: TypeVector 8(int) 2 + 19: TypeFunction 18(ivec2) 17(ptr) + 23: TypeVector 6(float) 3 + 24: TypePointer Function 23(fvec3) + 25: TypeVector 8(int) 3 + 26: TypeFunction 25(ivec3) 24(ptr) + 30: TypeVector 6(float) 4 + 31: TypePointer Function 30(fvec4) + 32: TypeVector 8(int) 4 + 33: TypeFunction 32(ivec4) 31(ptr) + 37: TypeFunction 30(fvec4) + 41: 6(float) Constant 0 + 51: 8(int) Constant 0 + 56: 8(int) Constant 1 + 72: 8(int) Constant 2 + 92: 8(int) Constant 3 + 100: 30(fvec4) ConstantComposite 41 41 41 41 + 103: TypePointer Output 30(fvec4) +104(@entryPointOutput): 103(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 105: 30(fvec4) FunctionCall 38(@main() + Store 104(@entryPointOutput) 105 + Return + FunctionEnd +11(PixelShaderFunctionS(f1;): 8(int) Function None 9 + 10(inF0): 7(ptr) FunctionParameter + 12: Label + 40: 6(float) Load 10(inF0) + 42: 16(fvec2) CompositeConstruct 40 41 + 43: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 42 + ReturnValue 43 + FunctionEnd +14(PixelShaderFunction1(vf1;): 8(int) Function None 9 + 13(inF0): 7(ptr) FunctionParameter + 15: Label + 46: 6(float) Load 13(inF0) + 47: 16(fvec2) CompositeConstruct 46 41 + 48: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 47 + ReturnValue 48 + FunctionEnd +21(PixelShaderFunction2(vf2;): 18(ivec2) Function None 19 + 20(inF0): 17(ptr) FunctionParameter + 22: Label + 52: 7(ptr) AccessChain 20(inF0) 51 + 53: 6(float) Load 52 + 54: 16(fvec2) CompositeConstruct 53 41 + 55: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 54 + 57: 7(ptr) AccessChain 20(inF0) 56 + 58: 6(float) Load 57 + 59: 16(fvec2) CompositeConstruct 58 41 + 60: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 59 + 61: 18(ivec2) CompositeConstruct 55 60 + ReturnValue 61 + FunctionEnd +28(PixelShaderFunction3(vf3;): 25(ivec3) Function None 26 + 27(inF0): 24(ptr) FunctionParameter + 29: Label + 64: 7(ptr) AccessChain 27(inF0) 51 + 65: 6(float) Load 64 + 66: 16(fvec2) CompositeConstruct 65 41 + 67: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 66 + 68: 7(ptr) AccessChain 27(inF0) 56 + 69: 6(float) Load 68 + 70: 16(fvec2) CompositeConstruct 69 41 + 71: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 70 + 73: 7(ptr) AccessChain 27(inF0) 72 + 74: 6(float) Load 73 + 75: 16(fvec2) CompositeConstruct 74 41 + 76: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 75 + 77: 25(ivec3) CompositeConstruct 67 71 76 + ReturnValue 77 + FunctionEnd +35(PixelShaderFunction(vf4;): 32(ivec4) Function None 33 + 34(inF0): 31(ptr) FunctionParameter + 36: Label + 80: 7(ptr) AccessChain 34(inF0) 51 + 81: 6(float) Load 80 + 82: 16(fvec2) CompositeConstruct 81 41 + 83: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 82 + 84: 7(ptr) AccessChain 34(inF0) 56 + 85: 6(float) Load 84 + 86: 16(fvec2) CompositeConstruct 85 41 + 87: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 86 + 88: 7(ptr) AccessChain 34(inF0) 72 + 89: 6(float) Load 88 + 90: 16(fvec2) CompositeConstruct 89 41 + 91: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 90 + 93: 7(ptr) AccessChain 34(inF0) 92 + 94: 6(float) Load 93 + 95: 16(fvec2) CompositeConstruct 94 41 + 96: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 95 + 97: 32(ivec4) CompositeConstruct 83 87 91 96 + ReturnValue 97 + FunctionEnd + 38(@main(): 30(fvec4) Function None 37 + 39: Label + ReturnValue 100 + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.frag.out index d914154bb..1ec75fc8f 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.intrinsics.negative.frag.out @@ -1,6 +1,5 @@ hlsl.intrinsics.negative.frag ERROR: 0:10: 'determinant' : no matching overloaded function found -ERROR: 0:12: 'f32tof16' : unimplemented intrinsic: handle natively ERROR: 0:23: 'length' : ambiguous best function under implicit type conversion ERROR: 0:25: 'normalize' : ambiguous best function under implicit type conversion ERROR: 0:26: 'reflect' : ambiguous best function under implicit type conversion @@ -13,16 +12,13 @@ ERROR: 0:47: 'CheckAccessFullyMapped' : no matching overloaded function found ERROR: 0:49: 'cross' : no matching overloaded function found ERROR: 0:50: 'D3DCOLORtoUBYTE4' : no matching overloaded function found ERROR: 0:51: 'determinant' : no matching overloaded function found -ERROR: 0:52: 'f32tof16' : unimplemented intrinsic: handle natively ERROR: 0:57: 'transpose' : no matching overloaded function found ERROR: 0:64: 'CheckAccessFullyMapped' : no matching overloaded function found ERROR: 0:66: 'D3DCOLORtoUBYTE4' : no matching overloaded function found ERROR: 0:67: 'determinant' : no matching overloaded function found -ERROR: 0:68: 'f32tof16' : unimplemented intrinsic: handle natively ERROR: 0:73: 'transpose' : no matching overloaded function found ERROR: 0:81: 'CheckAccessFullyMapped' : no matching overloaded function found ERROR: 0:84: 'determinant' : no matching overloaded function found -ERROR: 0:85: 'f32tof16' : unimplemented intrinsic: handle natively ERROR: 0:90: 'transpose' : no matching overloaded function found ERROR: 0:117: 'countbits' : no matching overloaded function found ERROR: 0:117: 'D3DCOLORtoUBYTE4' : no matching overloaded function found @@ -63,7 +59,7 @@ ERROR: 0:133: 'normalize' : no matching overloaded function found ERROR: 0:133: 'reflect' : no matching overloaded function found ERROR: 0:133: 'refract' : no matching overloaded function found ERROR: 0:133: 'reversebits' : no matching overloaded function found -ERROR: 64 compilation errors. No code generated. +ERROR: 60 compilation errors. No code generated. Shader version: 450 @@ -111,10 +107,12 @@ ERROR: node is still EOpNull! 0:9 3 (const int) 0:10 Constant: 0:10 0.000000 -0:12 ERROR: Bad unary op - (temp float) -0:12 Convert float to uint (temp uint) -0:12 'inF0' (in float) +0:12 direct index (temp float) +0:12 unpackHalf2x16 (temp 2-component vector of float) +0:12 Convert float to uint (temp uint) +0:12 'inF0' (in float) +0:12 Constant: +0:12 0 (const int) 0:13 findMSB (temp uint) 0:13 Convert float to uint (temp uint) 0:13 'inF0' (in float) @@ -195,10 +193,25 @@ ERROR: node is still EOpNull! 0:50 0.000000 0:51 Constant: 0:51 0.000000 -0:52 ERROR: Bad unary op - (temp 2-component vector of float) -0:52 Convert float to uint (temp 2-component vector of uint) -0:52 'inF0' (in 2-component vector of float) +0:52 Construct vec2 (temp 2-component vector of float) +0:52 direct index (temp float) +0:52 unpackHalf2x16 (temp 2-component vector of float) +0:52 direct index (temp uint) +0:52 Convert float to uint (temp 2-component vector of uint) +0:52 'inF0' (in 2-component vector of float) +0:52 Constant: +0:52 0 (const int) +0:52 Constant: +0:52 0 (const int) +0:52 direct index (temp float) +0:52 unpackHalf2x16 (temp 2-component vector of float) +0:52 direct index (temp uint) +0:52 Convert float to uint (temp 2-component vector of uint) +0:52 'inF0' (in 2-component vector of float) +0:52 Constant: +0:52 1 (const int) +0:52 Constant: +0:52 0 (const int) 0:53 findMSB (temp 2-component vector of uint) 0:53 Convert float to uint (temp 2-component vector of uint) 0:53 'inF0' (in 2-component vector of float) @@ -230,10 +243,34 @@ ERROR: node is still EOpNull! 0:66 0.000000 0:67 Constant: 0:67 0.000000 -0:68 ERROR: Bad unary op - (temp 3-component vector of float) -0:68 Convert float to uint (temp 3-component vector of uint) -0:68 'inF0' (in 3-component vector of float) +0:68 Construct vec3 (temp 3-component vector of float) +0:68 direct index (temp float) +0:68 unpackHalf2x16 (temp 2-component vector of float) +0:68 direct index (temp uint) +0:68 Convert float to uint (temp 3-component vector of uint) +0:68 'inF0' (in 3-component vector of float) +0:68 Constant: +0:68 0 (const int) +0:68 Constant: +0:68 0 (const int) +0:68 direct index (temp float) +0:68 unpackHalf2x16 (temp 2-component vector of float) +0:68 direct index (temp uint) +0:68 Convert float to uint (temp 3-component vector of uint) +0:68 'inF0' (in 3-component vector of float) +0:68 Constant: +0:68 1 (const int) +0:68 Constant: +0:68 0 (const int) +0:68 direct index (temp float) +0:68 unpackHalf2x16 (temp 2-component vector of float) +0:68 direct index (temp uint) +0:68 Convert float to uint (temp 3-component vector of uint) +0:68 'inF0' (in 3-component vector of float) +0:68 Constant: +0:68 2 (const int) +0:68 Constant: +0:68 0 (const int) 0:69 findMSB (temp 3-component vector of uint) 0:69 Convert float to uint (temp 3-component vector of uint) 0:69 'inF0' (in 3-component vector of float) @@ -269,10 +306,43 @@ ERROR: node is still EOpNull! 0:83 'inF1' (in 4-component vector of float) 0:84 Constant: 0:84 0.000000 -0:85 ERROR: Bad unary op - (temp 4-component vector of float) -0:85 Convert float to uint (temp 4-component vector of uint) -0:85 'inF0' (in 4-component vector of float) +0:85 Construct vec4 (temp 4-component vector of float) +0:85 direct index (temp float) +0:85 unpackHalf2x16 (temp 2-component vector of float) +0:85 direct index (temp uint) +0:85 Convert float to uint (temp 4-component vector of uint) +0:85 'inF0' (in 4-component vector of float) +0:85 Constant: +0:85 0 (const int) +0:85 Constant: +0:85 0 (const int) +0:85 direct index (temp float) +0:85 unpackHalf2x16 (temp 2-component vector of float) +0:85 direct index (temp uint) +0:85 Convert float to uint (temp 4-component vector of uint) +0:85 'inF0' (in 4-component vector of float) +0:85 Constant: +0:85 1 (const int) +0:85 Constant: +0:85 0 (const int) +0:85 direct index (temp float) +0:85 unpackHalf2x16 (temp 2-component vector of float) +0:85 direct index (temp uint) +0:85 Convert float to uint (temp 4-component vector of uint) +0:85 'inF0' (in 4-component vector of float) +0:85 Constant: +0:85 2 (const int) +0:85 Constant: +0:85 0 (const int) +0:85 direct index (temp float) +0:85 unpackHalf2x16 (temp 2-component vector of float) +0:85 direct index (temp uint) +0:85 Convert float to uint (temp 4-component vector of uint) +0:85 'inF0' (in 4-component vector of float) +0:85 Constant: +0:85 3 (const int) +0:85 Constant: +0:85 0 (const int) 0:86 findMSB (temp 4-component vector of uint) 0:86 Convert float to uint (temp 4-component vector of uint) 0:86 'inF0' (in 4-component vector of float) @@ -499,10 +569,12 @@ ERROR: node is still EOpNull! 0:9 3 (const int) 0:10 Constant: 0:10 0.000000 -0:12 ERROR: Bad unary op - (temp float) -0:12 Convert float to uint (temp uint) -0:12 'inF0' (in float) +0:12 direct index (temp float) +0:12 unpackHalf2x16 (temp 2-component vector of float) +0:12 Convert float to uint (temp uint) +0:12 'inF0' (in float) +0:12 Constant: +0:12 0 (const int) 0:13 findMSB (temp uint) 0:13 Convert float to uint (temp uint) 0:13 'inF0' (in float) @@ -583,10 +655,25 @@ ERROR: node is still EOpNull! 0:50 0.000000 0:51 Constant: 0:51 0.000000 -0:52 ERROR: Bad unary op - (temp 2-component vector of float) -0:52 Convert float to uint (temp 2-component vector of uint) -0:52 'inF0' (in 2-component vector of float) +0:52 Construct vec2 (temp 2-component vector of float) +0:52 direct index (temp float) +0:52 unpackHalf2x16 (temp 2-component vector of float) +0:52 direct index (temp uint) +0:52 Convert float to uint (temp 2-component vector of uint) +0:52 'inF0' (in 2-component vector of float) +0:52 Constant: +0:52 0 (const int) +0:52 Constant: +0:52 0 (const int) +0:52 direct index (temp float) +0:52 unpackHalf2x16 (temp 2-component vector of float) +0:52 direct index (temp uint) +0:52 Convert float to uint (temp 2-component vector of uint) +0:52 'inF0' (in 2-component vector of float) +0:52 Constant: +0:52 1 (const int) +0:52 Constant: +0:52 0 (const int) 0:53 findMSB (temp 2-component vector of uint) 0:53 Convert float to uint (temp 2-component vector of uint) 0:53 'inF0' (in 2-component vector of float) @@ -618,10 +705,34 @@ ERROR: node is still EOpNull! 0:66 0.000000 0:67 Constant: 0:67 0.000000 -0:68 ERROR: Bad unary op - (temp 3-component vector of float) -0:68 Convert float to uint (temp 3-component vector of uint) -0:68 'inF0' (in 3-component vector of float) +0:68 Construct vec3 (temp 3-component vector of float) +0:68 direct index (temp float) +0:68 unpackHalf2x16 (temp 2-component vector of float) +0:68 direct index (temp uint) +0:68 Convert float to uint (temp 3-component vector of uint) +0:68 'inF0' (in 3-component vector of float) +0:68 Constant: +0:68 0 (const int) +0:68 Constant: +0:68 0 (const int) +0:68 direct index (temp float) +0:68 unpackHalf2x16 (temp 2-component vector of float) +0:68 direct index (temp uint) +0:68 Convert float to uint (temp 3-component vector of uint) +0:68 'inF0' (in 3-component vector of float) +0:68 Constant: +0:68 1 (const int) +0:68 Constant: +0:68 0 (const int) +0:68 direct index (temp float) +0:68 unpackHalf2x16 (temp 2-component vector of float) +0:68 direct index (temp uint) +0:68 Convert float to uint (temp 3-component vector of uint) +0:68 'inF0' (in 3-component vector of float) +0:68 Constant: +0:68 2 (const int) +0:68 Constant: +0:68 0 (const int) 0:69 findMSB (temp 3-component vector of uint) 0:69 Convert float to uint (temp 3-component vector of uint) 0:69 'inF0' (in 3-component vector of float) @@ -657,10 +768,43 @@ ERROR: node is still EOpNull! 0:83 'inF1' (in 4-component vector of float) 0:84 Constant: 0:84 0.000000 -0:85 ERROR: Bad unary op - (temp 4-component vector of float) -0:85 Convert float to uint (temp 4-component vector of uint) -0:85 'inF0' (in 4-component vector of float) +0:85 Construct vec4 (temp 4-component vector of float) +0:85 direct index (temp float) +0:85 unpackHalf2x16 (temp 2-component vector of float) +0:85 direct index (temp uint) +0:85 Convert float to uint (temp 4-component vector of uint) +0:85 'inF0' (in 4-component vector of float) +0:85 Constant: +0:85 0 (const int) +0:85 Constant: +0:85 0 (const int) +0:85 direct index (temp float) +0:85 unpackHalf2x16 (temp 2-component vector of float) +0:85 direct index (temp uint) +0:85 Convert float to uint (temp 4-component vector of uint) +0:85 'inF0' (in 4-component vector of float) +0:85 Constant: +0:85 1 (const int) +0:85 Constant: +0:85 0 (const int) +0:85 direct index (temp float) +0:85 unpackHalf2x16 (temp 2-component vector of float) +0:85 direct index (temp uint) +0:85 Convert float to uint (temp 4-component vector of uint) +0:85 'inF0' (in 4-component vector of float) +0:85 Constant: +0:85 2 (const int) +0:85 Constant: +0:85 0 (const int) +0:85 direct index (temp float) +0:85 unpackHalf2x16 (temp 2-component vector of float) +0:85 direct index (temp uint) +0:85 Convert float to uint (temp 4-component vector of uint) +0:85 'inF0' (in 4-component vector of float) +0:85 Constant: +0:85 3 (const int) +0:85 Constant: +0:85 0 (const int) 0:86 findMSB (temp 4-component vector of uint) 0:86 Convert float to uint (temp 4-component vector of uint) 0:86 'inF0' (in 4-component vector of float) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.numericsuffixes.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.numericsuffixes.frag.out index fee642686..3637a2cd9 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.numericsuffixes.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.numericsuffixes.frag.out @@ -50,16 +50,36 @@ gl_FragCoord origin is upper left 0:15 'r08' (temp uint) 0:15 Constant: 0:15 58 (const uint) -0:18 move second child to first child (temp 4-component vector of float) -0:18 color: direct index for structure (temp 4-component vector of float) -0:18 'ps_output' (temp structure{temp 4-component vector of float color}) +0:16 Sequence +0:16 move second child to first child (temp float) +0:16 'r09' (temp float) +0:16 Constant: +0:16 1.000000 +0:17 Sequence +0:17 move second child to first child (temp float) +0:17 'r10' (temp float) +0:17 Constant: +0:17 1.000000 +0:18 Sequence +0:18 move second child to first child (temp float) +0:18 'r11' (temp float) 0:18 Constant: -0:18 0 (const int) -0:18 Construct vec4 (temp 4-component vector of float) -0:18 Convert int to float (temp float) -0:18 'r07' (temp int) -0:19 Branch: Return with expression -0:19 'ps_output' (temp structure{temp 4-component vector of float color}) +0:18 1.100000 +0:19 Sequence +0:19 move second child to first child (temp float) +0:19 'r12' (temp float) +0:19 Constant: +0:19 1.100000 +0:22 move second child to first child (temp 4-component vector of float) +0:22 color: direct index for structure (temp 4-component vector of float) +0:22 'ps_output' (temp structure{temp 4-component vector of float color}) +0:22 Constant: +0:22 0 (const int) +0:22 Construct vec4 (temp 4-component vector of float) +0:22 Convert int to float (temp float) +0:22 'r07' (temp int) +0:23 Branch: Return with expression +0:23 'ps_output' (temp structure{temp 4-component vector of float color}) 0:5 Function Definition: main( (temp void) 0:5 Function Parameters: 0:? Sequence @@ -128,16 +148,36 @@ gl_FragCoord origin is upper left 0:15 'r08' (temp uint) 0:15 Constant: 0:15 58 (const uint) -0:18 move second child to first child (temp 4-component vector of float) -0:18 color: direct index for structure (temp 4-component vector of float) -0:18 'ps_output' (temp structure{temp 4-component vector of float color}) +0:16 Sequence +0:16 move second child to first child (temp float) +0:16 'r09' (temp float) +0:16 Constant: +0:16 1.000000 +0:17 Sequence +0:17 move second child to first child (temp float) +0:17 'r10' (temp float) +0:17 Constant: +0:17 1.000000 +0:18 Sequence +0:18 move second child to first child (temp float) +0:18 'r11' (temp float) 0:18 Constant: -0:18 0 (const int) -0:18 Construct vec4 (temp 4-component vector of float) -0:18 Convert int to float (temp float) -0:18 'r07' (temp int) -0:19 Branch: Return with expression -0:19 'ps_output' (temp structure{temp 4-component vector of float color}) +0:18 1.100000 +0:19 Sequence +0:19 move second child to first child (temp float) +0:19 'r12' (temp float) +0:19 Constant: +0:19 1.100000 +0:22 move second child to first child (temp 4-component vector of float) +0:22 color: direct index for structure (temp 4-component vector of float) +0:22 'ps_output' (temp structure{temp 4-component vector of float color}) +0:22 Constant: +0:22 0 (const int) +0:22 Construct vec4 (temp 4-component vector of float) +0:22 Convert int to float (temp float) +0:22 'r07' (temp int) +0:23 Branch: Return with expression +0:23 'ps_output' (temp structure{temp 4-component vector of float color}) 0:5 Function Definition: main( (temp void) 0:5 Function Parameters: 0:? Sequence @@ -153,12 +193,12 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 49 +// Id's are bound by 54 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 46 + EntryPoint Fragment 4 "main" 51 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 8 "PS_OUTPUT" @@ -173,9 +213,13 @@ gl_FragCoord origin is upper left Name 28 "r06" Name 30 "r07" Name 32 "r08" - Name 35 "ps_output" - Name 46 "color" - Decorate 46(color) Location 0 + Name 34 "r09" + Name 35 "r10" + Name 36 "r11" + Name 38 "r12" + Name 40 "ps_output" + Name 51 "color" + Decorate 51(color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -195,16 +239,17 @@ gl_FragCoord origin is upper left 29: 24(int) Constant 6 31: 24(int) Constant 57 33: 15(int) Constant 58 - 34: TypePointer Function 8(PS_OUTPUT) - 36: 24(int) Constant 0 - 40: TypePointer Function 7(fvec4) - 45: TypePointer Output 7(fvec4) - 46(color): 45(ptr) Variable Output + 37: 6(float) Constant 1066192077 + 39: TypePointer Function 8(PS_OUTPUT) + 41: 24(int) Constant 0 + 45: TypePointer Function 7(fvec4) + 50: TypePointer Output 7(fvec4) + 51(color): 50(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 47:8(PS_OUTPUT) FunctionCall 10(@main() - 48: 7(fvec4) CompositeExtract 47 0 - Store 46(color) 48 + 52:8(PS_OUTPUT) FunctionCall 10(@main() + 53: 7(fvec4) CompositeExtract 52 0 + Store 51(color) 53 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 @@ -218,7 +263,11 @@ gl_FragCoord origin is upper left 28(r06): 25(ptr) Variable Function 30(r07): 25(ptr) Variable Function 32(r08): 16(ptr) Variable Function - 35(ps_output): 34(ptr) Variable Function + 34(r09): 12(ptr) Variable Function + 35(r10): 12(ptr) Variable Function + 36(r11): 12(ptr) Variable Function + 38(r12): 12(ptr) Variable Function + 40(ps_output): 39(ptr) Variable Function Store 13(r00) 14 Store 17(r01) 18 Store 19(r02) 20 @@ -228,11 +277,15 @@ gl_FragCoord origin is upper left Store 28(r06) 29 Store 30(r07) 31 Store 32(r08) 33 - 37: 24(int) Load 30(r07) - 38: 6(float) ConvertSToF 37 - 39: 7(fvec4) CompositeConstruct 38 38 38 38 - 41: 40(ptr) AccessChain 35(ps_output) 36 - Store 41 39 - 42:8(PS_OUTPUT) Load 35(ps_output) - ReturnValue 42 + Store 34(r09) 14 + Store 35(r10) 14 + Store 36(r11) 37 + Store 38(r12) 37 + 42: 24(int) Load 30(r07) + 43: 6(float) ConvertSToF 42 + 44: 7(fvec4) CompositeConstruct 43 43 43 43 + 46: 45(ptr) AccessChain 40(ps_output) 41 + Store 46 44 + 47:8(PS_OUTPUT) Load 40(ps_output) + ReturnValue 47 FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.struct.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.struct.frag.out index 8b19c0254..1876aeea3 100755 --- a/3rdparty/glslang/Test/baseResults/hlsl.struct.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.struct.frag.out @@ -6,104 +6,110 @@ WARNING: 0:30: 'register' : ignoring shader_profile Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:34 Function Definition: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float) -0:34 Function Parameters: -0:34 'input' (in 4-component vector of float) -0:34 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:40 Function Definition: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float) +0:40 Function Parameters: +0:40 'input' (in 4-component vector of float) +0:40 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:? Sequence +0:45 Compare Equal (temp bool) +0:45 's3' (temp structure{temp 3-component vector of bool b3}) +0:45 's3' (temp structure{temp 3-component vector of bool b3}) +0:46 move second child to first child (temp 4-component vector of float) +0:46 i: direct index for structure (temp 4-component vector of float) +0:46 's2' (global structure{temp 4-component vector of float i}) +0:46 Constant: +0:46 0 (const int) +0:46 ff4: direct index for structure (temp 4-component vector of float) +0:46 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:46 Constant: +0:46 7 (const int) +0:50 move second child to first child (temp structure{}) +0:50 'e' (temp structure{}) +0:50 e: direct index for structure (temp structure{}) +0:50 'ce' (temp structure{temp structure{} e}) +0:50 Constant: +0:50 0 (const int) +0:52 Branch: Return with expression +0:52 'input' (in 4-component vector of float) +0:40 Function Definition: PixelShaderFunction( (temp void) +0:40 Function Parameters: 0:? Sequence -0:39 Compare Equal (temp bool) -0:39 's3' (temp structure{temp 3-component vector of bool b3}) -0:39 's3' (temp structure{temp 3-component vector of bool b3}) 0:40 move second child to first child (temp 4-component vector of float) -0:40 i: direct index for structure (temp 4-component vector of float) -0:40 's2' (global structure{temp 4-component vector of float i}) -0:40 Constant: -0:40 0 (const int) -0:40 ff4: direct index for structure (temp 4-component vector of float) -0:40 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:40 Constant: -0:40 7 (const int) -0:42 Branch: Return with expression -0:42 'input' (in 4-component vector of float) -0:34 Function Definition: PixelShaderFunction( (temp void) -0:34 Function Parameters: -0:? Sequence -0:34 move second child to first child (temp 4-component vector of float) 0:? 'input' (temp 4-component vector of float) 0:? 'input' (layout(location=0 ) in 4-component vector of float) -0:34 Sequence -0:34 move second child to first child (temp 4-component vector of float) -0:34 a: direct index for structure (temp 4-component vector of float) +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of float) +0:40 a: direct index for structure (temp 4-component vector of float) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 0 (const int) -0:34 a: direct index for structure (smooth temp 4-component vector of float) -0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 0 (const int) -0:34 move second child to first child (temp bool) -0:34 b: direct index for structure (temp bool) +0:40 Constant: +0:40 0 (const int) +0:40 a: direct index for structure (smooth temp 4-component vector of float) +0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:40 Constant: +0:40 0 (const int) +0:40 move second child to first child (temp bool) +0:40 b: direct index for structure (temp bool) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 1 (const int) -0:34 b: direct index for structure (flat temp bool) -0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 1 (const int) -0:34 move second child to first child (temp 1-component vector of float) -0:34 c: direct index for structure (temp 1-component vector of float) +0:40 Constant: +0:40 1 (const int) +0:40 b: direct index for structure (flat temp bool) +0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:40 Constant: +0:40 1 (const int) +0:40 move second child to first child (temp 1-component vector of float) +0:40 c: direct index for structure (temp 1-component vector of float) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 2 (const int) -0:34 c: direct index for structure (centroid noperspective temp 1-component vector of float) -0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 2 (const int) -0:34 move second child to first child (temp 2-component vector of float) -0:34 d: direct index for structure (temp 2-component vector of float) +0:40 Constant: +0:40 2 (const int) +0:40 c: direct index for structure (centroid noperspective temp 1-component vector of float) +0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:40 Constant: +0:40 2 (const int) +0:40 move second child to first child (temp 2-component vector of float) +0:40 d: direct index for structure (temp 2-component vector of float) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 3 (const int) -0:34 d: direct index for structure (centroid sample temp 2-component vector of float) -0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 3 (const int) -0:34 move second child to first child (temp bool) -0:34 ff1: direct index for structure (temp bool) +0:40 Constant: +0:40 3 (const int) +0:40 d: direct index for structure (centroid sample temp 2-component vector of float) +0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:40 Constant: +0:40 3 (const int) +0:40 move second child to first child (temp bool) +0:40 ff1: direct index for structure (temp bool) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 4 (const int) +0:40 Constant: +0:40 4 (const int) 0:? 's_ff1' (in bool Face) -0:34 move second child to first child (temp bool) -0:34 ff2: direct index for structure (temp bool) +0:40 move second child to first child (temp bool) +0:40 ff2: direct index for structure (temp bool) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 5 (const int) -0:34 ff2: direct index for structure (temp bool) -0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 4 (const int) -0:34 move second child to first child (temp bool) -0:34 ff3: direct index for structure (temp bool) +0:40 Constant: +0:40 5 (const int) +0:40 ff2: direct index for structure (temp bool) +0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:40 Constant: +0:40 4 (const int) +0:40 move second child to first child (temp bool) +0:40 ff3: direct index for structure (temp bool) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 6 (const int) -0:34 ff3: direct index for structure (temp bool) -0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 5 (const int) -0:34 move second child to first child (temp 4-component vector of float) -0:34 ff4: direct index for structure (temp 4-component vector of float) +0:40 Constant: +0:40 6 (const int) +0:40 ff3: direct index for structure (temp bool) +0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:40 Constant: +0:40 5 (const int) +0:40 move second child to first child (temp 4-component vector of float) +0:40 ff4: direct index for structure (temp 4-component vector of float) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 7 (const int) -0:34 ff4: direct index for structure (temp 4-component vector of float) -0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 6 (const int) -0:34 move second child to first child (temp 4-component vector of float) +0:40 Constant: +0:40 7 (const int) +0:40 ff4: direct index for structure (temp 4-component vector of float) +0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:40 Constant: +0:40 6 (const int) +0:40 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:34 Function Call: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float) +0:40 Function Call: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float) 0:? 'input' (temp 4-component vector of float) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:? Linker Objects @@ -121,104 +127,110 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:34 Function Definition: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float) -0:34 Function Parameters: -0:34 'input' (in 4-component vector of float) -0:34 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:40 Function Definition: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float) +0:40 Function Parameters: +0:40 'input' (in 4-component vector of float) +0:40 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:? Sequence +0:45 Compare Equal (temp bool) +0:45 's3' (temp structure{temp 3-component vector of bool b3}) +0:45 's3' (temp structure{temp 3-component vector of bool b3}) +0:46 move second child to first child (temp 4-component vector of float) +0:46 i: direct index for structure (temp 4-component vector of float) +0:46 's2' (global structure{temp 4-component vector of float i}) +0:46 Constant: +0:46 0 (const int) +0:46 ff4: direct index for structure (temp 4-component vector of float) +0:46 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:46 Constant: +0:46 7 (const int) +0:50 move second child to first child (temp structure{}) +0:50 'e' (temp structure{}) +0:50 e: direct index for structure (temp structure{}) +0:50 'ce' (temp structure{temp structure{} e}) +0:50 Constant: +0:50 0 (const int) +0:52 Branch: Return with expression +0:52 'input' (in 4-component vector of float) +0:40 Function Definition: PixelShaderFunction( (temp void) +0:40 Function Parameters: 0:? Sequence -0:39 Compare Equal (temp bool) -0:39 's3' (temp structure{temp 3-component vector of bool b3}) -0:39 's3' (temp structure{temp 3-component vector of bool b3}) 0:40 move second child to first child (temp 4-component vector of float) -0:40 i: direct index for structure (temp 4-component vector of float) -0:40 's2' (global structure{temp 4-component vector of float i}) -0:40 Constant: -0:40 0 (const int) -0:40 ff4: direct index for structure (temp 4-component vector of float) -0:40 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:40 Constant: -0:40 7 (const int) -0:42 Branch: Return with expression -0:42 'input' (in 4-component vector of float) -0:34 Function Definition: PixelShaderFunction( (temp void) -0:34 Function Parameters: -0:? Sequence -0:34 move second child to first child (temp 4-component vector of float) 0:? 'input' (temp 4-component vector of float) 0:? 'input' (layout(location=0 ) in 4-component vector of float) -0:34 Sequence -0:34 move second child to first child (temp 4-component vector of float) -0:34 a: direct index for structure (temp 4-component vector of float) +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of float) +0:40 a: direct index for structure (temp 4-component vector of float) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 0 (const int) -0:34 a: direct index for structure (smooth temp 4-component vector of float) -0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 0 (const int) -0:34 move second child to first child (temp bool) -0:34 b: direct index for structure (temp bool) +0:40 Constant: +0:40 0 (const int) +0:40 a: direct index for structure (smooth temp 4-component vector of float) +0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:40 Constant: +0:40 0 (const int) +0:40 move second child to first child (temp bool) +0:40 b: direct index for structure (temp bool) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 1 (const int) -0:34 b: direct index for structure (flat temp bool) -0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 1 (const int) -0:34 move second child to first child (temp 1-component vector of float) -0:34 c: direct index for structure (temp 1-component vector of float) +0:40 Constant: +0:40 1 (const int) +0:40 b: direct index for structure (flat temp bool) +0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:40 Constant: +0:40 1 (const int) +0:40 move second child to first child (temp 1-component vector of float) +0:40 c: direct index for structure (temp 1-component vector of float) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 2 (const int) -0:34 c: direct index for structure (centroid noperspective temp 1-component vector of float) -0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 2 (const int) -0:34 move second child to first child (temp 2-component vector of float) -0:34 d: direct index for structure (temp 2-component vector of float) +0:40 Constant: +0:40 2 (const int) +0:40 c: direct index for structure (centroid noperspective temp 1-component vector of float) +0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:40 Constant: +0:40 2 (const int) +0:40 move second child to first child (temp 2-component vector of float) +0:40 d: direct index for structure (temp 2-component vector of float) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 3 (const int) -0:34 d: direct index for structure (centroid sample temp 2-component vector of float) -0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 3 (const int) -0:34 move second child to first child (temp bool) -0:34 ff1: direct index for structure (temp bool) +0:40 Constant: +0:40 3 (const int) +0:40 d: direct index for structure (centroid sample temp 2-component vector of float) +0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:40 Constant: +0:40 3 (const int) +0:40 move second child to first child (temp bool) +0:40 ff1: direct index for structure (temp bool) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 4 (const int) +0:40 Constant: +0:40 4 (const int) 0:? 's_ff1' (in bool Face) -0:34 move second child to first child (temp bool) -0:34 ff2: direct index for structure (temp bool) +0:40 move second child to first child (temp bool) +0:40 ff2: direct index for structure (temp bool) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 5 (const int) -0:34 ff2: direct index for structure (temp bool) -0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 4 (const int) -0:34 move second child to first child (temp bool) -0:34 ff3: direct index for structure (temp bool) +0:40 Constant: +0:40 5 (const int) +0:40 ff2: direct index for structure (temp bool) +0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:40 Constant: +0:40 4 (const int) +0:40 move second child to first child (temp bool) +0:40 ff3: direct index for structure (temp bool) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 6 (const int) -0:34 ff3: direct index for structure (temp bool) -0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 5 (const int) -0:34 move second child to first child (temp 4-component vector of float) -0:34 ff4: direct index for structure (temp 4-component vector of float) +0:40 Constant: +0:40 6 (const int) +0:40 ff3: direct index for structure (temp bool) +0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:40 Constant: +0:40 5 (const int) +0:40 move second child to first child (temp 4-component vector of float) +0:40 ff4: direct index for structure (temp 4-component vector of float) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 7 (const int) -0:34 ff4: direct index for structure (temp 4-component vector of float) -0:34 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) -0:34 Constant: -0:34 6 (const int) -0:34 move second child to first child (temp 4-component vector of float) +0:40 Constant: +0:40 7 (const int) +0:40 ff4: direct index for structure (temp 4-component vector of float) +0:40 's' (layout(location=1 ) in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) +0:40 Constant: +0:40 6 (const int) +0:40 move second child to first child (temp 4-component vector of float) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) -0:34 Function Call: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float) +0:40 Function Call: @PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float) 0:? 'input' (temp 4-component vector of float) 0:? 's' (temp structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:? Linker Objects @@ -231,12 +243,12 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 97 +// Id's are bound by 105 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 43 48 71 86 + EntryPoint Fragment 4 "PixelShaderFunction" 51 56 79 94 ExecutionMode 4 OriginUpperLeft Name 4 "PixelShaderFunction" Name 11 "IN_S" @@ -257,49 +269,54 @@ gl_FragCoord origin is upper left Name 28 "" MemberName 28 0 "i" Name 30 "s2" - Name 41 "input" - Name 43 "input" - Name 45 "s" - Name 46 "IN_S" - MemberName 46(IN_S) 0 "a" - MemberName 46(IN_S) 1 "b" - MemberName 46(IN_S) 2 "c" - MemberName 46(IN_S) 3 "d" - MemberName 46(IN_S) 4 "ff2" - MemberName 46(IN_S) 5 "ff3" - MemberName 46(IN_S) 6 "ff4" - Name 48 "s" - Name 71 "s_ff1" - Name 86 "@entryPointOutput" - Name 87 "param" - Name 89 "param" - Name 93 "myS" - MemberName 93(myS) 0 "b" - MemberName 93(myS) 1 "c" - MemberName 93(myS) 2 "a" - MemberName 93(myS) 3 "d" - Name 94 "$Global" - MemberName 94($Global) 0 "s1" - MemberName 94($Global) 1 "ff5" - MemberName 94($Global) 2 "ff6" - Name 96 "" - Decorate 43(input) Location 0 - MemberDecorate 46(IN_S) 1 Flat - MemberDecorate 46(IN_S) 2 NoPerspective - MemberDecorate 46(IN_S) 2 Centroid - MemberDecorate 46(IN_S) 3 Centroid - Decorate 48(s) Location 1 - Decorate 71(s_ff1) BuiltIn FrontFacing - Decorate 86(@entryPointOutput) Location 0 - MemberDecorate 93(myS) 0 Offset 0 - MemberDecorate 93(myS) 1 Offset 4 - MemberDecorate 93(myS) 2 Offset 16 - MemberDecorate 93(myS) 3 Offset 32 - MemberDecorate 94($Global) 0 Offset 0 - MemberDecorate 94($Global) 1 Offset 1620 - MemberDecorate 94($Global) 2 Offset 1636 - Decorate 94($Global) Block - Decorate 96 DescriptorSet 0 + Name 38 "empty" + Name 40 "e" + Name 41 "containEmpty" + MemberName 41(containEmpty) 0 "e" + Name 43 "ce" + Name 49 "input" + Name 51 "input" + Name 53 "s" + Name 54 "IN_S" + MemberName 54(IN_S) 0 "a" + MemberName 54(IN_S) 1 "b" + MemberName 54(IN_S) 2 "c" + MemberName 54(IN_S) 3 "d" + MemberName 54(IN_S) 4 "ff2" + MemberName 54(IN_S) 5 "ff3" + MemberName 54(IN_S) 6 "ff4" + Name 56 "s" + Name 79 "s_ff1" + Name 94 "@entryPointOutput" + Name 95 "param" + Name 97 "param" + Name 101 "myS" + MemberName 101(myS) 0 "b" + MemberName 101(myS) 1 "c" + MemberName 101(myS) 2 "a" + MemberName 101(myS) 3 "d" + Name 102 "$Global" + MemberName 102($Global) 0 "s1" + MemberName 102($Global) 1 "ff5" + MemberName 102($Global) 2 "ff6" + Name 104 "" + Decorate 51(input) Location 0 + MemberDecorate 54(IN_S) 1 Flat + MemberDecorate 54(IN_S) 2 NoPerspective + MemberDecorate 54(IN_S) 2 Centroid + MemberDecorate 54(IN_S) 3 Centroid + Decorate 56(s) Location 1 + Decorate 79(s_ff1) BuiltIn FrontFacing + Decorate 94(@entryPointOutput) Location 0 + MemberDecorate 101(myS) 0 Offset 0 + MemberDecorate 101(myS) 1 Offset 4 + MemberDecorate 101(myS) 2 Offset 16 + MemberDecorate 101(myS) 3 Offset 32 + MemberDecorate 102($Global) 0 Offset 0 + MemberDecorate 102($Global) 1 Offset 1620 + MemberDecorate 102($Global) 2 Offset 1636 + Decorate 102($Global) Block + Decorate 104 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -320,76 +337,80 @@ gl_FragCoord origin is upper left 32: 31(int) Constant 0 33: 31(int) Constant 7 36: TypePointer Private 7(fvec4) - 42: TypePointer Input 7(fvec4) - 43(input): 42(ptr) Variable Input - 46(IN_S): TypeStruct 7(fvec4) 9(bool) 6(float) 10(fvec2) 9(bool) 9(bool) 7(fvec4) - 47: TypePointer Input 46(IN_S) - 48(s): 47(ptr) Variable Input - 52: 31(int) Constant 1 - 53: TypePointer Input 9(bool) - 56: TypePointer Function 9(bool) - 58: 31(int) Constant 2 - 59: TypePointer Input 6(float) - 62: TypePointer Function 6(float) - 64: 31(int) Constant 3 - 65: TypePointer Input 10(fvec2) - 68: TypePointer Function 10(fvec2) - 70: 31(int) Constant 4 - 71(s_ff1): 53(ptr) Variable Input - 74: 31(int) Constant 5 - 78: 31(int) Constant 6 - 85: TypePointer Output 7(fvec4) -86(@entryPointOutput): 85(ptr) Variable Output - 92: TypeInt 32 0 - 93(myS): TypeStruct 92(int) 92(int) 7(fvec4) 7(fvec4) - 94($Global): TypeStruct 93(myS) 6(float) 6(float) - 95: TypePointer Uniform 94($Global) - 96: 95(ptr) Variable Uniform + 38(empty): TypeStruct + 39: TypePointer Function 38(empty) +41(containEmpty): TypeStruct 38(empty) + 42: TypePointer Function 41(containEmpty) + 50: TypePointer Input 7(fvec4) + 51(input): 50(ptr) Variable Input + 54(IN_S): TypeStruct 7(fvec4) 9(bool) 6(float) 10(fvec2) 9(bool) 9(bool) 7(fvec4) + 55: TypePointer Input 54(IN_S) + 56(s): 55(ptr) Variable Input + 60: 31(int) Constant 1 + 61: TypePointer Input 9(bool) + 64: TypePointer Function 9(bool) + 66: 31(int) Constant 2 + 67: TypePointer Input 6(float) + 70: TypePointer Function 6(float) + 72: 31(int) Constant 3 + 73: TypePointer Input 10(fvec2) + 76: TypePointer Function 10(fvec2) + 78: 31(int) Constant 4 + 79(s_ff1): 61(ptr) Variable Input + 82: 31(int) Constant 5 + 86: 31(int) Constant 6 + 93: TypePointer Output 7(fvec4) +94(@entryPointOutput): 93(ptr) Variable Output + 100: TypeInt 32 0 + 101(myS): TypeStruct 100(int) 100(int) 7(fvec4) 7(fvec4) + 102($Global): TypeStruct 101(myS) 6(float) 6(float) + 103: TypePointer Uniform 102($Global) + 104: 103(ptr) Variable Uniform 4(PixelShaderFunction): 2 Function None 3 5: Label - 41(input): 8(ptr) Variable Function - 45(s): 12(ptr) Variable Function - 87(param): 8(ptr) Variable Function - 89(param): 12(ptr) Variable Function - 44: 7(fvec4) Load 43(input) - Store 41(input) 44 - 49: 42(ptr) AccessChain 48(s) 32 - 50: 7(fvec4) Load 49 - 51: 8(ptr) AccessChain 45(s) 32 - Store 51 50 - 54: 53(ptr) AccessChain 48(s) 52 - 55: 9(bool) Load 54 - 57: 56(ptr) AccessChain 45(s) 52 - Store 57 55 - 60: 59(ptr) AccessChain 48(s) 58 - 61: 6(float) Load 60 - 63: 62(ptr) AccessChain 45(s) 58 - Store 63 61 - 66: 65(ptr) AccessChain 48(s) 64 - 67: 10(fvec2) Load 66 - 69: 68(ptr) AccessChain 45(s) 64 - Store 69 67 - 72: 9(bool) Load 71(s_ff1) - 73: 56(ptr) AccessChain 45(s) 70 - Store 73 72 - 75: 53(ptr) AccessChain 48(s) 70 - 76: 9(bool) Load 75 - 77: 56(ptr) AccessChain 45(s) 74 - Store 77 76 - 79: 53(ptr) AccessChain 48(s) 74 - 80: 9(bool) Load 79 - 81: 56(ptr) AccessChain 45(s) 78 + 49(input): 8(ptr) Variable Function + 53(s): 12(ptr) Variable Function + 95(param): 8(ptr) Variable Function + 97(param): 12(ptr) Variable Function + 52: 7(fvec4) Load 51(input) + Store 49(input) 52 + 57: 50(ptr) AccessChain 56(s) 32 + 58: 7(fvec4) Load 57 + 59: 8(ptr) AccessChain 53(s) 32 + Store 59 58 + 62: 61(ptr) AccessChain 56(s) 60 + 63: 9(bool) Load 62 + 65: 64(ptr) AccessChain 53(s) 60 + Store 65 63 + 68: 67(ptr) AccessChain 56(s) 66 + 69: 6(float) Load 68 + 71: 70(ptr) AccessChain 53(s) 66 + Store 71 69 + 74: 73(ptr) AccessChain 56(s) 72 + 75: 10(fvec2) Load 74 + 77: 76(ptr) AccessChain 53(s) 72 + Store 77 75 + 80: 9(bool) Load 79(s_ff1) + 81: 64(ptr) AccessChain 53(s) 78 Store 81 80 - 82: 42(ptr) AccessChain 48(s) 78 - 83: 7(fvec4) Load 82 - 84: 8(ptr) AccessChain 45(s) 33 - Store 84 83 - 88: 7(fvec4) Load 41(input) - Store 87(param) 88 - 90: 11(IN_S) Load 45(s) - Store 89(param) 90 - 91: 7(fvec4) FunctionCall 16(@PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41;) 87(param) 89(param) - Store 86(@entryPointOutput) 91 + 83: 61(ptr) AccessChain 56(s) 78 + 84: 9(bool) Load 83 + 85: 64(ptr) AccessChain 53(s) 82 + Store 85 84 + 87: 61(ptr) AccessChain 56(s) 82 + 88: 9(bool) Load 87 + 89: 64(ptr) AccessChain 53(s) 86 + Store 89 88 + 90: 50(ptr) AccessChain 56(s) 86 + 91: 7(fvec4) Load 90 + 92: 8(ptr) AccessChain 53(s) 33 + Store 92 91 + 96: 7(fvec4) Load 49(input) + Store 95(param) 96 + 98: 11(IN_S) Load 53(s) + Store 97(param) 98 + 99: 7(fvec4) FunctionCall 16(@PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41;) 95(param) 97(param) + Store 94(@entryPointOutput) 99 Return FunctionEnd 16(@PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41;): 7(fvec4) Function None 13 @@ -397,6 +418,8 @@ gl_FragCoord origin is upper left 15(s): 12(ptr) FunctionParameter 17: Label 21(s3): 20(ptr) Variable Function + 40(e): 39(ptr) Variable Function + 43(ce): 42(ptr) Variable Function 22: 19(FS) Load 21(s3) 23: 19(FS) Load 21(s3) 24: 18(bvec3) CompositeExtract 22 0 @@ -407,6 +430,9 @@ gl_FragCoord origin is upper left 35: 7(fvec4) Load 34 37: 36(ptr) AccessChain 30(s2) 32 Store 37 35 - 38: 7(fvec4) Load 14(input) - ReturnValue 38 + 44: 39(ptr) AccessChain 43(ce) 32 + 45: 38(empty) Load 44 + Store 40(e) 45 + 46: 7(fvec4) Load 14(input) + ReturnValue 46 FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.structStructName.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.structStructName.frag.out new file mode 100755 index 000000000..da4c40061 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/hlsl.structStructName.frag.out @@ -0,0 +1,84 @@ +hlsl.structStructName.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:4 Function Definition: @main( (temp int) +0:4 Function Parameters: +0:? Sequence +0:6 Branch: Return with expression +0:6 s: direct index for structure (temp int) +0:6 't' (temp structure{temp int s}) +0:6 Constant: +0:6 0 (const int) +0:4 Function Definition: main( (temp void) +0:4 Function Parameters: +0:? Sequence +0:4 move second child to first child (temp int) +0:? '@entryPointOutput' (layout(location=0 ) out int) +0:4 Function Call: @main( (temp int) +0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out int) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:4 Function Definition: @main( (temp int) +0:4 Function Parameters: +0:? Sequence +0:6 Branch: Return with expression +0:6 s: direct index for structure (temp int) +0:6 't' (temp structure{temp int s}) +0:6 Constant: +0:6 0 (const int) +0:4 Function Definition: main( (temp void) +0:4 Function Parameters: +0:? Sequence +0:4 move second child to first child (temp int) +0:? '@entryPointOutput' (layout(location=0 ) out int) +0:4 Function Call: @main( (temp int) +0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out int) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 22 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 20 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "@main(" + Name 10 "S" + MemberName 10(S) 0 "s" + Name 12 "t" + Name 20 "@entryPointOutput" + Decorate 20(@entryPointOutput) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypeFunction 6(int) + 10(S): TypeStruct 6(int) + 11: TypePointer Function 10(S) + 13: 6(int) Constant 0 + 14: TypePointer Function 6(int) + 19: TypePointer Output 6(int) +20(@entryPointOutput): 19(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 21: 6(int) FunctionCall 8(@main() + Store 20(@entryPointOutput) 21 + Return + FunctionEnd + 8(@main(): 6(int) Function None 7 + 9: Label + 12(t): 11(ptr) Variable Function + 15: 14(ptr) AccessChain 12(t) 13 + 16: 6(int) Load 15 + ReturnValue 16 + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.atomics.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.atomics.frag.out index 7f20d5fb5..ffa2d82a6 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.atomics.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.atomics.frag.out @@ -8,8 +8,8 @@ gl_FragCoord origin is upper left 0:? Sequence 0:8 AtomicAdd (temp void) 0:8 indirect index (layout(row_major std430 ) buffer uint) -0:8 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:8 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:8 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:8 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:8 Constant: 0:8 0 (const uint) 0:8 right-shift (temp int) @@ -23,8 +23,8 @@ gl_FragCoord origin is upper left 0:9 'u' (temp uint) 0:9 AtomicAdd (temp uint) 0:9 indirect index (layout(row_major std430 ) buffer uint) -0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 right-shift (temp int) @@ -36,8 +36,8 @@ gl_FragCoord origin is upper left 0:9 1 (const int) 0:10 AtomicAnd (temp void) 0:10 indirect index (layout(row_major std430 ) buffer uint) -0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 right-shift (temp int) @@ -51,8 +51,8 @@ gl_FragCoord origin is upper left 0:11 'u' (temp uint) 0:11 AtomicAnd (temp uint) 0:11 indirect index (layout(row_major std430 ) buffer uint) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 right-shift (temp int) @@ -67,8 +67,8 @@ gl_FragCoord origin is upper left 0:12 Convert int to uint (temp uint) 0:12 AtomicCompSwap (temp int) 0:12 indirect index (layout(row_major std430 ) buffer uint) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 right-shift (temp int) @@ -84,8 +84,8 @@ gl_FragCoord origin is upper left 0:14 'u' (temp uint) 0:14 AtomicExchange (temp uint) 0:14 indirect index (layout(row_major std430 ) buffer uint) -0:14 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:14 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:14 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:14 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 right-shift (temp int) @@ -97,8 +97,8 @@ gl_FragCoord origin is upper left 0:14 1 (const int) 0:15 AtomicMax (temp void) 0:15 indirect index (layout(row_major std430 ) buffer uint) -0:15 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:15 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:15 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:15 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 right-shift (temp int) @@ -112,8 +112,8 @@ gl_FragCoord origin is upper left 0:16 'u' (temp uint) 0:16 AtomicMax (temp uint) 0:16 indirect index (layout(row_major std430 ) buffer uint) -0:16 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:16 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:16 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:16 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 right-shift (temp int) @@ -125,8 +125,8 @@ gl_FragCoord origin is upper left 0:16 1 (const int) 0:17 AtomicMin (temp void) 0:17 indirect index (layout(row_major std430 ) buffer uint) -0:17 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:17 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:17 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 right-shift (temp int) @@ -140,8 +140,8 @@ gl_FragCoord origin is upper left 0:18 'u' (temp uint) 0:18 AtomicMin (temp uint) 0:18 indirect index (layout(row_major std430 ) buffer uint) -0:18 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:18 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:18 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:18 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:18 Constant: 0:18 0 (const uint) 0:18 right-shift (temp int) @@ -153,8 +153,8 @@ gl_FragCoord origin is upper left 0:18 1 (const int) 0:19 AtomicOr (temp void) 0:19 indirect index (layout(row_major std430 ) buffer uint) -0:19 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:19 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:19 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 right-shift (temp int) @@ -168,8 +168,8 @@ gl_FragCoord origin is upper left 0:20 'u' (temp uint) 0:20 AtomicOr (temp uint) 0:20 indirect index (layout(row_major std430 ) buffer uint) -0:20 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:20 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:20 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 right-shift (temp int) @@ -181,8 +181,8 @@ gl_FragCoord origin is upper left 0:20 1 (const int) 0:21 AtomicXor (temp void) 0:21 indirect index (layout(row_major std430 ) buffer uint) -0:21 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:21 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:21 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:21 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 right-shift (temp int) @@ -196,8 +196,8 @@ gl_FragCoord origin is upper left 0:22 'u' (temp uint) 0:22 AtomicXor (temp uint) 0:22 indirect index (layout(row_major std430 ) buffer uint) -0:22 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:22 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:22 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:22 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 right-shift (temp int) @@ -211,8 +211,8 @@ gl_FragCoord origin is upper left 0:24 Construct vec4 (temp 4-component vector of float) 0:24 Convert uint to float (temp float) 0:24 indirect index (layout(row_major std430 ) buffer uint) -0:24 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:24 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:24 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:24 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 right-shift (temp int) @@ -230,7 +230,7 @@ gl_FragCoord origin is upper left 0:5 Function Call: @main(u1; (temp 4-component vector of float) 0:? 'pos' (temp uint) 0:? Linker Objects -0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'pos' (layout(location=0 ) in uint) @@ -247,8 +247,8 @@ gl_FragCoord origin is upper left 0:? Sequence 0:8 AtomicAdd (temp void) 0:8 indirect index (layout(row_major std430 ) buffer uint) -0:8 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:8 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:8 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:8 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:8 Constant: 0:8 0 (const uint) 0:8 right-shift (temp int) @@ -262,8 +262,8 @@ gl_FragCoord origin is upper left 0:9 'u' (temp uint) 0:9 AtomicAdd (temp uint) 0:9 indirect index (layout(row_major std430 ) buffer uint) -0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 right-shift (temp int) @@ -275,8 +275,8 @@ gl_FragCoord origin is upper left 0:9 1 (const int) 0:10 AtomicAnd (temp void) 0:10 indirect index (layout(row_major std430 ) buffer uint) -0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 right-shift (temp int) @@ -290,8 +290,8 @@ gl_FragCoord origin is upper left 0:11 'u' (temp uint) 0:11 AtomicAnd (temp uint) 0:11 indirect index (layout(row_major std430 ) buffer uint) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 right-shift (temp int) @@ -306,8 +306,8 @@ gl_FragCoord origin is upper left 0:12 Convert int to uint (temp uint) 0:12 AtomicCompSwap (temp int) 0:12 indirect index (layout(row_major std430 ) buffer uint) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 right-shift (temp int) @@ -323,8 +323,8 @@ gl_FragCoord origin is upper left 0:14 'u' (temp uint) 0:14 AtomicExchange (temp uint) 0:14 indirect index (layout(row_major std430 ) buffer uint) -0:14 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:14 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:14 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:14 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 right-shift (temp int) @@ -336,8 +336,8 @@ gl_FragCoord origin is upper left 0:14 1 (const int) 0:15 AtomicMax (temp void) 0:15 indirect index (layout(row_major std430 ) buffer uint) -0:15 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:15 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:15 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:15 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:15 Constant: 0:15 0 (const uint) 0:15 right-shift (temp int) @@ -351,8 +351,8 @@ gl_FragCoord origin is upper left 0:16 'u' (temp uint) 0:16 AtomicMax (temp uint) 0:16 indirect index (layout(row_major std430 ) buffer uint) -0:16 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:16 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:16 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:16 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:16 Constant: 0:16 0 (const uint) 0:16 right-shift (temp int) @@ -364,8 +364,8 @@ gl_FragCoord origin is upper left 0:16 1 (const int) 0:17 AtomicMin (temp void) 0:17 indirect index (layout(row_major std430 ) buffer uint) -0:17 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:17 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:17 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 right-shift (temp int) @@ -379,8 +379,8 @@ gl_FragCoord origin is upper left 0:18 'u' (temp uint) 0:18 AtomicMin (temp uint) 0:18 indirect index (layout(row_major std430 ) buffer uint) -0:18 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:18 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:18 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:18 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:18 Constant: 0:18 0 (const uint) 0:18 right-shift (temp int) @@ -392,8 +392,8 @@ gl_FragCoord origin is upper left 0:18 1 (const int) 0:19 AtomicOr (temp void) 0:19 indirect index (layout(row_major std430 ) buffer uint) -0:19 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:19 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:19 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 right-shift (temp int) @@ -407,8 +407,8 @@ gl_FragCoord origin is upper left 0:20 'u' (temp uint) 0:20 AtomicOr (temp uint) 0:20 indirect index (layout(row_major std430 ) buffer uint) -0:20 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:20 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:20 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 right-shift (temp int) @@ -420,8 +420,8 @@ gl_FragCoord origin is upper left 0:20 1 (const int) 0:21 AtomicXor (temp void) 0:21 indirect index (layout(row_major std430 ) buffer uint) -0:21 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:21 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:21 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:21 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:21 Constant: 0:21 0 (const uint) 0:21 right-shift (temp int) @@ -435,8 +435,8 @@ gl_FragCoord origin is upper left 0:22 'u' (temp uint) 0:22 AtomicXor (temp uint) 0:22 indirect index (layout(row_major std430 ) buffer uint) -0:22 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:22 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:22 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:22 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:22 Constant: 0:22 0 (const uint) 0:22 right-shift (temp int) @@ -450,8 +450,8 @@ gl_FragCoord origin is upper left 0:24 Construct vec4 (temp 4-component vector of float) 0:24 Convert uint to float (temp float) 0:24 indirect index (layout(row_major std430 ) buffer uint) -0:24 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:24 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:24 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:24 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:24 Constant: 0:24 0 (const uint) 0:24 right-shift (temp int) @@ -469,7 +469,7 @@ gl_FragCoord origin is upper left 0:5 Function Call: @main(u1; (temp 4-component vector of float) 0:? 'pos' (temp uint) 0:? Linker Objects -0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'pos' (layout(location=0 ) in uint) @@ -486,8 +486,8 @@ gl_FragCoord origin is upper left Name 12 "@main(u1;" Name 11 "pos" Name 15 "sbuf" - MemberName 15(sbuf) 0 "sbuf" - Name 17 "" + MemberName 15(sbuf) 0 "@data" + Name 17 "sbuf" Name 29 "u" Name 78 "pos" Name 80 "pos" @@ -496,7 +496,7 @@ gl_FragCoord origin is upper left Decorate 14 ArrayStride 4 MemberDecorate 15(sbuf) 0 Offset 0 Decorate 15(sbuf) BufferBlock - Decorate 17 DescriptorSet 0 + Decorate 17(sbuf) DescriptorSet 0 Decorate 80(pos) Location 0 Decorate 83(@entryPointOutput) Location 0 2: TypeVoid @@ -509,7 +509,7 @@ gl_FragCoord origin is upper left 14: TypeRuntimeArray 6(int) 15(sbuf): TypeStruct 14 16: TypePointer Uniform 15(sbuf) - 17: 16(ptr) Variable Uniform + 17(sbuf): 16(ptr) Variable Uniform 18: TypeInt 32 1 19: 18(int) Constant 0 20: 18(int) Constant 8 @@ -539,59 +539,59 @@ gl_FragCoord origin is upper left 13: Label 29(u): 7(ptr) Variable Function 22: 18(int) ShiftRightArithmetic 20 21 - 24: 23(ptr) AccessChain 17 19 22 + 24: 23(ptr) AccessChain 17(sbuf) 19 22 28: 2 AtomicIAdd 24 26 27 25 30: 18(int) ShiftRightArithmetic 20 21 - 31: 23(ptr) AccessChain 17 19 30 + 31: 23(ptr) AccessChain 17(sbuf) 19 30 32: 6(int) AtomicIAdd 31 26 27 25 Store 29(u) 32 33: 18(int) ShiftRightArithmetic 20 21 - 34: 23(ptr) AccessChain 17 19 33 + 34: 23(ptr) AccessChain 17(sbuf) 19 33 35: 2 AtomicAnd 34 26 27 25 36: 18(int) ShiftRightArithmetic 20 21 - 37: 23(ptr) AccessChain 17 19 36 + 37: 23(ptr) AccessChain 17(sbuf) 19 36 38: 6(int) AtomicAnd 37 26 27 25 Store 29(u) 38 39: 18(int) ShiftRightArithmetic 20 21 - 40: 23(ptr) AccessChain 17 19 39 + 40: 23(ptr) AccessChain 17(sbuf) 19 39 41: 18(int) AtomicCompareExchange 40 26 27 27 21 25 42: 6(int) Bitcast 41 Store 29(u) 42 43: 18(int) ShiftRightArithmetic 20 21 - 44: 23(ptr) AccessChain 17 19 43 + 44: 23(ptr) AccessChain 17(sbuf) 19 43 45: 6(int) AtomicExchange 44 26 27 25 Store 29(u) 45 46: 18(int) ShiftRightArithmetic 20 21 - 47: 23(ptr) AccessChain 17 19 46 + 47: 23(ptr) AccessChain 17(sbuf) 19 46 48: 2 AtomicSMax 47 26 27 25 49: 18(int) ShiftRightArithmetic 20 21 - 50: 23(ptr) AccessChain 17 19 49 + 50: 23(ptr) AccessChain 17(sbuf) 19 49 51: 6(int) AtomicUMax 50 26 27 25 Store 29(u) 51 52: 18(int) ShiftRightArithmetic 20 21 - 53: 23(ptr) AccessChain 17 19 52 + 53: 23(ptr) AccessChain 17(sbuf) 19 52 54: 2 AtomicSMin 53 26 27 25 55: 18(int) ShiftRightArithmetic 20 21 - 56: 23(ptr) AccessChain 17 19 55 + 56: 23(ptr) AccessChain 17(sbuf) 19 55 57: 6(int) AtomicUMin 56 26 27 25 Store 29(u) 57 58: 18(int) ShiftRightArithmetic 20 21 - 59: 23(ptr) AccessChain 17 19 58 + 59: 23(ptr) AccessChain 17(sbuf) 19 58 60: 2 AtomicOr 59 26 27 25 61: 18(int) ShiftRightArithmetic 20 21 - 62: 23(ptr) AccessChain 17 19 61 + 62: 23(ptr) AccessChain 17(sbuf) 19 61 63: 6(int) AtomicOr 62 26 27 25 Store 29(u) 63 64: 18(int) ShiftRightArithmetic 20 21 - 65: 23(ptr) AccessChain 17 19 64 + 65: 23(ptr) AccessChain 17(sbuf) 19 64 66: 2 AtomicXor 65 26 27 25 67: 18(int) ShiftRightArithmetic 20 21 - 68: 23(ptr) AccessChain 17 19 67 + 68: 23(ptr) AccessChain 17(sbuf) 19 67 69: 6(int) AtomicXor 68 26 27 25 Store 29(u) 69 70: 6(int) Load 11(pos) 71: 18(int) ShiftRightLogical 70 21 - 72: 23(ptr) AccessChain 17 19 71 + 72: 23(ptr) AccessChain 17(sbuf) 19 71 73: 6(int) Load 72 74: 8(float) ConvertUToF 73 75: 9(fvec4) CompositeConstruct 74 74 74 74 diff --git a/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.byte.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.byte.frag.out index 57e6f0cb1..05db7f37c 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.byte.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.byte.frag.out @@ -10,8 +10,8 @@ gl_FragCoord origin is upper left 0:7 move second child to first child (temp uint) 0:7 'size' (temp uint) 0:7 array length (temp uint) -0:7 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:7 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:7 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:7 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:7 Constant: 0:7 0 (const uint) 0:12 Branch: Return with expression @@ -19,9 +19,9 @@ gl_FragCoord origin is upper left 0:10 add (temp 4-component vector of float) 0:9 add (temp 4-component vector of float) 0:9 Convert uint to float (temp float) -0:9 indirect index (layout(row_major std430 ) readonly buffer uint) -0:9 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:9 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:9 indirect index (layout(row_major std430 ) buffer uint) +0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:9 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 right-shift (temp int) @@ -42,14 +42,14 @@ gl_FragCoord origin is upper left 0:10 2 (const int) 0:? Construct vec2 (temp 2-component vector of uint) 0:10 indirect index (temp float) -0:10 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 'byteAddrTemp' (temp int) 0:10 indirect index (temp float) -0:10 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add (temp int) @@ -74,14 +74,14 @@ gl_FragCoord origin is upper left 0:11 2 (const int) 0:? Construct vec3 (temp 3-component vector of uint) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' (temp int) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -89,8 +89,8 @@ gl_FragCoord origin is upper left 0:11 Constant: 0:11 1 (const int) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -112,14 +112,14 @@ gl_FragCoord origin is upper left 0:12 2 (const int) 0:? Construct vec4 (temp 4-component vector of uint) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' (temp int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -127,8 +127,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 1 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -136,8 +136,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 2 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -155,7 +155,7 @@ gl_FragCoord origin is upper left 0:5 Function Call: @main(u1; (temp 4-component vector of float) 0:? 'pos' (temp uint) 0:? Linker Objects -0:? 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:? 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'pos' (layout(location=0 ) in uint) @@ -174,8 +174,8 @@ gl_FragCoord origin is upper left 0:7 move second child to first child (temp uint) 0:7 'size' (temp uint) 0:7 array length (temp uint) -0:7 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:7 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:7 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:7 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:7 Constant: 0:7 0 (const uint) 0:12 Branch: Return with expression @@ -183,9 +183,9 @@ gl_FragCoord origin is upper left 0:10 add (temp 4-component vector of float) 0:9 add (temp 4-component vector of float) 0:9 Convert uint to float (temp float) -0:9 indirect index (layout(row_major std430 ) readonly buffer uint) -0:9 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:9 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:9 indirect index (layout(row_major std430 ) buffer uint) +0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:9 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 right-shift (temp int) @@ -206,14 +206,14 @@ gl_FragCoord origin is upper left 0:10 2 (const int) 0:? Construct vec2 (temp 2-component vector of uint) 0:10 indirect index (temp float) -0:10 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 'byteAddrTemp' (temp int) 0:10 indirect index (temp float) -0:10 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add (temp int) @@ -238,14 +238,14 @@ gl_FragCoord origin is upper left 0:11 2 (const int) 0:? Construct vec3 (temp 3-component vector of uint) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' (temp int) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -253,8 +253,8 @@ gl_FragCoord origin is upper left 0:11 Constant: 0:11 1 (const int) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -276,14 +276,14 @@ gl_FragCoord origin is upper left 0:12 2 (const int) 0:? Construct vec4 (temp 4-component vector of uint) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' (temp int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -291,8 +291,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 1 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -300,8 +300,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 2 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -319,7 +319,7 @@ gl_FragCoord origin is upper left 0:5 Function Call: @main(u1; (temp 4-component vector of float) 0:? 'pos' (temp uint) 0:? Linker Objects -0:? 'anon@0' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of uint sbuf}) +0:? 'sbuf' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'pos' (layout(location=0 ) in uint) @@ -337,8 +337,8 @@ gl_FragCoord origin is upper left Name 11 "pos" Name 14 "size" Name 16 "sbuf" - MemberName 16(sbuf) 0 "sbuf" - Name 18 "" + MemberName 16(sbuf) 0 "@data" + Name 18 "sbuf" Name 30 "byteAddrTemp" Name 53 "byteAddrTemp" Name 78 "byteAddrTemp" @@ -350,7 +350,7 @@ gl_FragCoord origin is upper left MemberDecorate 16(sbuf) 0 NonWritable MemberDecorate 16(sbuf) 0 Offset 0 Decorate 16(sbuf) BufferBlock - Decorate 18 DescriptorSet 0 + Decorate 18(sbuf) DescriptorSet 0 Decorate 107(pos) Location 0 Decorate 110(@entryPointOutput) Location 0 2: TypeVoid @@ -363,7 +363,7 @@ gl_FragCoord origin is upper left 15: TypeRuntimeArray 6(int) 16(sbuf): TypeStruct 15 17: TypePointer Uniform 16(sbuf) - 18: 17(ptr) Variable Uniform + 18(sbuf): 17(ptr) Variable Uniform 19: TypeInt 32 1 21: 19(int) Constant 0 23: 19(int) Constant 2 @@ -403,11 +403,11 @@ gl_FragCoord origin is upper left 30(byteAddrTemp): 29(ptr) Variable Function 53(byteAddrTemp): 29(ptr) Variable Function 78(byteAddrTemp): 29(ptr) Variable Function - 20: 19(int) ArrayLength 18 0 + 20: 19(int) ArrayLength 18(sbuf) 0 Store 14(size) 20 22: 6(int) Load 11(pos) 24: 19(int) ShiftRightLogical 22 23 - 26: 25(ptr) AccessChain 18 21 24 + 26: 25(ptr) AccessChain 18(sbuf) 21 24 27: 6(int) Load 26 28: 8(float) ConvertUToF 27 31: 6(int) Load 11(pos) @@ -415,11 +415,11 @@ gl_FragCoord origin is upper left 34: 19(int) ShiftRightLogical 33 23 Store 30(byteAddrTemp) 34 35: 19(int) Load 30(byteAddrTemp) - 36: 25(ptr) AccessChain 18 21 35 + 36: 25(ptr) AccessChain 18(sbuf) 21 35 37: 6(int) Load 36 38: 19(int) Load 30(byteAddrTemp) 40: 19(int) IAdd 38 39 - 41: 25(ptr) AccessChain 18 21 40 + 41: 25(ptr) AccessChain 18(sbuf) 21 40 42: 6(int) Load 41 44: 43(ivec2) CompositeConstruct 37 42 46: 45(fvec2) ConvertUToF 44 @@ -433,15 +433,15 @@ gl_FragCoord origin is upper left 57: 19(int) ShiftRightLogical 56 23 Store 53(byteAddrTemp) 57 58: 19(int) Load 53(byteAddrTemp) - 59: 25(ptr) AccessChain 18 21 58 + 59: 25(ptr) AccessChain 18(sbuf) 21 58 60: 6(int) Load 59 61: 19(int) Load 53(byteAddrTemp) 62: 19(int) IAdd 61 39 - 63: 25(ptr) AccessChain 18 21 62 + 63: 25(ptr) AccessChain 18(sbuf) 21 62 64: 6(int) Load 63 65: 19(int) Load 53(byteAddrTemp) 66: 19(int) IAdd 65 23 - 67: 25(ptr) AccessChain 18 21 66 + 67: 25(ptr) AccessChain 18(sbuf) 21 66 68: 6(int) Load 67 70: 69(ivec3) CompositeConstruct 60 64 68 72: 71(fvec3) ConvertUToF 70 @@ -455,19 +455,19 @@ gl_FragCoord origin is upper left 82: 19(int) ShiftRightLogical 81 23 Store 78(byteAddrTemp) 82 83: 19(int) Load 78(byteAddrTemp) - 84: 25(ptr) AccessChain 18 21 83 + 84: 25(ptr) AccessChain 18(sbuf) 21 83 85: 6(int) Load 84 86: 19(int) Load 78(byteAddrTemp) 87: 19(int) IAdd 86 39 - 88: 25(ptr) AccessChain 18 21 87 + 88: 25(ptr) AccessChain 18(sbuf) 21 87 89: 6(int) Load 88 90: 19(int) Load 78(byteAddrTemp) 91: 19(int) IAdd 90 23 - 92: 25(ptr) AccessChain 18 21 91 + 92: 25(ptr) AccessChain 18(sbuf) 21 91 93: 6(int) Load 92 94: 19(int) Load 78(byteAddrTemp) 96: 19(int) IAdd 94 95 - 97: 25(ptr) AccessChain 18 21 96 + 97: 25(ptr) AccessChain 18(sbuf) 21 96 98: 6(int) Load 97 100: 99(ivec4) CompositeConstruct 85 89 93 98 101: 9(fvec4) ConvertUToF 100 diff --git a/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.coherent.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.coherent.frag.out index 56b5abb3f..8ba045499 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.coherent.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.coherent.frag.out @@ -7,9 +7,9 @@ gl_FragCoord origin is upper left 0:12 'pos' (in uint) 0:? Sequence 0:13 move second child to first child (temp float) -0:13 indirect index (layout(row_major std430 ) coherent temp float) -0:13 sbuf2: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of float) -0:13 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2}) +0:13 indirect index (layout(row_major std430 ) buffer float) +0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float) +0:13 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data}) 0:13 Constant: 0:13 0 (const uint) 0:13 add (temp uint) @@ -22,8 +22,8 @@ gl_FragCoord origin is upper left 0:17 move second child to first child (temp uint) 0:17 'size' (temp uint) 0:17 array length (temp uint) -0:17 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) -0:17 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf}) +0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) +0:17 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 move second child to first child (temp uint) @@ -33,9 +33,9 @@ gl_FragCoord origin is upper left 0:19 Test condition and select (temp void) 0:19 Condition 0:19 test: direct index for structure (temp bool) -0:19 indirect index (layout(row_major std430 ) coherent temp structure{temp 3-component vector of float color, temp bool test}) -0:19 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) -0:19 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf}) +0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test}) +0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) +0:19 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 'pos' (in uint) @@ -46,17 +46,17 @@ gl_FragCoord origin is upper left 0:? Construct vec4 (temp 4-component vector of float) 0:20 add (temp 3-component vector of float) 0:20 color: direct index for structure (temp 3-component vector of float) -0:20 indirect index (layout(row_major std430 ) coherent temp structure{temp 3-component vector of float color, temp bool test}) -0:20 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) -0:20 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf}) +0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test}) +0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) +0:20 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' (in uint) 0:20 Constant: 0:20 0 (const int) -0:20 indirect index (layout(row_major std430 ) coherent temp float) -0:20 sbuf2: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of float) -0:20 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2}) +0:20 indirect index (layout(row_major std430 ) buffer float) +0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float) +0:20 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' (in uint) @@ -80,8 +80,8 @@ gl_FragCoord origin is upper left 0:12 Function Call: @main(u1; (temp 4-component vector of float) 0:? 'pos' (temp uint) 0:? Linker Objects -0:? 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf}) -0:? 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2}) +0:? 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data}) +0:? 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'pos' (layout(location=0 ) in uint) @@ -97,9 +97,9 @@ gl_FragCoord origin is upper left 0:12 'pos' (in uint) 0:? Sequence 0:13 move second child to first child (temp float) -0:13 indirect index (layout(row_major std430 ) coherent temp float) -0:13 sbuf2: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of float) -0:13 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2}) +0:13 indirect index (layout(row_major std430 ) buffer float) +0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float) +0:13 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data}) 0:13 Constant: 0:13 0 (const uint) 0:13 add (temp uint) @@ -112,8 +112,8 @@ gl_FragCoord origin is upper left 0:17 move second child to first child (temp uint) 0:17 'size' (temp uint) 0:17 array length (temp uint) -0:17 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) -0:17 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf}) +0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) +0:17 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 move second child to first child (temp uint) @@ -123,9 +123,9 @@ gl_FragCoord origin is upper left 0:19 Test condition and select (temp void) 0:19 Condition 0:19 test: direct index for structure (temp bool) -0:19 indirect index (layout(row_major std430 ) coherent temp structure{temp 3-component vector of float color, temp bool test}) -0:19 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) -0:19 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf}) +0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test}) +0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) +0:19 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 'pos' (in uint) @@ -136,17 +136,17 @@ gl_FragCoord origin is upper left 0:? Construct vec4 (temp 4-component vector of float) 0:20 add (temp 3-component vector of float) 0:20 color: direct index for structure (temp 3-component vector of float) -0:20 indirect index (layout(row_major std430 ) coherent temp structure{temp 3-component vector of float color, temp bool test}) -0:20 sbuf: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) -0:20 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf}) +0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test}) +0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) +0:20 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' (in uint) 0:20 Constant: 0:20 0 (const int) -0:20 indirect index (layout(row_major std430 ) coherent temp float) -0:20 sbuf2: direct index for structure (layout(row_major std430 ) coherent buffer implicitly-sized array of float) -0:20 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2}) +0:20 indirect index (layout(row_major std430 ) buffer float) +0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float) +0:20 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' (in uint) @@ -170,8 +170,8 @@ gl_FragCoord origin is upper left 0:12 Function Call: @main(u1; (temp 4-component vector of float) 0:? 'pos' (temp uint) 0:? Linker Objects -0:? 'anon@0' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf}) -0:? 'anon@1' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) coherent buffer implicitly-sized array of float sbuf2}) +0:? 'sbuf' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data}) +0:? 'sbuf2' (layout(row_major std430 ) coherent buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'pos' (layout(location=0 ) in uint) @@ -188,15 +188,15 @@ gl_FragCoord origin is upper left Name 12 "@main(u1;" Name 11 "pos" Name 15 "sbuf2" - MemberName 15(sbuf2) 0 "sbuf2" - Name 17 "" + MemberName 15(sbuf2) 0 "@data" + Name 17 "sbuf2" Name 26 "size" Name 28 "sb_t" MemberName 28(sb_t) 0 "color" MemberName 28(sb_t) 1 "test" Name 30 "sbuf" - MemberName 30(sbuf) 0 "sbuf" - Name 32 "" + MemberName 30(sbuf) 0 "@data" + Name 32 "sbuf" Name 34 "stride" Name 69 "pos" Name 71 "pos" @@ -206,7 +206,7 @@ gl_FragCoord origin is upper left MemberDecorate 15(sbuf2) 0 Coherent MemberDecorate 15(sbuf2) 0 Offset 0 Decorate 15(sbuf2) BufferBlock - Decorate 17 DescriptorSet 0 + Decorate 17(sbuf2) DescriptorSet 0 MemberDecorate 28(sb_t) 0 Coherent MemberDecorate 28(sb_t) 0 Offset 0 MemberDecorate 28(sb_t) 1 Coherent @@ -215,7 +215,7 @@ gl_FragCoord origin is upper left MemberDecorate 30(sbuf) 0 Coherent MemberDecorate 30(sbuf) 0 Offset 0 Decorate 30(sbuf) BufferBlock - Decorate 32 DescriptorSet 0 + Decorate 32(sbuf) DescriptorSet 0 Decorate 71(pos) Location 0 Decorate 74(@entryPointOutput) Location 0 2: TypeVoid @@ -228,7 +228,7 @@ gl_FragCoord origin is upper left 14: TypeRuntimeArray 8(float) 15(sbuf2): TypeStruct 14 16: TypePointer Uniform 15(sbuf2) - 17: 16(ptr) Variable Uniform + 17(sbuf2): 16(ptr) Variable Uniform 18: TypeInt 32 1 19: 18(int) Constant 0 21: 6(int) Constant 1 @@ -239,7 +239,7 @@ gl_FragCoord origin is upper left 29: TypeRuntimeArray 28(sb_t) 30(sbuf): TypeStruct 29 31: TypePointer Uniform 30(sbuf) - 32: 31(ptr) Variable Uniform + 32(sbuf): 31(ptr) Variable Uniform 35: 6(int) Constant 16 37: 18(int) Constant 1 38: TypePointer Uniform 6(int) @@ -270,23 +270,23 @@ gl_FragCoord origin is upper left 34(stride): 7(ptr) Variable Function 20: 6(int) Load 11(pos) 22: 6(int) IAdd 20 21 - 25: 24(ptr) AccessChain 17 19 22 + 25: 24(ptr) AccessChain 17(sbuf2) 19 22 Store 25 23 - 33: 18(int) ArrayLength 32 0 + 33: 18(int) ArrayLength 32(sbuf) 0 Store 26(size) 33 Store 34(stride) 35 36: 6(int) Load 11(pos) - 39: 38(ptr) AccessChain 32 19 36 37 + 39: 38(ptr) AccessChain 32(sbuf) 19 36 37 40: 6(int) Load 39 43: 41(bool) INotEqual 40 42 SelectionMerge 45 None BranchConditional 43 44 61 44: Label 46: 6(int) Load 11(pos) - 48: 47(ptr) AccessChain 32 19 46 19 + 48: 47(ptr) AccessChain 32(sbuf) 19 46 19 49: 27(fvec3) Load 48 50: 6(int) Load 11(pos) - 51: 24(ptr) AccessChain 17 19 50 + 51: 24(ptr) AccessChain 17(sbuf2) 19 50 52: 8(float) Load 51 53: 27(fvec3) CompositeConstruct 52 52 52 54: 27(fvec3) FAdd 49 53 diff --git a/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.fn.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.fn.frag.out new file mode 100644 index 000000000..daf78b1cc --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.fn.frag.out @@ -0,0 +1,266 @@ +hlsl.structbuffer.fn.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:9 Function Definition: get(block--vu4[0]1;u1; (temp 4-component vector of uint) +0:9 Function Parameters: +0:9 'sb' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data}) +0:9 'bufferOffset' (in uint) +0:? Sequence +0:10 Branch: Return with expression +0:10 indirect index (layout(row_major std430 ) buffer 4-component vector of uint) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint) +0:10 'sb' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data}) +0:10 Constant: +0:10 0 (const uint) +0:10 'bufferOffset' (in uint) +0:14 Function Definition: set(block--vu4[0]1;u1;vu4; (temp void) +0:14 Function Parameters: +0:14 'sb' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data}) +0:14 'bufferOffset' (in uint) +0:14 'data' (in 4-component vector of uint) +0:? Sequence +0:15 move second child to first child (temp 4-component vector of uint) +0:15 indirect index (layout(row_major std430 ) buffer 4-component vector of uint) +0:15 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint) +0:15 'sb' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data}) +0:15 Constant: +0:15 0 (const uint) +0:15 'bufferOffset' (in uint) +0:15 'data' (in 4-component vector of uint) +0:19 Function Definition: @main(u1; (temp 4-component vector of float) +0:19 Function Parameters: +0:19 'pos' (in uint) +0:? Sequence +0:20 Function Call: set(block--vu4[0]1;u1;vu4; (temp void) +0:20 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data}) +0:20 Constant: +0:20 2 (const uint) +0:20 Function Call: get(block--vu4[0]1;u1; (temp 4-component vector of uint) +0:20 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data}) +0:20 Constant: +0:20 3 (const uint) +0:22 Branch: Return with expression +0:22 Constant: +0:22 0.000000 +0:22 0.000000 +0:22 0.000000 +0:22 0.000000 +0:19 Function Definition: main( (temp void) +0:19 Function Parameters: +0:? Sequence +0:19 move second child to first child (temp uint) +0:? 'pos' (temp uint) +0:? 'pos' (layout(location=0 ) in uint) +0:19 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:19 Function Call: @main(u1; (temp 4-component vector of float) +0:? 'pos' (temp uint) +0:? Linker Objects +0:? 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data}) +0:? 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data}) +0:? 'sbuf3' (layout(binding=12 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 3-component vector of uint @data}) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'pos' (layout(location=0 ) in uint) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:9 Function Definition: get(block--vu4[0]1;u1; (temp 4-component vector of uint) +0:9 Function Parameters: +0:9 'sb' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data}) +0:9 'bufferOffset' (in uint) +0:? Sequence +0:10 Branch: Return with expression +0:10 indirect index (layout(row_major std430 ) buffer 4-component vector of uint) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint) +0:10 'sb' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data}) +0:10 Constant: +0:10 0 (const uint) +0:10 'bufferOffset' (in uint) +0:14 Function Definition: set(block--vu4[0]1;u1;vu4; (temp void) +0:14 Function Parameters: +0:14 'sb' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data}) +0:14 'bufferOffset' (in uint) +0:14 'data' (in 4-component vector of uint) +0:? Sequence +0:15 move second child to first child (temp 4-component vector of uint) +0:15 indirect index (layout(row_major std430 ) buffer 4-component vector of uint) +0:15 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint) +0:15 'sb' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data}) +0:15 Constant: +0:15 0 (const uint) +0:15 'bufferOffset' (in uint) +0:15 'data' (in 4-component vector of uint) +0:19 Function Definition: @main(u1; (temp 4-component vector of float) +0:19 Function Parameters: +0:19 'pos' (in uint) +0:? Sequence +0:20 Function Call: set(block--vu4[0]1;u1;vu4; (temp void) +0:20 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data}) +0:20 Constant: +0:20 2 (const uint) +0:20 Function Call: get(block--vu4[0]1;u1; (temp 4-component vector of uint) +0:20 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data}) +0:20 Constant: +0:20 3 (const uint) +0:22 Branch: Return with expression +0:22 Constant: +0:22 0.000000 +0:22 0.000000 +0:22 0.000000 +0:22 0.000000 +0:19 Function Definition: main( (temp void) +0:19 Function Parameters: +0:? Sequence +0:19 move second child to first child (temp uint) +0:? 'pos' (temp uint) +0:? 'pos' (layout(location=0 ) in uint) +0:19 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:19 Function Call: @main(u1; (temp 4-component vector of float) +0:? 'pos' (temp uint) +0:? Linker Objects +0:? 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data}) +0:? 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of 4-component vector of uint @data}) +0:? 'sbuf3' (layout(binding=12 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of 3-component vector of uint @data}) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'pos' (layout(location=0 ) in uint) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 71 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 59 62 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "" + MemberName 9 0 "@data" + Name 15 "get(block--vu4[0]1;u1;" + Name 13 "sb" + Name 14 "bufferOffset" + Name 18 "" + MemberName 18 0 "@data" + Name 25 "set(block--vu4[0]1;u1;vu4;" + Name 22 "sb" + Name 23 "bufferOffset" + Name 24 "data" + Name 31 "@main(u1;" + Name 30 "pos" + Name 44 "sbuf2" + Name 46 "sbuf" + Name 48 "param" + Name 50 "param" + Name 51 "param" + Name 57 "pos" + Name 59 "pos" + Name 62 "@entryPointOutput" + Name 63 "param" + Name 68 "sbuf3" + MemberName 68(sbuf3) 0 "@data" + Name 70 "sbuf3" + Decorate 8 ArrayStride 16 + MemberDecorate 9 0 NonWritable + MemberDecorate 9 0 Offset 0 + Decorate 9 BufferBlock + Decorate 17 ArrayStride 16 + MemberDecorate 18 0 Offset 0 + Decorate 18 BufferBlock + Decorate 44(sbuf2) DescriptorSet 0 + Decorate 46(sbuf) DescriptorSet 0 + Decorate 46(sbuf) Binding 10 + Decorate 59(pos) Location 0 + Decorate 62(@entryPointOutput) Location 0 + Decorate 67 ArrayStride 16 + MemberDecorate 68(sbuf3) 0 NonWritable + MemberDecorate 68(sbuf3) 0 Offset 0 + Decorate 68(sbuf3) BufferBlock + Decorate 70(sbuf3) DescriptorSet 0 + Decorate 70(sbuf3) Binding 12 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 4 + 8: TypeRuntimeArray 7(ivec4) + 9: TypeStruct 8 + 10: TypePointer Uniform 9(struct) + 11: TypePointer Function 6(int) + 12: TypeFunction 7(ivec4) 10(ptr) 11(ptr) + 17: TypeRuntimeArray 7(ivec4) + 18: TypeStruct 17 + 19: TypePointer Uniform 18(struct) + 20: TypePointer Function 7(ivec4) + 21: TypeFunction 2 19(ptr) 11(ptr) 20(ptr) + 27: TypeFloat 32 + 28: TypeVector 27(float) 4 + 29: TypeFunction 28(fvec4) 11(ptr) + 33: TypeInt 32 1 + 34: 33(int) Constant 0 + 36: TypePointer Uniform 7(ivec4) + 44(sbuf2): 19(ptr) Variable Uniform + 45: 6(int) Constant 2 + 46(sbuf): 10(ptr) Variable Uniform + 47: 6(int) Constant 3 + 53: 27(float) Constant 0 + 54: 28(fvec4) ConstantComposite 53 53 53 53 + 58: TypePointer Input 6(int) + 59(pos): 58(ptr) Variable Input + 61: TypePointer Output 28(fvec4) +62(@entryPointOutput): 61(ptr) Variable Output + 66: TypeVector 6(int) 3 + 67: TypeRuntimeArray 66(ivec3) + 68(sbuf3): TypeStruct 67 + 69: TypePointer Uniform 68(sbuf3) + 70(sbuf3): 69(ptr) Variable Uniform + 4(main): 2 Function None 3 + 5: Label + 57(pos): 11(ptr) Variable Function + 63(param): 11(ptr) Variable Function + 60: 6(int) Load 59(pos) + Store 57(pos) 60 + 64: 6(int) Load 57(pos) + Store 63(param) 64 + 65: 28(fvec4) FunctionCall 31(@main(u1;) 63(param) + Store 62(@entryPointOutput) 65 + Return + FunctionEnd +15(get(block--vu4[0]1;u1;): 7(ivec4) Function None 12 + 13(sb): 10(ptr) FunctionParameter +14(bufferOffset): 11(ptr) FunctionParameter + 16: Label + 35: 6(int) Load 14(bufferOffset) + 37: 36(ptr) AccessChain 13(sb) 34 35 + 38: 7(ivec4) Load 37 + ReturnValue 38 + FunctionEnd +25(set(block--vu4[0]1;u1;vu4;): 2 Function None 21 + 22(sb): 19(ptr) FunctionParameter +23(bufferOffset): 11(ptr) FunctionParameter + 24(data): 20(ptr) FunctionParameter + 26: Label + 41: 6(int) Load 23(bufferOffset) + 42: 7(ivec4) Load 24(data) + 43: 36(ptr) AccessChain 22(sb) 34 41 + Store 43 42 + Return + FunctionEnd + 31(@main(u1;): 28(fvec4) Function None 29 + 30(pos): 11(ptr) FunctionParameter + 32: Label + 48(param): 11(ptr) Variable Function + 50(param): 11(ptr) Variable Function + 51(param): 20(ptr) Variable Function + Store 48(param) 47 + 49: 7(ivec4) FunctionCall 15(get(block--vu4[0]1;u1;) 46(sbuf) 48(param) + Store 50(param) 45 + Store 51(param) 49 + 52: 2 FunctionCall 25(set(block--vu4[0]1;u1;vu4;) 44(sbuf2) 50(param) 51(param) + ReturnValue 54 + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.frag.out index 75edf55de..dea30d4ae 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.frag.out @@ -9,9 +9,9 @@ gl_FragCoord origin is upper left 0:13 Sequence 0:13 move second child to first child (temp structure{temp 3-component vector of float color, temp bool test, temp bool test2}) 0:13 'mydata' (temp structure{temp 3-component vector of float color, temp bool test, temp bool test2}) -0:13 indirect index (layout(binding=10 row_major std430 ) readonly buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2}) -0:13 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2}) -0:13 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf}) +0:13 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2}) +0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2}) +0:13 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:13 Constant: 0:13 0 (const uint) 0:13 'pos' (in uint) @@ -19,8 +19,8 @@ gl_FragCoord origin is upper left 0:17 move second child to first child (temp uint) 0:17 'size' (temp uint) 0:17 array length (temp uint) -0:17 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2}) -0:17 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf}) +0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2}) +0:17 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 move second child to first child (temp uint) @@ -30,9 +30,9 @@ gl_FragCoord origin is upper left 0:19 Test condition and select (temp void) 0:19 Condition 0:19 test: direct index for structure (temp bool) -0:19 indirect index (layout(binding=10 row_major std430 ) readonly temp structure{temp 3-component vector of float color, temp bool test, temp bool test2}) -0:19 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2}) -0:19 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf}) +0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2}) +0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2}) +0:19 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 'pos' (in uint) @@ -43,17 +43,17 @@ gl_FragCoord origin is upper left 0:? Construct vec4 (temp 4-component vector of float) 0:20 add (temp 3-component vector of float) 0:20 color: direct index for structure (temp 3-component vector of float) -0:20 indirect index (layout(binding=10 row_major std430 ) readonly temp structure{temp 3-component vector of float color, temp bool test, temp bool test2}) -0:20 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2}) -0:20 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf}) +0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2}) +0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2}) +0:20 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' (in uint) 0:20 Constant: 0:20 0 (const int) -0:20 indirect index (layout(row_major std430 ) readonly temp float) -0:20 sbuf2: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of float) -0:20 'anon@1' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of float sbuf2}) +0:20 indirect index (layout(row_major std430 ) buffer float) +0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float) +0:20 'sbuf2' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' (in uint) @@ -86,8 +86,8 @@ gl_FragCoord origin is upper left 0:12 Function Call: @main(u1; (temp 4-component vector of float) 0:? 'pos' (temp uint) 0:? Linker Objects -0:? 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf}) -0:? 'anon@1' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of float sbuf2}) +0:? 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data}) +0:? 'sbuf2' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'pos' (layout(location=0 ) in uint) @@ -105,9 +105,9 @@ gl_FragCoord origin is upper left 0:13 Sequence 0:13 move second child to first child (temp structure{temp 3-component vector of float color, temp bool test, temp bool test2}) 0:13 'mydata' (temp structure{temp 3-component vector of float color, temp bool test, temp bool test2}) -0:13 indirect index (layout(binding=10 row_major std430 ) readonly buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2}) -0:13 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2}) -0:13 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf}) +0:13 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2}) +0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2}) +0:13 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:13 Constant: 0:13 0 (const uint) 0:13 'pos' (in uint) @@ -115,8 +115,8 @@ gl_FragCoord origin is upper left 0:17 move second child to first child (temp uint) 0:17 'size' (temp uint) 0:17 array length (temp uint) -0:17 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2}) -0:17 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf}) +0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2}) +0:17 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 move second child to first child (temp uint) @@ -126,9 +126,9 @@ gl_FragCoord origin is upper left 0:19 Test condition and select (temp void) 0:19 Condition 0:19 test: direct index for structure (temp bool) -0:19 indirect index (layout(binding=10 row_major std430 ) readonly temp structure{temp 3-component vector of float color, temp bool test, temp bool test2}) -0:19 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2}) -0:19 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf}) +0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2}) +0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2}) +0:19 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 'pos' (in uint) @@ -139,17 +139,17 @@ gl_FragCoord origin is upper left 0:? Construct vec4 (temp 4-component vector of float) 0:20 add (temp 3-component vector of float) 0:20 color: direct index for structure (temp 3-component vector of float) -0:20 indirect index (layout(binding=10 row_major std430 ) readonly temp structure{temp 3-component vector of float color, temp bool test, temp bool test2}) -0:20 sbuf: direct index for structure (layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2}) -0:20 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf}) +0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test, temp bool test2}) +0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2}) +0:20 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' (in uint) 0:20 Constant: 0:20 0 (const int) -0:20 indirect index (layout(row_major std430 ) readonly temp float) -0:20 sbuf2: direct index for structure (layout(row_major std430 ) readonly buffer implicitly-sized array of float) -0:20 'anon@1' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of float sbuf2}) +0:20 indirect index (layout(row_major std430 ) buffer float) +0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float) +0:20 'sbuf2' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' (in uint) @@ -182,8 +182,8 @@ gl_FragCoord origin is upper left 0:12 Function Call: @main(u1; (temp 4-component vector of float) 0:? 'pos' (temp uint) 0:? Linker Objects -0:? 'anon@0' (layout(binding=10 row_major std430 ) readonly buffer block{layout(binding=10 row_major std430 ) readonly buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} sbuf}) -0:? 'anon@1' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) readonly buffer implicitly-sized array of float sbuf2}) +0:? 'sbuf' (layout(binding=10 row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test, temp bool test2} @data}) +0:? 'sbuf2' (layout(row_major std430 ) readonly buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'pos' (layout(location=0 ) in uint) @@ -209,13 +209,13 @@ gl_FragCoord origin is upper left MemberName 19(sb_t) 1 "test" MemberName 19(sb_t) 2 "test2" Name 21 "sbuf" - MemberName 21(sbuf) 0 "sbuf" - Name 23 "" + MemberName 21(sbuf) 0 "@data" + Name 23 "sbuf" Name 40 "size" Name 42 "stride" Name 57 "sbuf2" - MemberName 57(sbuf2) 0 "sbuf2" - Name 59 "" + MemberName 57(sbuf2) 0 "@data" + Name 59 "sbuf2" Name 85 "pos" Name 87 "pos" Name 90 "@entryPointOutput" @@ -230,13 +230,13 @@ gl_FragCoord origin is upper left MemberDecorate 21(sbuf) 0 NonWritable MemberDecorate 21(sbuf) 0 Offset 0 Decorate 21(sbuf) BufferBlock - Decorate 23 DescriptorSet 0 - Decorate 23 Binding 10 + Decorate 23(sbuf) DescriptorSet 0 + Decorate 23(sbuf) Binding 10 Decorate 56 ArrayStride 4 MemberDecorate 57(sbuf2) 0 NonWritable MemberDecorate 57(sbuf2) 0 Offset 0 Decorate 57(sbuf2) BufferBlock - Decorate 59 DescriptorSet 0 + Decorate 59(sbuf2) DescriptorSet 0 Decorate 87(pos) Location 0 Decorate 90(@entryPointOutput) Location 0 2: TypeVoid @@ -254,7 +254,7 @@ gl_FragCoord origin is upper left 20: TypeRuntimeArray 19(sb_t) 21(sbuf): TypeStruct 20 22: TypePointer Uniform 21(sbuf) - 23: 22(ptr) Variable Uniform + 23(sbuf): 22(ptr) Variable Uniform 24: TypeInt 32 1 25: 24(int) Constant 0 27: TypePointer Uniform 19(sb_t) @@ -269,7 +269,7 @@ gl_FragCoord origin is upper left 56: TypeRuntimeArray 8(float) 57(sbuf2): TypeStruct 56 58: TypePointer Uniform 57(sbuf2) - 59: 58(ptr) Variable Uniform + 59(sbuf2): 58(ptr) Variable Uniform 61: TypePointer Uniform 8(float) 66: 8(float) Constant 0 73: TypePointer Function 8(float) @@ -296,7 +296,7 @@ gl_FragCoord origin is upper left 40(size): 7(ptr) Variable Function 42(stride): 7(ptr) Variable Function 26: 6(int) Load 11(pos) - 28: 27(ptr) AccessChain 23 25 26 + 28: 27(ptr) AccessChain 23(sbuf) 25 26 29: 19(sb_t) Load 28 30: 14(fvec3) CompositeExtract 29 0 32: 31(ptr) AccessChain 18(mydata) 25 @@ -307,21 +307,21 @@ gl_FragCoord origin is upper left 37: 6(int) CompositeExtract 29 2 39: 35(ptr) AccessChain 18(mydata) 38 Store 39 37 - 41: 24(int) ArrayLength 23 0 + 41: 24(int) ArrayLength 23(sbuf) 0 Store 40(size) 41 Store 42(stride) 43 44: 6(int) Load 11(pos) - 46: 45(ptr) AccessChain 23 25 44 34 + 46: 45(ptr) AccessChain 23(sbuf) 25 44 34 47: 6(int) Load 46 49: 15(bool) INotEqual 47 48 SelectionMerge 51 None BranchConditional 49 50 72 50: Label 52: 6(int) Load 11(pos) - 54: 53(ptr) AccessChain 23 25 52 25 + 54: 53(ptr) AccessChain 23(sbuf) 25 52 25 55: 14(fvec3) Load 54 60: 6(int) Load 11(pos) - 62: 61(ptr) AccessChain 59 25 60 + 62: 61(ptr) AccessChain 59(sbuf2) 25 60 63: 8(float) Load 62 64: 14(fvec3) CompositeConstruct 63 63 63 65: 14(fvec3) FAdd 55 64 diff --git a/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rw.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rw.frag.out index a319a2e73..d9054381b 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rw.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rw.frag.out @@ -7,9 +7,9 @@ gl_FragCoord origin is upper left 0:12 'pos' (in uint) 0:? Sequence 0:13 move second child to first child (temp float) -0:13 indirect index (layout(row_major std430 ) temp float) -0:13 sbuf2: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float) -0:13 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2}) +0:13 indirect index (layout(row_major std430 ) buffer float) +0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float) +0:13 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data}) 0:13 Constant: 0:13 0 (const uint) 0:13 add (temp uint) @@ -22,8 +22,8 @@ gl_FragCoord origin is upper left 0:17 move second child to first child (temp uint) 0:17 'size' (temp uint) 0:17 array length (temp uint) -0:17 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) -0:17 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf}) +0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) +0:17 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 move second child to first child (temp uint) @@ -33,9 +33,9 @@ gl_FragCoord origin is upper left 0:19 Test condition and select (temp void) 0:19 Condition 0:19 test: direct index for structure (temp bool) -0:19 indirect index (layout(row_major std430 ) temp structure{temp 3-component vector of float color, temp bool test}) -0:19 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) -0:19 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf}) +0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test}) +0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) +0:19 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 'pos' (in uint) @@ -46,17 +46,17 @@ gl_FragCoord origin is upper left 0:? Construct vec4 (temp 4-component vector of float) 0:20 add (temp 3-component vector of float) 0:20 color: direct index for structure (temp 3-component vector of float) -0:20 indirect index (layout(row_major std430 ) temp structure{temp 3-component vector of float color, temp bool test}) -0:20 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) -0:20 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf}) +0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test}) +0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) +0:20 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' (in uint) 0:20 Constant: 0:20 0 (const int) -0:20 indirect index (layout(row_major std430 ) temp float) -0:20 sbuf2: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float) -0:20 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2}) +0:20 indirect index (layout(row_major std430 ) buffer float) +0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float) +0:20 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' (in uint) @@ -80,8 +80,8 @@ gl_FragCoord origin is upper left 0:12 Function Call: @main(u1; (temp 4-component vector of float) 0:? 'pos' (temp uint) 0:? Linker Objects -0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf}) -0:? 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2}) +0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data}) +0:? 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'pos' (layout(location=0 ) in uint) @@ -97,9 +97,9 @@ gl_FragCoord origin is upper left 0:12 'pos' (in uint) 0:? Sequence 0:13 move second child to first child (temp float) -0:13 indirect index (layout(row_major std430 ) temp float) -0:13 sbuf2: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float) -0:13 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2}) +0:13 indirect index (layout(row_major std430 ) buffer float) +0:13 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float) +0:13 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data}) 0:13 Constant: 0:13 0 (const uint) 0:13 add (temp uint) @@ -112,8 +112,8 @@ gl_FragCoord origin is upper left 0:17 move second child to first child (temp uint) 0:17 'size' (temp uint) 0:17 array length (temp uint) -0:17 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) -0:17 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf}) +0:17 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) +0:17 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data}) 0:17 Constant: 0:17 0 (const uint) 0:17 move second child to first child (temp uint) @@ -123,9 +123,9 @@ gl_FragCoord origin is upper left 0:19 Test condition and select (temp void) 0:19 Condition 0:19 test: direct index for structure (temp bool) -0:19 indirect index (layout(row_major std430 ) temp structure{temp 3-component vector of float color, temp bool test}) -0:19 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) -0:19 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf}) +0:19 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test}) +0:19 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) +0:19 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data}) 0:19 Constant: 0:19 0 (const uint) 0:19 'pos' (in uint) @@ -136,17 +136,17 @@ gl_FragCoord origin is upper left 0:? Construct vec4 (temp 4-component vector of float) 0:20 add (temp 3-component vector of float) 0:20 color: direct index for structure (temp 3-component vector of float) -0:20 indirect index (layout(row_major std430 ) temp structure{temp 3-component vector of float color, temp bool test}) -0:20 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) -0:20 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf}) +0:20 indirect index (layout(row_major std430 ) buffer structure{temp 3-component vector of float color, temp bool test}) +0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test}) +0:20 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' (in uint) 0:20 Constant: 0:20 0 (const int) -0:20 indirect index (layout(row_major std430 ) temp float) -0:20 sbuf2: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float) -0:20 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2}) +0:20 indirect index (layout(row_major std430 ) buffer float) +0:20 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of float) +0:20 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data}) 0:20 Constant: 0:20 0 (const uint) 0:20 'pos' (in uint) @@ -170,8 +170,8 @@ gl_FragCoord origin is upper left 0:12 Function Call: @main(u1; (temp 4-component vector of float) 0:? 'pos' (temp uint) 0:? Linker Objects -0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} sbuf}) -0:? 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float sbuf2}) +0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of structure{temp 3-component vector of float color, temp bool test} @data}) +0:? 'sbuf2' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of float @data}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'pos' (layout(location=0 ) in uint) @@ -188,15 +188,15 @@ gl_FragCoord origin is upper left Name 12 "@main(u1;" Name 11 "pos" Name 15 "sbuf2" - MemberName 15(sbuf2) 0 "sbuf2" - Name 17 "" + MemberName 15(sbuf2) 0 "@data" + Name 17 "sbuf2" Name 26 "size" Name 28 "sb_t" MemberName 28(sb_t) 0 "color" MemberName 28(sb_t) 1 "test" Name 30 "sbuf" - MemberName 30(sbuf) 0 "sbuf" - Name 32 "" + MemberName 30(sbuf) 0 "@data" + Name 32 "sbuf" Name 34 "stride" Name 69 "pos" Name 71 "pos" @@ -205,13 +205,13 @@ gl_FragCoord origin is upper left Decorate 14 ArrayStride 4 MemberDecorate 15(sbuf2) 0 Offset 0 Decorate 15(sbuf2) BufferBlock - Decorate 17 DescriptorSet 0 + Decorate 17(sbuf2) DescriptorSet 0 MemberDecorate 28(sb_t) 0 Offset 0 MemberDecorate 28(sb_t) 1 Offset 12 Decorate 29 ArrayStride 16 MemberDecorate 30(sbuf) 0 Offset 0 Decorate 30(sbuf) BufferBlock - Decorate 32 DescriptorSet 0 + Decorate 32(sbuf) DescriptorSet 0 Decorate 71(pos) Location 0 Decorate 74(@entryPointOutput) Location 0 2: TypeVoid @@ -224,7 +224,7 @@ gl_FragCoord origin is upper left 14: TypeRuntimeArray 8(float) 15(sbuf2): TypeStruct 14 16: TypePointer Uniform 15(sbuf2) - 17: 16(ptr) Variable Uniform + 17(sbuf2): 16(ptr) Variable Uniform 18: TypeInt 32 1 19: 18(int) Constant 0 21: 6(int) Constant 1 @@ -235,7 +235,7 @@ gl_FragCoord origin is upper left 29: TypeRuntimeArray 28(sb_t) 30(sbuf): TypeStruct 29 31: TypePointer Uniform 30(sbuf) - 32: 31(ptr) Variable Uniform + 32(sbuf): 31(ptr) Variable Uniform 35: 6(int) Constant 16 37: 18(int) Constant 1 38: TypePointer Uniform 6(int) @@ -266,23 +266,23 @@ gl_FragCoord origin is upper left 34(stride): 7(ptr) Variable Function 20: 6(int) Load 11(pos) 22: 6(int) IAdd 20 21 - 25: 24(ptr) AccessChain 17 19 22 + 25: 24(ptr) AccessChain 17(sbuf2) 19 22 Store 25 23 - 33: 18(int) ArrayLength 32 0 + 33: 18(int) ArrayLength 32(sbuf) 0 Store 26(size) 33 Store 34(stride) 35 36: 6(int) Load 11(pos) - 39: 38(ptr) AccessChain 32 19 36 37 + 39: 38(ptr) AccessChain 32(sbuf) 19 36 37 40: 6(int) Load 39 43: 41(bool) INotEqual 40 42 SelectionMerge 45 None BranchConditional 43 44 61 44: Label 46: 6(int) Load 11(pos) - 48: 47(ptr) AccessChain 32 19 46 19 + 48: 47(ptr) AccessChain 32(sbuf) 19 46 19 49: 27(fvec3) Load 48 50: 6(int) Load 11(pos) - 51: 24(ptr) AccessChain 17 19 50 + 51: 24(ptr) AccessChain 17(sbuf2) 19 50 52: 8(float) Load 51 53: 27(fvec3) CompositeConstruct 52 52 52 54: 27(fvec3) FAdd 49 53 diff --git a/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out index 328642bbb..edbc6773d 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out @@ -10,8 +10,8 @@ gl_FragCoord origin is upper left 0:7 move second child to first child (temp uint) 0:7 'size' (temp uint) 0:7 array length (temp uint) -0:7 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:7 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:7 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:7 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:7 Constant: 0:7 0 (const uint) 0:? Sequence @@ -23,15 +23,15 @@ gl_FragCoord origin is upper left 0:9 2 (const int) 0:9 move second child to first child (temp float) 0:9 indirect index (temp float) -0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 'byteAddrTemp' (temp int) 0:9 Convert uint to float (temp float) 0:9 indirect index (layout(row_major std430 ) buffer uint) -0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 right-shift (temp int) @@ -47,8 +47,8 @@ gl_FragCoord origin is upper left 0:10 2 (const int) 0:10 move second child to first child (temp float) 0:10 indirect index (temp float) -0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 'byteAddrTemp' (temp int) @@ -62,14 +62,14 @@ gl_FragCoord origin is upper left 0:10 2 (const int) 0:? Construct vec2 (temp 2-component vector of uint) 0:10 indirect index (temp float) -0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 'byteAddrTemp' (temp int) 0:10 indirect index (temp float) -0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add (temp int) @@ -80,8 +80,8 @@ gl_FragCoord origin is upper left 0:10 0 (const int) 0:10 move second child to first child (temp float) 0:10 indirect index (temp float) -0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add (temp int) @@ -98,14 +98,14 @@ gl_FragCoord origin is upper left 0:10 2 (const int) 0:? Construct vec2 (temp 2-component vector of uint) 0:10 indirect index (temp float) -0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 'byteAddrTemp' (temp int) 0:10 indirect index (temp float) -0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add (temp int) @@ -123,8 +123,8 @@ gl_FragCoord origin is upper left 0:11 2 (const int) 0:11 move second child to first child (temp float) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' (temp int) @@ -138,14 +138,14 @@ gl_FragCoord origin is upper left 0:11 2 (const int) 0:? Construct vec3 (temp 3-component vector of uint) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' (temp int) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -153,8 +153,8 @@ gl_FragCoord origin is upper left 0:11 Constant: 0:11 1 (const int) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -165,8 +165,8 @@ gl_FragCoord origin is upper left 0:11 0 (const int) 0:11 move second child to first child (temp float) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -183,14 +183,14 @@ gl_FragCoord origin is upper left 0:11 2 (const int) 0:? Construct vec3 (temp 3-component vector of uint) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' (temp int) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -198,8 +198,8 @@ gl_FragCoord origin is upper left 0:11 Constant: 0:11 1 (const int) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -210,8 +210,8 @@ gl_FragCoord origin is upper left 0:11 1 (const int) 0:11 move second child to first child (temp float) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -228,14 +228,14 @@ gl_FragCoord origin is upper left 0:11 2 (const int) 0:? Construct vec3 (temp 3-component vector of uint) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' (temp int) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -243,8 +243,8 @@ gl_FragCoord origin is upper left 0:11 Constant: 0:11 1 (const int) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -262,8 +262,8 @@ gl_FragCoord origin is upper left 0:12 2 (const int) 0:12 move second child to first child (temp float) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' (temp int) @@ -277,14 +277,14 @@ gl_FragCoord origin is upper left 0:12 2 (const int) 0:? Construct vec4 (temp 4-component vector of uint) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' (temp int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -292,8 +292,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 1 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -301,8 +301,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 2 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -313,8 +313,8 @@ gl_FragCoord origin is upper left 0:12 0 (const int) 0:12 move second child to first child (temp float) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -331,14 +331,14 @@ gl_FragCoord origin is upper left 0:12 2 (const int) 0:? Construct vec4 (temp 4-component vector of uint) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' (temp int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -346,8 +346,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 1 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -355,8 +355,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 2 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -367,8 +367,8 @@ gl_FragCoord origin is upper left 0:12 1 (const int) 0:12 move second child to first child (temp float) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -385,14 +385,14 @@ gl_FragCoord origin is upper left 0:12 2 (const int) 0:? Construct vec4 (temp 4-component vector of uint) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' (temp int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -400,8 +400,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 1 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -409,8 +409,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 2 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -421,8 +421,8 @@ gl_FragCoord origin is upper left 0:12 2 (const int) 0:12 move second child to first child (temp float) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -439,14 +439,14 @@ gl_FragCoord origin is upper left 0:12 2 (const int) 0:? Construct vec4 (temp 4-component vector of uint) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' (temp int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -454,8 +454,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 1 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -463,8 +463,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 2 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -477,8 +477,8 @@ gl_FragCoord origin is upper left 0:14 Construct vec4 (temp 4-component vector of float) 0:14 Convert uint to float (temp float) 0:14 indirect index (layout(row_major std430 ) buffer uint) -0:14 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:14 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:14 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:14 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 right-shift (temp int) @@ -496,7 +496,7 @@ gl_FragCoord origin is upper left 0:5 Function Call: @main(u1; (temp 4-component vector of float) 0:? 'pos' (temp uint) 0:? Linker Objects -0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'pos' (layout(location=0 ) in uint) @@ -515,8 +515,8 @@ gl_FragCoord origin is upper left 0:7 move second child to first child (temp uint) 0:7 'size' (temp uint) 0:7 array length (temp uint) -0:7 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:7 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:7 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:7 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:7 Constant: 0:7 0 (const uint) 0:? Sequence @@ -528,15 +528,15 @@ gl_FragCoord origin is upper left 0:9 2 (const int) 0:9 move second child to first child (temp float) 0:9 indirect index (temp float) -0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 'byteAddrTemp' (temp int) 0:9 Convert uint to float (temp float) 0:9 indirect index (layout(row_major std430 ) buffer uint) -0:9 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:9 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:9 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:9 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:9 Constant: 0:9 0 (const uint) 0:9 right-shift (temp int) @@ -552,8 +552,8 @@ gl_FragCoord origin is upper left 0:10 2 (const int) 0:10 move second child to first child (temp float) 0:10 indirect index (temp float) -0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 'byteAddrTemp' (temp int) @@ -567,14 +567,14 @@ gl_FragCoord origin is upper left 0:10 2 (const int) 0:? Construct vec2 (temp 2-component vector of uint) 0:10 indirect index (temp float) -0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 'byteAddrTemp' (temp int) 0:10 indirect index (temp float) -0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add (temp int) @@ -585,8 +585,8 @@ gl_FragCoord origin is upper left 0:10 0 (const int) 0:10 move second child to first child (temp float) 0:10 indirect index (temp float) -0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add (temp int) @@ -603,14 +603,14 @@ gl_FragCoord origin is upper left 0:10 2 (const int) 0:? Construct vec2 (temp 2-component vector of uint) 0:10 indirect index (temp float) -0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 'byteAddrTemp' (temp int) 0:10 indirect index (temp float) -0:10 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:10 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:10 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:10 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:10 Constant: 0:10 0 (const uint) 0:10 add (temp int) @@ -628,8 +628,8 @@ gl_FragCoord origin is upper left 0:11 2 (const int) 0:11 move second child to first child (temp float) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' (temp int) @@ -643,14 +643,14 @@ gl_FragCoord origin is upper left 0:11 2 (const int) 0:? Construct vec3 (temp 3-component vector of uint) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' (temp int) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -658,8 +658,8 @@ gl_FragCoord origin is upper left 0:11 Constant: 0:11 1 (const int) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -670,8 +670,8 @@ gl_FragCoord origin is upper left 0:11 0 (const int) 0:11 move second child to first child (temp float) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -688,14 +688,14 @@ gl_FragCoord origin is upper left 0:11 2 (const int) 0:? Construct vec3 (temp 3-component vector of uint) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' (temp int) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -703,8 +703,8 @@ gl_FragCoord origin is upper left 0:11 Constant: 0:11 1 (const int) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -715,8 +715,8 @@ gl_FragCoord origin is upper left 0:11 1 (const int) 0:11 move second child to first child (temp float) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -733,14 +733,14 @@ gl_FragCoord origin is upper left 0:11 2 (const int) 0:? Construct vec3 (temp 3-component vector of uint) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 'byteAddrTemp' (temp int) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -748,8 +748,8 @@ gl_FragCoord origin is upper left 0:11 Constant: 0:11 1 (const int) 0:11 indirect index (temp float) -0:11 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:11 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:11 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:11 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:11 Constant: 0:11 0 (const uint) 0:11 add (temp int) @@ -767,8 +767,8 @@ gl_FragCoord origin is upper left 0:12 2 (const int) 0:12 move second child to first child (temp float) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' (temp int) @@ -782,14 +782,14 @@ gl_FragCoord origin is upper left 0:12 2 (const int) 0:? Construct vec4 (temp 4-component vector of uint) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' (temp int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -797,8 +797,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 1 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -806,8 +806,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 2 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -818,8 +818,8 @@ gl_FragCoord origin is upper left 0:12 0 (const int) 0:12 move second child to first child (temp float) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -836,14 +836,14 @@ gl_FragCoord origin is upper left 0:12 2 (const int) 0:? Construct vec4 (temp 4-component vector of uint) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' (temp int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -851,8 +851,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 1 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -860,8 +860,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 2 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -872,8 +872,8 @@ gl_FragCoord origin is upper left 0:12 1 (const int) 0:12 move second child to first child (temp float) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -890,14 +890,14 @@ gl_FragCoord origin is upper left 0:12 2 (const int) 0:? Construct vec4 (temp 4-component vector of uint) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' (temp int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -905,8 +905,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 1 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -914,8 +914,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 2 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -926,8 +926,8 @@ gl_FragCoord origin is upper left 0:12 2 (const int) 0:12 move second child to first child (temp float) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -944,14 +944,14 @@ gl_FragCoord origin is upper left 0:12 2 (const int) 0:? Construct vec4 (temp 4-component vector of uint) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 'byteAddrTemp' (temp int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -959,8 +959,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 1 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -968,8 +968,8 @@ gl_FragCoord origin is upper left 0:12 Constant: 0:12 2 (const int) 0:12 indirect index (temp float) -0:12 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:12 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:12 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:12 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:12 Constant: 0:12 0 (const uint) 0:12 add (temp int) @@ -982,8 +982,8 @@ gl_FragCoord origin is upper left 0:14 Construct vec4 (temp 4-component vector of float) 0:14 Convert uint to float (temp float) 0:14 indirect index (layout(row_major std430 ) buffer uint) -0:14 sbuf: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) -0:14 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:14 @data: direct index for structure (layout(row_major std430 ) buffer implicitly-sized array of uint) +0:14 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:14 Constant: 0:14 0 (const uint) 0:14 right-shift (temp int) @@ -1001,7 +1001,7 @@ gl_FragCoord origin is upper left 0:5 Function Call: @main(u1; (temp 4-component vector of float) 0:? 'pos' (temp uint) 0:? Linker Objects -0:? 'anon@0' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint sbuf}) +0:? 'sbuf' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer implicitly-sized array of uint @data}) 0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) 0:? 'pos' (layout(location=0 ) in uint) @@ -1019,8 +1019,8 @@ gl_FragCoord origin is upper left Name 11 "pos" Name 14 "size" Name 16 "sbuf" - MemberName 16(sbuf) 0 "sbuf" - Name 18 "" + MemberName 16(sbuf) 0 "@data" + Name 18 "sbuf" Name 22 "byteAddrTemp" Name 35 "byteAddrTemp" Name 39 "byteAddrTemp" @@ -1035,7 +1035,7 @@ gl_FragCoord origin is upper left Decorate 15 ArrayStride 4 MemberDecorate 16(sbuf) 0 Offset 0 Decorate 16(sbuf) BufferBlock - Decorate 18 DescriptorSet 0 + Decorate 18(sbuf) DescriptorSet 0 Decorate 233(pos) Location 0 Decorate 236(@entryPointOutput) Location 0 2: TypeVoid @@ -1048,7 +1048,7 @@ gl_FragCoord origin is upper left 15: TypeRuntimeArray 6(int) 16(sbuf): TypeStruct 15 17: TypePointer Uniform 16(sbuf) - 18: 17(ptr) Variable Uniform + 18(sbuf): 17(ptr) Variable Uniform 19: TypeInt 32 1 21: TypePointer Function 19(int) 24: 19(int) Constant 2 @@ -1090,7 +1090,7 @@ gl_FragCoord origin is upper left 74(byteAddrTemp): 21(ptr) Variable Function 129(byteAddrTemp): 21(ptr) Variable Function 133(byteAddrTemp): 21(ptr) Variable Function - 20: 19(int) ArrayLength 18 0 + 20: 19(int) ArrayLength 18(sbuf) 0 Store 14(size) 20 23: 6(int) Load 11(pos) 25: 19(int) ShiftRightLogical 23 24 @@ -1098,10 +1098,10 @@ gl_FragCoord origin is upper left 27: 19(int) Load 22(byteAddrTemp) 28: 6(int) Load 11(pos) 29: 19(int) ShiftRightLogical 28 24 - 31: 30(ptr) AccessChain 18 26 29 + 31: 30(ptr) AccessChain 18(sbuf) 26 29 32: 6(int) Load 31 33: 8(float) ConvertUToF 32 - 34: 30(ptr) AccessChain 18 26 27 + 34: 30(ptr) AccessChain 18(sbuf) 26 27 Store 34 33 36: 6(int) Load 11(pos) 37: 19(int) ShiftRightLogical 36 24 @@ -1111,15 +1111,15 @@ gl_FragCoord origin is upper left 41: 19(int) ShiftRightLogical 40 24 Store 39(byteAddrTemp) 41 42: 19(int) Load 39(byteAddrTemp) - 43: 30(ptr) AccessChain 18 26 42 + 43: 30(ptr) AccessChain 18(sbuf) 26 42 44: 6(int) Load 43 45: 19(int) Load 39(byteAddrTemp) 47: 19(int) IAdd 45 46 - 48: 30(ptr) AccessChain 18 26 47 + 48: 30(ptr) AccessChain 18(sbuf) 26 47 49: 6(int) Load 48 51: 50(ivec2) CompositeConstruct 44 49 53: 6(int) CompositeExtract 51 0 - 54: 30(ptr) AccessChain 18 26 38 + 54: 30(ptr) AccessChain 18(sbuf) 26 38 Store 54 53 55: 19(int) Load 35(byteAddrTemp) 56: 19(int) IAdd 55 46 @@ -1127,15 +1127,15 @@ gl_FragCoord origin is upper left 58: 19(int) ShiftRightLogical 57 24 Store 39(byteAddrTemp) 58 59: 19(int) Load 39(byteAddrTemp) - 60: 30(ptr) AccessChain 18 26 59 + 60: 30(ptr) AccessChain 18(sbuf) 26 59 61: 6(int) Load 60 62: 19(int) Load 39(byteAddrTemp) 63: 19(int) IAdd 62 46 - 64: 30(ptr) AccessChain 18 26 63 + 64: 30(ptr) AccessChain 18(sbuf) 26 63 65: 6(int) Load 64 66: 50(ivec2) CompositeConstruct 61 65 68: 6(int) CompositeExtract 66 1 - 69: 30(ptr) AccessChain 18 26 56 + 69: 30(ptr) AccessChain 18(sbuf) 26 56 Store 69 68 71: 6(int) Load 11(pos) 72: 19(int) ShiftRightLogical 71 24 @@ -1145,19 +1145,19 @@ gl_FragCoord origin is upper left 76: 19(int) ShiftRightLogical 75 24 Store 74(byteAddrTemp) 76 77: 19(int) Load 74(byteAddrTemp) - 78: 30(ptr) AccessChain 18 26 77 + 78: 30(ptr) AccessChain 18(sbuf) 26 77 79: 6(int) Load 78 80: 19(int) Load 74(byteAddrTemp) 81: 19(int) IAdd 80 46 - 82: 30(ptr) AccessChain 18 26 81 + 82: 30(ptr) AccessChain 18(sbuf) 26 81 83: 6(int) Load 82 84: 19(int) Load 74(byteAddrTemp) 85: 19(int) IAdd 84 24 - 86: 30(ptr) AccessChain 18 26 85 + 86: 30(ptr) AccessChain 18(sbuf) 26 85 87: 6(int) Load 86 89: 88(ivec3) CompositeConstruct 79 83 87 90: 6(int) CompositeExtract 89 0 - 91: 30(ptr) AccessChain 18 26 73 + 91: 30(ptr) AccessChain 18(sbuf) 26 73 Store 91 90 92: 19(int) Load 70(byteAddrTemp) 93: 19(int) IAdd 92 46 @@ -1165,19 +1165,19 @@ gl_FragCoord origin is upper left 95: 19(int) ShiftRightLogical 94 24 Store 74(byteAddrTemp) 95 96: 19(int) Load 74(byteAddrTemp) - 97: 30(ptr) AccessChain 18 26 96 + 97: 30(ptr) AccessChain 18(sbuf) 26 96 98: 6(int) Load 97 99: 19(int) Load 74(byteAddrTemp) 100: 19(int) IAdd 99 46 - 101: 30(ptr) AccessChain 18 26 100 + 101: 30(ptr) AccessChain 18(sbuf) 26 100 102: 6(int) Load 101 103: 19(int) Load 74(byteAddrTemp) 104: 19(int) IAdd 103 24 - 105: 30(ptr) AccessChain 18 26 104 + 105: 30(ptr) AccessChain 18(sbuf) 26 104 106: 6(int) Load 105 107: 88(ivec3) CompositeConstruct 98 102 106 108: 6(int) CompositeExtract 107 1 - 109: 30(ptr) AccessChain 18 26 93 + 109: 30(ptr) AccessChain 18(sbuf) 26 93 Store 109 108 110: 19(int) Load 70(byteAddrTemp) 111: 19(int) IAdd 110 24 @@ -1185,19 +1185,19 @@ gl_FragCoord origin is upper left 113: 19(int) ShiftRightLogical 112 24 Store 74(byteAddrTemp) 113 114: 19(int) Load 74(byteAddrTemp) - 115: 30(ptr) AccessChain 18 26 114 + 115: 30(ptr) AccessChain 18(sbuf) 26 114 116: 6(int) Load 115 117: 19(int) Load 74(byteAddrTemp) 118: 19(int) IAdd 117 46 - 119: 30(ptr) AccessChain 18 26 118 + 119: 30(ptr) AccessChain 18(sbuf) 26 118 120: 6(int) Load 119 121: 19(int) Load 74(byteAddrTemp) 122: 19(int) IAdd 121 24 - 123: 30(ptr) AccessChain 18 26 122 + 123: 30(ptr) AccessChain 18(sbuf) 26 122 124: 6(int) Load 123 125: 88(ivec3) CompositeConstruct 116 120 124 127: 6(int) CompositeExtract 125 2 - 128: 30(ptr) AccessChain 18 26 111 + 128: 30(ptr) AccessChain 18(sbuf) 26 111 Store 128 127 130: 6(int) Load 11(pos) 131: 19(int) ShiftRightLogical 130 24 @@ -1207,23 +1207,23 @@ gl_FragCoord origin is upper left 135: 19(int) ShiftRightLogical 134 24 Store 133(byteAddrTemp) 135 136: 19(int) Load 133(byteAddrTemp) - 137: 30(ptr) AccessChain 18 26 136 + 137: 30(ptr) AccessChain 18(sbuf) 26 136 138: 6(int) Load 137 139: 19(int) Load 133(byteAddrTemp) 140: 19(int) IAdd 139 46 - 141: 30(ptr) AccessChain 18 26 140 + 141: 30(ptr) AccessChain 18(sbuf) 26 140 142: 6(int) Load 141 143: 19(int) Load 133(byteAddrTemp) 144: 19(int) IAdd 143 24 - 145: 30(ptr) AccessChain 18 26 144 + 145: 30(ptr) AccessChain 18(sbuf) 26 144 146: 6(int) Load 145 147: 19(int) Load 133(byteAddrTemp) 149: 19(int) IAdd 147 148 - 150: 30(ptr) AccessChain 18 26 149 + 150: 30(ptr) AccessChain 18(sbuf) 26 149 151: 6(int) Load 150 153: 152(ivec4) CompositeConstruct 138 142 146 151 154: 6(int) CompositeExtract 153 0 - 155: 30(ptr) AccessChain 18 26 132 + 155: 30(ptr) AccessChain 18(sbuf) 26 132 Store 155 154 156: 19(int) Load 129(byteAddrTemp) 157: 19(int) IAdd 156 46 @@ -1231,23 +1231,23 @@ gl_FragCoord origin is upper left 159: 19(int) ShiftRightLogical 158 24 Store 133(byteAddrTemp) 159 160: 19(int) Load 133(byteAddrTemp) - 161: 30(ptr) AccessChain 18 26 160 + 161: 30(ptr) AccessChain 18(sbuf) 26 160 162: 6(int) Load 161 163: 19(int) Load 133(byteAddrTemp) 164: 19(int) IAdd 163 46 - 165: 30(ptr) AccessChain 18 26 164 + 165: 30(ptr) AccessChain 18(sbuf) 26 164 166: 6(int) Load 165 167: 19(int) Load 133(byteAddrTemp) 168: 19(int) IAdd 167 24 - 169: 30(ptr) AccessChain 18 26 168 + 169: 30(ptr) AccessChain 18(sbuf) 26 168 170: 6(int) Load 169 171: 19(int) Load 133(byteAddrTemp) 172: 19(int) IAdd 171 148 - 173: 30(ptr) AccessChain 18 26 172 + 173: 30(ptr) AccessChain 18(sbuf) 26 172 174: 6(int) Load 173 175: 152(ivec4) CompositeConstruct 162 166 170 174 176: 6(int) CompositeExtract 175 1 - 177: 30(ptr) AccessChain 18 26 157 + 177: 30(ptr) AccessChain 18(sbuf) 26 157 Store 177 176 178: 19(int) Load 129(byteAddrTemp) 179: 19(int) IAdd 178 24 @@ -1255,23 +1255,23 @@ gl_FragCoord origin is upper left 181: 19(int) ShiftRightLogical 180 24 Store 133(byteAddrTemp) 181 182: 19(int) Load 133(byteAddrTemp) - 183: 30(ptr) AccessChain 18 26 182 + 183: 30(ptr) AccessChain 18(sbuf) 26 182 184: 6(int) Load 183 185: 19(int) Load 133(byteAddrTemp) 186: 19(int) IAdd 185 46 - 187: 30(ptr) AccessChain 18 26 186 + 187: 30(ptr) AccessChain 18(sbuf) 26 186 188: 6(int) Load 187 189: 19(int) Load 133(byteAddrTemp) 190: 19(int) IAdd 189 24 - 191: 30(ptr) AccessChain 18 26 190 + 191: 30(ptr) AccessChain 18(sbuf) 26 190 192: 6(int) Load 191 193: 19(int) Load 133(byteAddrTemp) 194: 19(int) IAdd 193 148 - 195: 30(ptr) AccessChain 18 26 194 + 195: 30(ptr) AccessChain 18(sbuf) 26 194 196: 6(int) Load 195 197: 152(ivec4) CompositeConstruct 184 188 192 196 198: 6(int) CompositeExtract 197 2 - 199: 30(ptr) AccessChain 18 26 179 + 199: 30(ptr) AccessChain 18(sbuf) 26 179 Store 199 198 200: 19(int) Load 129(byteAddrTemp) 201: 19(int) IAdd 200 148 @@ -1279,27 +1279,27 @@ gl_FragCoord origin is upper left 203: 19(int) ShiftRightLogical 202 24 Store 133(byteAddrTemp) 203 204: 19(int) Load 133(byteAddrTemp) - 205: 30(ptr) AccessChain 18 26 204 + 205: 30(ptr) AccessChain 18(sbuf) 26 204 206: 6(int) Load 205 207: 19(int) Load 133(byteAddrTemp) 208: 19(int) IAdd 207 46 - 209: 30(ptr) AccessChain 18 26 208 + 209: 30(ptr) AccessChain 18(sbuf) 26 208 210: 6(int) Load 209 211: 19(int) Load 133(byteAddrTemp) 212: 19(int) IAdd 211 24 - 213: 30(ptr) AccessChain 18 26 212 + 213: 30(ptr) AccessChain 18(sbuf) 26 212 214: 6(int) Load 213 215: 19(int) Load 133(byteAddrTemp) 216: 19(int) IAdd 215 148 - 217: 30(ptr) AccessChain 18 26 216 + 217: 30(ptr) AccessChain 18(sbuf) 26 216 218: 6(int) Load 217 219: 152(ivec4) CompositeConstruct 206 210 214 218 221: 6(int) CompositeExtract 219 3 - 222: 30(ptr) AccessChain 18 26 201 + 222: 30(ptr) AccessChain 18(sbuf) 26 201 Store 222 221 223: 6(int) Load 11(pos) 224: 19(int) ShiftRightLogical 223 24 - 225: 30(ptr) AccessChain 18 26 224 + 225: 30(ptr) AccessChain 18(sbuf) 26 224 226: 6(int) Load 225 227: 8(float) ConvertUToF 226 228: 9(fvec4) CompositeConstruct 227 227 227 227 diff --git a/3rdparty/glslang/Test/baseResults/spv.Operations.frag.out b/3rdparty/glslang/Test/baseResults/spv.Operations.frag.out index 1a74192ee..aeee253bf 100755 --- a/3rdparty/glslang/Test/baseResults/spv.Operations.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.Operations.frag.out @@ -3,12 +3,12 @@ Warning, version 450 is not yet complete; most version-specific features are pre // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 509 +// Id's are bound by 532 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 11 22 212 288 485 503 508 + EntryPoint Fragment 4 "main" 11 22 212 288 485 526 531 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" @@ -24,13 +24,15 @@ Warning, version 450 is not yet complete; most version-specific features are pre Name 305 "b" Name 342 "ub42" Name 485 "FragColor" - Name 503 "uiv4" - Name 505 "ub" - Name 508 "uuv4" + Name 503 "m1" + Name 510 "m2" + Name 526 "uiv4" + Name 528 "ub" + Name 531 "uuv4" Decorate 22(ui) Flat Decorate 288(uui) Flat - Decorate 503(uiv4) Flat - Decorate 508(uuv4) Flat + Decorate 526(uiv4) Flat + Decorate 531(uuv4) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -65,14 +67,24 @@ Warning, version 450 is not yet complete; most version-specific features are pre 472: 18(int) Constant 17 484: TypePointer Output 7(fvec4) 485(FragColor): 484(ptr) Variable Output - 501: TypeVector 18(int) 4 - 502: TypePointer Input 501(ivec4) - 503(uiv4): 502(ptr) Variable Input - 504: TypePointer Private 178(bool) - 505(ub): 504(ptr) Variable Private - 506: TypeVector 141(int) 4 - 507: TypePointer Input 506(ivec4) - 508(uuv4): 507(ptr) Variable Input + 501: TypeMatrix 7(fvec4) 4 + 502: TypePointer Function 501 + 504: 6(float) Constant 0 + 505: 7(fvec4) ConstantComposite 461 504 504 504 + 506: 7(fvec4) ConstantComposite 504 461 504 504 + 507: 7(fvec4) ConstantComposite 504 504 461 504 + 508: 7(fvec4) ConstantComposite 504 504 504 461 + 509: 501 ConstantComposite 505 506 507 508 + 511: 7(fvec4) ConstantComposite 504 504 504 504 + 512: 501 ConstantComposite 511 511 511 511 + 524: TypeVector 18(int) 4 + 525: TypePointer Input 524(ivec4) + 526(uiv4): 525(ptr) Variable Input + 527: TypePointer Private 178(bool) + 528(ub): 527(ptr) Variable Private + 529: TypeVector 141(int) 4 + 530: TypePointer Input 529(ivec4) + 531(uuv4): 530(ptr) Variable Input 4(main): 2 Function None 3 5: Label 9(v): 8(ptr) Variable Function @@ -81,6 +93,9 @@ Warning, version 450 is not yet complete; most version-specific features are pre 285(u): 284(ptr) Variable Function 305(b): 304(ptr) Variable Function 486: 8(ptr) Variable Function + 503(m1): 502(ptr) Variable Function + 510(m2): 502(ptr) Variable Function + 513: 502(ptr) Variable Function 12: 7(fvec4) Load 11(uv4) 13: 7(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 12 Store 9(v) 13 @@ -666,5 +681,24 @@ Warning, version 450 is not yet complete; most version-specific features are pre 489: Label 500: 7(fvec4) Load 486 Store 485(FragColor) 500 + Store 503(m1) 509 + Store 510(m2) 512 + 514: 178(bool) Load 305(b) + SelectionMerge 516 None + BranchConditional 514 515 518 + 515: Label + 517: 501 Load 503(m1) + Store 513 517 + Branch 516 + 518: Label + 519: 501 Load 510(m2) + Store 513 519 + Branch 516 + 516: Label + 520: 8(ptr) AccessChain 513 405 + 521: 7(fvec4) Load 520 + 522: 7(fvec4) Load 485(FragColor) + 523: 7(fvec4) FAdd 522 521 + Store 485(FragColor) 523 Return FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/spv.deviceGroup.frag.out b/3rdparty/glslang/Test/baseResults/spv.deviceGroup.frag.out new file mode 100755 index 000000000..9c2344361 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.deviceGroup.frag.out @@ -0,0 +1,38 @@ +spv.deviceGroup.frag +Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 17 + + Capability Shader + Capability DeviceGroup + Extension "SPV_KHR_device_group" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 9 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_EXT_device_group" + Name 4 "main" + Name 9 "color" + Name 12 "gl_DeviceIndex" + Decorate 12(gl_DeviceIndex) BuiltIn DeviceIndex + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Output 7(fvec4) + 9(color): 8(ptr) Variable Output + 10: TypeInt 32 1 + 11: TypePointer UniformConstant 10(int) +12(gl_DeviceIndex): 11(ptr) Variable UniformConstant + 15: 6(float) Constant 0 + 4(main): 2 Function None 3 + 5: Label + 13: 10(int) Load 12(gl_DeviceIndex) + 14: 6(float) ConvertSToF 13 + 16: 7(fvec4) CompositeConstruct 14 15 15 15 + Store 9(color) 16 + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/spv.drawParams.vert.out b/3rdparty/glslang/Test/baseResults/spv.drawParams.vert.out new file mode 100755 index 000000000..b75efe048 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.drawParams.vert.out @@ -0,0 +1,59 @@ +spv.drawParams.vert +Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 29 + + Capability Shader + Capability DrawParameters + Extension "SPV_KHR_shader_draw_parameters" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 10 13 16 21 + Source GLSL 450 + SourceExtension "GL_ARB_shader_draw_parameters" + Name 4 "main" + Name 8 "a" + Name 10 "gl_BaseVertexARB" + Name 12 "b" + Name 13 "gl_BaseInstanceARB" + Name 15 "c" + Name 16 "gl_DrawIDARB" + Name 21 "pos" + Decorate 10(gl_BaseVertexARB) BuiltIn BaseVertex + Decorate 13(gl_BaseInstanceARB) BuiltIn BaseInstance + Decorate 16(gl_DrawIDARB) BuiltIn DrawIndex + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_BaseVertexARB): 9(ptr) Variable Input +13(gl_BaseInstanceARB): 9(ptr) Variable Input +16(gl_DrawIDARB): 9(ptr) Variable Input + 18: TypeFloat 32 + 19: TypeVector 18(float) 3 + 20: TypePointer Output 19(fvec3) + 21(pos): 20(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 8(a): 7(ptr) Variable Function + 12(b): 7(ptr) Variable Function + 15(c): 7(ptr) Variable Function + 11: 6(int) Load 10(gl_BaseVertexARB) + Store 8(a) 11 + 14: 6(int) Load 13(gl_BaseInstanceARB) + Store 12(b) 14 + 17: 6(int) Load 16(gl_DrawIDARB) + Store 15(c) 17 + 22: 6(int) Load 8(a) + 23: 18(float) ConvertSToF 22 + 24: 6(int) Load 12(b) + 25: 18(float) ConvertSToF 24 + 26: 6(int) Load 15(c) + 27: 18(float) ConvertSToF 26 + 28: 19(fvec3) CompositeConstruct 23 25 27 + Store 21(pos) 28 + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/spv.multiView.frag.out b/3rdparty/glslang/Test/baseResults/spv.multiView.frag.out new file mode 100755 index 000000000..957161727 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.multiView.frag.out @@ -0,0 +1,38 @@ +spv.multiView.frag +Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 17 + + Capability Shader + Capability MultiView + Extension "SPV_KHR_multiview" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 9 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_EXT_multiview" + Name 4 "main" + Name 9 "color" + Name 12 "gl_ViewIndex" + Decorate 12(gl_ViewIndex) BuiltIn ViewIndex + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Output 7(fvec4) + 9(color): 8(ptr) Variable Output + 10: TypeInt 32 1 + 11: TypePointer UniformConstant 10(int) +12(gl_ViewIndex): 11(ptr) Variable UniformConstant + 15: 6(float) Constant 0 + 4(main): 2 Function None 3 + 5: Label + 13: 10(int) Load 12(gl_ViewIndex) + 14: 6(float) ConvertSToF 13 + 16: 7(fvec4) CompositeConstruct 14 15 15 15 + Store 9(color) 16 + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/spv.specConstant.vert.out b/3rdparty/glslang/Test/baseResults/spv.specConstant.vert.out index a6750e579..ea4e542a3 100644 --- a/3rdparty/glslang/Test/baseResults/spv.specConstant.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.specConstant.vert.out @@ -13,7 +13,7 @@ Warning, version 400 is not yet complete; most version-specific features are pre Source GLSL 400 Name 4 "main" Name 9 "arraySize" - Name 14 "foo(vf4[s1516];" + Name 14 "foo(vf4[s1518];" Name 13 "p" Name 17 "builtin_spec_constant(" Name 20 "color" @@ -104,10 +104,10 @@ Warning, version 400 is not yet complete; most version-specific features are pre Store 20(color) 46 48: 10 Load 22(ucol) Store 47(param) 48 - 49: 2 FunctionCall 14(foo(vf4[s1516];) 47(param) + 49: 2 FunctionCall 14(foo(vf4[s1518];) 47(param) Return FunctionEnd -14(foo(vf4[s1516];): 2 Function None 12 +14(foo(vf4[s1518];): 2 Function None 12 13(p): 11(ptr) FunctionParameter 15: Label 54: 24(ptr) AccessChain 53(dupUcol) 23 diff --git a/3rdparty/glslang/Test/baseResults/spv.ssbo.autoassign.frag.out b/3rdparty/glslang/Test/baseResults/spv.ssbo.autoassign.frag.out index 6502faf9b..8d10b6b75 100644 --- a/3rdparty/glslang/Test/baseResults/spv.ssbo.autoassign.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.ssbo.autoassign.frag.out @@ -16,15 +16,15 @@ spv.ssbo.autoassign.frag MemberName 14(BufType) 0 "va" MemberName 14(BufType) 1 "vb" Name 16 "SB0" - MemberName 16(SB0) 0 "SB0" - Name 18 "" + MemberName 16(SB0) 0 "@data" + Name 18 "SB0" Name 26 "TestCB" MemberName 26(TestCB) 0 "W" MemberName 26(TestCB) 1 "H" Name 28 "" Name 55 "SB1" - MemberName 55(SB1) 0 "SB1" - Name 57 "" + MemberName 55(SB1) 0 "@data" + Name 57 "SB1" Name 86 "pos" Name 88 "pos" Name 91 "@entryPointOutput" @@ -37,8 +37,8 @@ spv.ssbo.autoassign.frag MemberDecorate 16(SB0) 0 NonWritable MemberDecorate 16(SB0) 0 Offset 0 Decorate 16(SB0) BufferBlock - Decorate 18 DescriptorSet 0 - Decorate 18 Binding 30 + Decorate 18(SB0) DescriptorSet 0 + Decorate 18(SB0) Binding 30 MemberDecorate 26(TestCB) 0 Offset 0 MemberDecorate 26(TestCB) 1 Offset 4 Decorate 26(TestCB) Block @@ -47,8 +47,8 @@ spv.ssbo.autoassign.frag Decorate 54 ArrayStride 32 MemberDecorate 55(SB1) 0 Offset 0 Decorate 55(SB1) BufferBlock - Decorate 57 DescriptorSet 0 - Decorate 57 Binding 31 + Decorate 57(SB1) DescriptorSet 0 + Decorate 57(SB1) Binding 31 Decorate 88(pos) Location 0 Decorate 91(@entryPointOutput) Location 0 2: TypeVoid @@ -61,7 +61,7 @@ spv.ssbo.autoassign.frag 15: TypeRuntimeArray 14(BufType) 16(SB0): TypeStruct 15 17: TypePointer Uniform 16(SB0) - 18: 17(ptr) Variable Uniform + 18(SB0): 17(ptr) Variable Uniform 19: TypeInt 32 1 20: 19(int) Constant 0 21: TypeInt 32 0 @@ -77,7 +77,7 @@ spv.ssbo.autoassign.frag 54: TypeRuntimeArray 14(BufType) 55(SB1): TypeStruct 54 56: TypePointer Uniform 55(SB1) - 57: 56(ptr) Variable Uniform + 57(SB1): 56(ptr) Variable Uniform 87: TypePointer Input 7(fvec4) 88(pos): 87(ptr) Variable Input 90: TypePointer Output 7(fvec4) @@ -107,7 +107,7 @@ spv.ssbo.autoassign.frag 35: 23(ptr) AccessChain 10(pos) 34 36: 6(float) Load 35 37: 6(float) FAdd 33 36 - 39: 38(ptr) AccessChain 18 20 37 20 + 39: 38(ptr) AccessChain 18(SB0) 20 37 20 40: 7(fvec4) Load 39 41: 23(ptr) AccessChain 10(pos) 22 42: 6(float) Load 41 @@ -118,7 +118,7 @@ spv.ssbo.autoassign.frag 47: 23(ptr) AccessChain 10(pos) 34 48: 6(float) Load 47 49: 6(float) FAdd 46 48 - 51: 38(ptr) AccessChain 18 20 49 50 + 51: 38(ptr) AccessChain 18(SB0) 20 49 50 52: 7(fvec4) Load 51 53: 7(fvec4) FAdd 40 52 Store 13(vTmp) 53 @@ -131,7 +131,7 @@ spv.ssbo.autoassign.frag 64: 23(ptr) AccessChain 10(pos) 34 65: 6(float) Load 64 66: 6(float) FAdd 63 65 - 67: 38(ptr) AccessChain 57 20 66 20 + 67: 38(ptr) AccessChain 57(SB1) 20 66 20 68: 7(fvec4) Load 67 69: 23(ptr) AccessChain 10(pos) 22 70: 6(float) Load 69 @@ -142,7 +142,7 @@ spv.ssbo.autoassign.frag 75: 23(ptr) AccessChain 10(pos) 34 76: 6(float) Load 75 77: 6(float) FAdd 74 76 - 78: 38(ptr) AccessChain 57 20 77 50 + 78: 38(ptr) AccessChain 57(SB1) 20 77 50 79: 7(fvec4) Load 78 80: 7(fvec4) FAdd 68 79 81: 7(fvec4) Load 13(vTmp) diff --git a/3rdparty/glslang/Test/baseResults/tokenPaste.vert.out b/3rdparty/glslang/Test/baseResults/tokenPaste.vert.out index 9a06c34da..4bab57b0b 100755 --- a/3rdparty/glslang/Test/baseResults/tokenPaste.vert.out +++ b/3rdparty/glslang/Test/baseResults/tokenPaste.vert.out @@ -5,7 +5,10 @@ ERROR: 0:40: '##' : unexpected location; end of replacement list ERROR: 0:49: '##' : combined tokens are too long ERROR: 0:52: '##' : not supported for these tokens ERROR: 0:69: '##' : combined token is invalid -ERROR: 5 compilation errors. No code generated. +ERROR: 0:82: 'macro expansion' : Too few args in Macro rec +ERROR: 0:82: '##' : unexpected location +ERROR: 0:82: '##' : unexpected location +ERROR: 8 compilation errors. No code generated. Shader version: 450 diff --git a/3rdparty/glslang/Test/hlsl.intrinsics.f1632.frag b/3rdparty/glslang/Test/hlsl.intrinsics.f1632.frag index 91ff33eb7..f406860eb 100644 --- a/3rdparty/glslang/Test/hlsl.intrinsics.f1632.frag +++ b/3rdparty/glslang/Test/hlsl.intrinsics.f1632.frag @@ -1,34 +1,29 @@ -float PixelShaderFunctionS(float inF0) +float PixelShaderFunctionS(uint inF0) { - f32tof16(inF0); - - return 0.0; + return f16tof32(inF0); } -float1 PixelShaderFunction1(float1 inF0) +float1 PixelShaderFunction1(uint1 inF0) { - // TODO: ... add when float1 prototypes are generated - return 0.0; + return f16tof32(inF0); } -float2 PixelShaderFunction2(float2 inF0) +float2 PixelShaderFunction2(uint2 inF0) { - f32tof16(inF0); - - return float2(1,2); + return f16tof32(inF0); } -float3 PixelShaderFunction3(float3 inF0) +float3 PixelShaderFunction3(uint3 inF0) { - f32tof16(inF0); - - return float3(1,2,3); + return f16tof32(inF0); } -float4 PixelShaderFunction(float4 inF0) +float4 PixelShaderFunction(uint4 inF0) { - f32tof16(inF0); - - return float4(1,2,3,4); + return f16tof32(inF0); } +float4 main() : SV_Target0 +{ + return 0; +} diff --git a/3rdparty/glslang/Test/hlsl.intrinsics.f3216.frag b/3rdparty/glslang/Test/hlsl.intrinsics.f3216.frag new file mode 100644 index 000000000..f31136d9e --- /dev/null +++ b/3rdparty/glslang/Test/hlsl.intrinsics.f3216.frag @@ -0,0 +1,29 @@ +uint PixelShaderFunctionS(float inF0) +{ + return f32tof16(inF0); +} + +uint1 PixelShaderFunction1(float1 inF0) +{ + return f32tof16(inF0); +} + +uint2 PixelShaderFunction2(float2 inF0) +{ + return f32tof16(inF0); +} + +uint3 PixelShaderFunction3(float3 inF0) +{ + return f32tof16(inF0); +} + +uint4 PixelShaderFunction(float4 inF0) +{ + return f32tof16(inF0); +} + +float4 main() : SV_Target0 +{ + return 0; +} diff --git a/3rdparty/glslang/Test/hlsl.numericsuffixes.frag b/3rdparty/glslang/Test/hlsl.numericsuffixes.frag index 60b2572f3..bccb786da 100644 --- a/3rdparty/glslang/Test/hlsl.numericsuffixes.frag +++ b/3rdparty/glslang/Test/hlsl.numericsuffixes.frag @@ -13,6 +13,10 @@ PS_OUTPUT main() int r06 = 6L; // upper long int int r07 = 071; // octal uint r08 = 072u; // unsigned octal + float r09 = 1.h; // half + float r10 = 1.H; // half + float r11 = 1.1h; // half + float r12 = 1.1H; // half PS_OUTPUT ps_output; ps_output.color = r07; // gets 71 octal = 57 decimal diff --git a/3rdparty/glslang/Test/hlsl.struct.frag b/3rdparty/glslang/Test/hlsl.struct.frag index e602c9ed5..33199e067 100644 --- a/3rdparty/glslang/Test/hlsl.struct.frag +++ b/3rdparty/glslang/Test/hlsl.struct.frag @@ -12,7 +12,7 @@ struct myS { myS s1; -static struct { +static class { float4 i; } s2; @@ -30,14 +30,24 @@ struct IN_S { float ff5 : packoffset(c101.y) : register(ps_5_0, s[5]); float ff6 : packoffset(c102.y) : register(s3[5]); +struct empty {}; + +struct containEmpty { + empty e; +}; + float4 PixelShaderFunction(float4 input, IN_S s) : COLOR0 { - struct FS { + class FS { bool3 b3; } s3; s3 == s3; s2.i = s.ff4; + containEmpty ce; + empty e; + e = ce.e; + return input; } diff --git a/3rdparty/glslang/Test/hlsl.structStructName.frag b/3rdparty/glslang/Test/hlsl.structStructName.frag new file mode 100755 index 000000000..f8bf90c74 --- /dev/null +++ b/3rdparty/glslang/Test/hlsl.structStructName.frag @@ -0,0 +1,7 @@ +struct S { int s; }; + +int main() +{ + struct S t; + return t.s; +} diff --git a/3rdparty/glslang/Test/hlsl.structbuffer.fn.frag b/3rdparty/glslang/Test/hlsl.structbuffer.fn.frag new file mode 100644 index 000000000..3a09f7feb --- /dev/null +++ b/3rdparty/glslang/Test/hlsl.structbuffer.fn.frag @@ -0,0 +1,23 @@ + +StructuredBuffer sbuf : register(t10); +RWStructuredBuffer sbuf2; + +// Not shared, because of type difference. +StructuredBuffer sbuf3 : register(t12); + +uint4 get(in StructuredBuffer sb, uint bufferOffset) +{ + return sb[bufferOffset]; +} + +void set(in RWStructuredBuffer sb, uint bufferOffset, uint4 data) +{ + sb[bufferOffset] = data; +} + +float4 main(uint pos : FOO) : SV_Target0 +{ + set(sbuf2, 2, get(sbuf, 3)); + + return 0; +} diff --git a/3rdparty/glslang/Test/spv.Operations.frag b/3rdparty/glslang/Test/spv.Operations.frag index 5c8c8af0e..52f0a30fb 100644 --- a/3rdparty/glslang/Test/spv.Operations.frag +++ b/3rdparty/glslang/Test/spv.Operations.frag @@ -135,4 +135,7 @@ void main() b = !b; FragColor = b ? vec4(i) + vec4(f) + v : v; + + mat4 m1 = mat4(1.0), m2 = mat4(0.0); + FragColor += (b ? m1 : m2)[1]; } diff --git a/3rdparty/glslang/Test/spv.deviceGroup.frag b/3rdparty/glslang/Test/spv.deviceGroup.frag new file mode 100644 index 000000000..649648976 --- /dev/null +++ b/3rdparty/glslang/Test/spv.deviceGroup.frag @@ -0,0 +1,9 @@ +#version 450 + +#extension GL_EXT_device_group : enable + +out vec4 color; + +void main() { + color = vec4(gl_DeviceIndex, 0, 0, 0); +} diff --git a/3rdparty/glslang/Test/spv.drawParams.vert b/3rdparty/glslang/Test/spv.drawParams.vert new file mode 100644 index 000000000..f2e3c1efa --- /dev/null +++ b/3rdparty/glslang/Test/spv.drawParams.vert @@ -0,0 +1,13 @@ +#version 450 + +#extension GL_ARB_shader_draw_parameters : enable + +out vec3 pos; + +void main() +{ + int a = gl_BaseVertexARB; + int b = gl_BaseInstanceARB; + int c = gl_DrawIDARB; + pos = vec3(a, b, c); +} diff --git a/3rdparty/glslang/Test/spv.multiView.frag b/3rdparty/glslang/Test/spv.multiView.frag new file mode 100644 index 000000000..47c2763af --- /dev/null +++ b/3rdparty/glslang/Test/spv.multiView.frag @@ -0,0 +1,9 @@ +#version 450 + +#extension GL_EXT_multiview : enable + +out vec4 color; + +void main() { + color = vec4(gl_ViewIndex, 0, 0, 0); +} diff --git a/3rdparty/glslang/Test/tokenPaste.vert b/3rdparty/glslang/Test/tokenPaste.vert index 369b7b887..7aa113a29 100644 --- a/3rdparty/glslang/Test/tokenPaste.vert +++ b/3rdparty/glslang/Test/tokenPaste.vert @@ -77,3 +77,6 @@ uniform M_OUTER(argPaste); #define M_NEST2(q) int q ## suff #define M_OUTER2(p) M_NEST2(p ## 20) uniform M_OUTER2(argPaste); + +#define rec(x)## +rec(rec()) \ No newline at end of file diff --git a/3rdparty/glslang/glslang/Include/BaseTypes.h b/3rdparty/glslang/glslang/Include/BaseTypes.h index f0e3c3781..9ac587f42 100644 --- a/3rdparty/glslang/glslang/Include/BaseTypes.h +++ b/3rdparty/glslang/glslang/Include/BaseTypes.h @@ -203,6 +203,9 @@ enum TBuiltInVariable { EbvBaryCoordPullModel, #endif + EbvViewIndex, + EbvDeviceIndex, + #ifdef NV_EXTENSIONS EbvViewportMaskNV, EbvSecondaryPositionNV, @@ -210,6 +213,7 @@ enum TBuiltInVariable { EbvPositionPerViewNV, EbvViewportMaskPerViewNV, #endif + // HLSL built-ins that live only temporarily, until they get remapped // to one of the above. EbvFragDepthGreater, diff --git a/3rdparty/glslang/glslang/Include/Types.h b/3rdparty/glslang/glslang/Include/Types.h index 4a14843dc..52aa99931 100644 --- a/3rdparty/glslang/glslang/Include/Types.h +++ b/3rdparty/glslang/glslang/Include/Types.h @@ -188,6 +188,8 @@ struct TSampler { // misnomer now; includes images, textures without sampler, case EbtFloat: break; case EbtInt: s.append("i"); break; case EbtUint: s.append("u"); break; + case EbtInt64: s.append("i64"); break; + case EbtUint64: s.append("u64"); break; default: break; // some compilers want this } if (image) { diff --git a/3rdparty/glslang/glslang/Include/revision.h b/3rdparty/glslang/glslang/Include/revision.h index c7ddb1fa4..56445856e 100644 --- a/3rdparty/glslang/glslang/Include/revision.h +++ b/3rdparty/glslang/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1845" -#define GLSLANG_DATE "24-Feb-2017" +#define GLSLANG_REVISION "Overload400-PrecQual.1875" +#define GLSLANG_DATE "03-Mar-2017" diff --git a/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp b/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp index b9fa08255..60cff6012 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp @@ -85,6 +85,8 @@ TBuiltIns::TBuiltIns() prefixes[EbtFloat] = ""; prefixes[EbtInt] = "i"; prefixes[EbtUint] = "u"; + prefixes[EbtInt64] = "i64"; + prefixes[EbtUint64] = "u64"; postfixes[2] = "2"; postfixes[3] = "3"; postfixes[4] = "4"; @@ -103,6 +105,7 @@ TBuiltIns::~TBuiltIns() { } + // // Add all context-independent built-in functions and variables that are present // for the given version and profile. Share common ones across stages, otherwise @@ -3698,6 +3701,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + if (profile != EEsProfile) { + commonBuiltins.append("uniform int gl_ViewIndex;"); + commonBuiltins.append("uniform int gl_DeviceIndex;"); // GL_EXT_device_group + } + // printf("%s\n", commonBuiltins.c_str()); // printf("%s\n", stageBuiltins[EShLangFragment].c_str()); } @@ -5308,6 +5316,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("imageAtomicExchange", 1, &E_GL_OES_shader_image_atomic); symbolTable.setFunctionExtensions("imageAtomicCompSwap", 1, &E_GL_OES_shader_image_atomic); } + + if (profile != EEsProfile) { + symbolTable.setFunctionExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); + BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); + symbolTable.setFunctionExtensions("gl_ViewIndex", 1, &E_GL_EXT_multiview); + BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable); + } break; case EShLangCompute: diff --git a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp index db77b41d5..acb4d7382 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp @@ -5597,11 +5597,10 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con mergeObjectLayoutQualifiers(defaultQualification, currentBlockQualifier, true); - // "The offset qualifier can only be used on block members of blocks declared with std140 or std430 layouts." // "The align qualifier can only be used on blocks or block members, and only for blocks declared with std140 or std430 layouts." - if (currentBlockQualifier.hasAlign() || currentBlockQualifier.hasAlign()) { + if (currentBlockQualifier.hasAlign()) { if (defaultQualification.layoutPacking != ElpStd140 && defaultQualification.layoutPacking != ElpStd430) { - error(loc, "can only be used with std140 or std430 layout packing", "offset/align", ""); + error(loc, "can only be used with std140 or std430 layout packing", "align", ""); defaultQualification.layoutAlign = -1; } } @@ -5643,9 +5642,12 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con } } else memberWithoutLocation = true; - if (memberQualifier.hasAlign()) { + + // "The offset qualifier can only be used on block members of blocks declared with std140 or std430 layouts." + // "The align qualifier can only be used on blocks or block members, and only for blocks declared with std140 or std430 layouts." + if (memberQualifier.hasAlign() || memberQualifier.hasOffset()) { if (defaultQualification.layoutPacking != ElpStd140 && defaultQualification.layoutPacking != ElpStd430) - error(memberLoc, "can only be used with std140 or std430 layout packing", "align", ""); + error(memberLoc, "can only be used with std140 or std430 layout packing", "offset/align", ""); } TQualifier newMemberQualification = defaultQualification; diff --git a/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp b/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp index 080a5e0f4..bed60fe7a 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp @@ -103,7 +103,11 @@ void TType::buildMangledName(TString& mangledName) mangledName += "M"; break; case EbtStruct: - mangledName += "struct-"; + case EbtBlock: + if (basicType == EbtStruct) + mangledName += "struct-"; + else + mangledName += "block-"; if (typeName) mangledName += *typeName; for (unsigned int i = 0; i < structure->size(); ++i) { diff --git a/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp b/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp index 0bcd3af58..6a09150a3 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp @@ -232,6 +232,10 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_OES_tessellation_point_size] = EBhDisable; extensionBehavior[E_GL_OES_texture_buffer] = EBhDisable; extensionBehavior[E_GL_OES_texture_cube_map_array] = EBhDisable; + + // EXT extensions + extensionBehavior[E_GL_EXT_device_group] = EBhDisable; + extensionBehavior[E_GL_EXT_multiview] = EBhDisable; } // Get code that is not part of a shared symbol table, is specific to this shader, @@ -683,7 +687,7 @@ void TParseVersions::doubleCheck(const TSourceLoc& loc, const char* op) } #ifdef AMD_EXTENSIONS -// Call for any operation needing GLSL float16 data-type support. +// Call for any operation needing float16 data-type support. void TParseVersions::float16Check(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { diff --git a/3rdparty/glslang/glslang/MachineIndependent/Versions.h b/3rdparty/glslang/glslang/MachineIndependent/Versions.h index b99033f8b..7f5d33d5e 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Versions.h +++ b/3rdparty/glslang/glslang/MachineIndependent/Versions.h @@ -132,6 +132,10 @@ const char* const E_GL_ARB_sparse_texture_clamp = "GL_ARB_sparse_texture const char* const E_GL_EXT_shader_non_constant_global_initializers = "GL_EXT_shader_non_constant_global_initializers"; const char* const E_GL_EXT_shader_image_load_formatted = "GL_EXT_shader_image_load_formatted"; +// EXT extensions +const char* const E_GL_EXT_device_group = "GL_EXT_device_group"; +const char* const E_GL_EXT_multiview = "GL_EXT_multiview"; + // #line and #include const char* const E_GL_GOOGLE_cpp_style_line_directive = "GL_GOOGLE_cpp_style_line_directive"; const char* const E_GL_GOOGLE_include_directive = "GL_GOOGLE_include_directive"; diff --git a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp index ef8e83e17..590290bbd 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -986,6 +986,8 @@ TPpContext::TokenStream* TPpContext::PrescanMacroArg(TokenStream& arg, TPpToken* int token; while ((token = scanToken(ppToken)) != tMarkerInput::marker && token != EndOfInput) { token = tokenPaste(token, *ppToken); + if (token == tMarkerInput::marker || token == EndOfInput) + break; if (token == PpAtomIdentifier && MacroExpand(ppToken, false, newLineOkay) != 0) continue; expandedArg->putToken(token, ppToken); @@ -1050,7 +1052,7 @@ int TPpContext::tMacroInput::scan(TPpToken* ppToken) // TODO: preprocessor: properly handle whitespace (or lack of it) between tokens when expanding if (token == PpAtomIdentifier) { int i; - for (i = mac->args.size() - 1; i >= 0; i--) + for (i = (int)mac->args.size() - 1; i >= 0; i--) if (strcmp(pp->atomStrings.getString(mac->args[i]), ppToken->name) == 0) break; if (i >= 0) { diff --git a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpContext.h b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpContext.h index f7b352200..f1c41abd3 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpContext.h +++ b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpContext.h @@ -236,7 +236,7 @@ public: void reset() { current = 0; } protected: - void putSubtoken(int); + void putSubtoken(char); int getSubtoken(); void ungetSubtoken(); diff --git a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp index a30442400..89748fb2f 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp @@ -101,9 +101,16 @@ int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken) { bool HasDecimalOrExponent = false; int isDouble = 0; + bool generateFloat16 = false; + bool acceptFloat16 = parseContext.intermediate.getSource() == EShSourceHlsl; + bool isFloat16 = false; + bool requireHF = false; #ifdef AMD_EXTENSIONS - int isFloat16 = 0; - bool enableFloat16 = parseContext.version >= 450 && parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float); + if (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float)) { + acceptFloat16 = true; + generateFloat16 = true; + requireHF = true; + } #endif const auto saveName = [&](int ch) { @@ -158,21 +165,27 @@ int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken) saveName(ch2); isDouble = 1; } + } else if (acceptFloat16 && (ch == 'h' || ch == 'H')) { #ifdef AMD_EXTENSIONS - } else if (enableFloat16 && (ch == 'h' || ch == 'H')) { - parseContext.float16Check(ppToken->loc, "half floating-point suffix"); + if (generateFloat16) + parseContext.float16Check(ppToken->loc, "half floating-point suffix"); +#endif if (!HasDecimalOrExponent) parseContext.ppError(ppToken->loc, "float literal needs a decimal point or exponent", "", ""); - int ch2 = getChar(); - if (ch2 != 'f' && ch2 != 'F') { - ungetChar(); - ungetChar(); + if (requireHF) { + int ch2 = getChar(); + if (ch2 != 'f' && ch2 != 'F') { + ungetChar(); + ungetChar(); + } else { + saveName(ch); + saveName(ch2); + isFloat16 = generateFloat16; + } } else { saveName(ch); - saveName(ch2); - isFloat16 = 1; + isFloat16 = generateFloat16; } -#endif } else if (ch == 'f' || ch == 'F') { parseContext.profileRequires(ppToken->loc, EEsProfile, 300, nullptr, "floating-point suffix"); if (! parseContext.relaxedErrors()) @@ -197,10 +210,8 @@ int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken) // Return the right token type if (isDouble) return PpAtomConstDouble; -#ifdef AMD_EXTENSIONS else if (isFloat16) return PpAtomConstFloat16; -#endif else return PpAtomConstFloat; } @@ -216,6 +227,15 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) int ii = 0; unsigned long long ival = 0; bool enableInt64 = pp->parseContext.version >= 450 && pp->parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_int64); + bool acceptHalf = pp->parseContext.intermediate.getSource() == EShSourceHlsl; +#ifdef AMD_EXTENSIONS + if (pp->parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float)) + acceptHalf = true; +#endif + + const auto floatingPointChar = [&](int ch) { return ch == '.' || ch == 'e' || ch == 'E' || + ch == 'f' || ch == 'F' || + (acceptHalf && (ch == 'h' || ch == 'H')); }; ppToken->ival = 0; ppToken->i64val = 0; @@ -380,7 +400,7 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) ch = getch(); } while (ch >= '0' && ch <= '9'); } - if (ch == '.' || ch == 'e' || ch == 'f' || ch == 'E' || ch == 'F') + if (floatingPointChar(ch)) return pp->lFloatConst(len, ch, ppToken); // wasn't a float, so must be octal... @@ -435,9 +455,9 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) } ch = getch(); } while (ch >= '0' && ch <= '9'); - if (ch == '.' || ch == 'e' || ch == 'f' || ch == 'E' || ch == 'F') { + if (floatingPointChar(ch)) return pp->lFloatConst(len, ch, ppToken); - } else { + else { // Finish handling signed and unsigned integers int numericLen = len; bool isUnsigned = false; diff --git a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp index 32d2b0b74..7fa06a5a4 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp @@ -96,9 +96,8 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace glslang { // push onto back of stream -void TPpContext::TokenStream::putSubtoken(int subtoken) +void TPpContext::TokenStream::putSubtoken(char subtoken) { - assert((subtoken & ~0xff) == 0); data.push_back(static_cast(subtoken)); } @@ -125,7 +124,8 @@ void TPpContext::TokenStream::putToken(int token, TPpToken* ppToken) const char* s; char* str = NULL; - putSubtoken(token); + assert((token & ~0xff) == 0); + putSubtoken(static_cast(token)); switch (token) { case PpAtomIdentifier: diff --git a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.h b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.h index 9695c2fcc..923fd9fa0 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.h +++ b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.h @@ -127,9 +127,7 @@ enum EFixedAtoms { PpAtomConstUint64, PpAtomConstFloat, PpAtomConstDouble, -#ifdef AMD_EXTENSIONS PpAtomConstFloat16, -#endif PpAtomConstString, // Identifiers diff --git a/3rdparty/glslang/glslang/Public/ShaderLang.h b/3rdparty/glslang/glslang/Public/ShaderLang.h index 8628dff08..8aa9baa31 100644 --- a/3rdparty/glslang/glslang/Public/ShaderLang.h +++ b/3rdparty/glslang/glslang/Public/ShaderLang.h @@ -203,14 +203,6 @@ SH_IMPORT_EXPORT int ShCompile( EShMessages messages = EShMsgDefault // warnings and errors ); -SH_IMPORT_EXPORT int ShLink( - const ShHandle, // linker object - const ShHandle h[], // compiler objects to link together - const int numHandles, - ShHandle uniformMap, // updated with new uniforms - short int** uniformsAccessed, // returned with indexes of uniforms accessed - int* numUniformsAccessed); - SH_IMPORT_EXPORT int ShLinkExt( const ShHandle, // linker object const ShHandle h[], // compiler objects to link together diff --git a/3rdparty/glslang/gtests/Hlsl.FromFile.cpp b/3rdparty/glslang/gtests/Hlsl.FromFile.cpp index 3187f436f..689a01513 100644 --- a/3rdparty/glslang/gtests/Hlsl.FromFile.cpp +++ b/3rdparty/glslang/gtests/Hlsl.FromFile.cpp @@ -132,7 +132,8 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.intrinsics.evalfns.frag", "main"}, {"hlsl.intrinsics.d3dcolortoubyte4.frag", "main"}, {"hlsl.intrinsics.double.frag", "PixelShaderFunction"}, - {"hlsl.intrinsics.f1632.frag", "PixelShaderFunction"}, + {"hlsl.intrinsics.f1632.frag", "main"}, + {"hlsl.intrinsics.f3216.frag", "main"}, {"hlsl.intrinsics.frag", "main"}, {"hlsl.intrinsics.lit.frag", "PixelShaderFunction"}, {"hlsl.intrinsics.negative.comp", "ComputeShaderFunction"}, @@ -225,10 +226,12 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.structbuffer.atomics.frag", "main"}, {"hlsl.structbuffer.byte.frag", "main"}, {"hlsl.structbuffer.coherent.frag", "main"}, + {"hlsl.structbuffer.fn.frag", "main"}, {"hlsl.structbuffer.rw.frag", "main"}, {"hlsl.structbuffer.rwbyte.frag", "main"}, {"hlsl.structin.vert", "main"}, {"hlsl.structIoFourWay.frag", "main"}, + {"hlsl.structStructName.frag", "main"}, {"hlsl.intrinsics.vert", "VertexShaderFunction"}, {"hlsl.matType.frag", "PixelShaderFunction"}, {"hlsl.matType.bool.frag", "main"}, diff --git a/3rdparty/glslang/gtests/Spv.FromFile.cpp b/3rdparty/glslang/gtests/Spv.FromFile.cpp index b04ec51b7..10577bd47 100644 --- a/3rdparty/glslang/gtests/Spv.FromFile.cpp +++ b/3rdparty/glslang/gtests/Spv.FromFile.cpp @@ -225,7 +225,9 @@ INSTANTIATE_TEST_CASE_P( "spv.dataOutIndirect.vert", "spv.deepRvalue.frag", "spv.depthOut.frag", + "spv.deviceGroup.frag", "spv.discard-dce.frag", + "spv.drawParams.vert", "spv.doWhileLoop.frag", "spv.earlyReturnDiscard.frag", "spv.flowControl.frag", @@ -234,8 +236,10 @@ INSTANTIATE_TEST_CASE_P( "spv.functionCall.frag", "spv.functionNestedOpaque.vert", "spv.functionSemantics.frag", + "spv.GeometryShaderPassthrough.geom", "spv.interpOps.frag", "spv.int64.frag", + "spv.intOps.vert", "spv.layoutNested.vert", "spv.length.frag", "spv.localAggregates.frag", @@ -248,16 +252,17 @@ INSTANTIATE_TEST_CASE_P( "spv.merge-unreachable.frag", "spv.multiStruct.comp", "spv.multiStructFuncall.frag", + "spv.multiView.frag", "spv.newTexture.frag", "spv.noDeadDecorations.vert", "spv.nonSquare.vert", + "spv.noWorkgroup.comp", "spv.offsets.frag", "spv.Operations.frag", - "spv.intOps.vert", - "spv.noWorkgroup.comp", "spv.precision.frag", "spv.prepost.frag", "spv.qualifiers.vert", + "spv.sampleMaskOverrideCoverage.frag", "spv.shaderBallot.comp", "spv.shaderDrawParams.vert", "spv.shaderGroupVote.comp", diff --git a/3rdparty/glslang/hlsl/hlslGrammar.cpp b/3rdparty/glslang/hlsl/hlslGrammar.cpp index 974c8959e..a5bccc428 100755 --- a/3rdparty/glslang/hlsl/hlslGrammar.cpp +++ b/3rdparty/glslang/hlsl/hlslGrammar.cpp @@ -406,36 +406,13 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& node, TIntermNode*& node2) } } - TString* blockName = idToken.string; - - // For structbuffers, we couldn't create the block type while accepting the - // template type, because we need the identifier name. Now that we have that, - // we can create the buffer type. - // TODO: how to determine this without looking for implicit array sizes? - if (variableType.getBasicType() == EbtBlock) { - const int memberCount = variableType.getStruct()->size(); - assert(memberCount > 0); - - TType* contentType = (*variableType.getStruct())[memberCount-1].type; - - // Set the field name and qualifier from the declaration, now that we know it. - if (contentType->isRuntimeSizedArray()) { - contentType->getQualifier() = variableType.getQualifier(); - blockName = nullptr; // this will be an anonymous block... - contentType->setFieldName(*idToken.string); // field name is declaration name - variableType.setTypeName(*idToken.string); - } - } - - // Hand off the actual declaration - // TODO: things scoped within an annotation need their own name space; // TODO: strings are not yet handled. if (variableType.getBasicType() != EbtString && parseContext.getAnnotationNestingLevel() == 0) { if (typedefDecl) parseContext.declareTypedef(idToken.loc, *idToken.string, variableType); else if (variableType.getBasicType() == EbtBlock) - parseContext.declareBlock(idToken.loc, variableType, blockName); + parseContext.declareBlock(idToken.loc, variableType, idToken.string); else { if (variableType.getQualifier().storage == EvqUniform && ! variableType.containsOpaque()) { // this isn't really an individual variable, but a member of the $Global buffer @@ -1282,6 +1259,7 @@ bool HlslGrammar::acceptType(TType& type) return acceptStructBufferType(type); break; + case EHTokClass: case EHTokStruct: case EHTokCBuffer: case EHTokTBuffer: @@ -1291,9 +1269,8 @@ bool HlslGrammar::acceptType(TType& type) // An identifier could be for a user-defined type. // Note we cache the symbol table lookup, to save for a later rule // when this is not a type. - token.symbol = parseContext.symbolTable.find(*token.string); - if (token.symbol && token.symbol->getAsVariable() && token.symbol->getAsVariable()->isUserType()) { - type.shallowCopy(token.symbol->getType()); + token.symbol = parseContext.lookupUserType(*token.string, type); + if (token.symbol != nullptr) { advanceToken(); return true; } else @@ -1752,9 +1729,11 @@ bool HlslGrammar::acceptType(TType& type) // struct // : struct_type IDENTIFIER post_decls LEFT_BRACE struct_declaration_list RIGHT_BRACE // | struct_type post_decls LEFT_BRACE struct_declaration_list RIGHT_BRACE +// | struct_type IDENTIFIER // use of previously declared struct type // // struct_type // : STRUCT +// | CLASS // | CBUFFER // | TBUFFER // @@ -1770,8 +1749,9 @@ bool HlslGrammar::acceptStruct(TType& type) // TBUFFER else if (acceptTokenClass(EHTokTBuffer)) storageQualifier = EvqBuffer; + // CLASS // STRUCT - else if (! acceptTokenClass(EHTokStruct)) + else if (! acceptTokenClass(EHTokClass) && ! acceptTokenClass(EHTokStruct)) return false; // IDENTIFIER @@ -1784,12 +1764,18 @@ bool HlslGrammar::acceptStruct(TType& type) // post_decls TQualifier postDeclQualifier; postDeclQualifier.clear(); - acceptPostDecls(postDeclQualifier); + bool postDeclsFound = acceptPostDecls(postDeclQualifier); // LEFT_BRACE + // struct_type IDENTIFIER if (! acceptTokenClass(EHTokLeftBrace)) { - expected("{"); - return false; + if (structName.size() > 0 && !postDeclsFound && parseContext.lookupUserType(structName, type) != nullptr) { + // struct_type IDENTIFIER + return true; + } else { + expected("{"); + return false; + } } // struct_declaration_list @@ -1888,18 +1874,26 @@ bool HlslGrammar::acceptStructBufferType(TType& type) TArraySizes unsizedArray; unsizedArray.addInnerSize(UnsizedArraySize); templateType->newArraySizes(unsizedArray); - templateType->getQualifier().storage = storage; - templateType->getQualifier().readonly = readonly; + + // field name is canonical for all structbuffers + templateType->setFieldName("@data"); // Create block type. TODO: hidden internal uint member when needed + TTypeList* blockStruct = new TTypeList; TTypeLoc member = { templateType, token.loc }; blockStruct->push_back(member); + // This is the type of the buffer block (SSBO) TType blockType(blockStruct, "", templateType->getQualifier()); - // It's not until we see the name during declaration that we can set the - // field name. That happens in HlslGrammar::acceptDeclaration. + blockType.getQualifier().storage = storage; + blockType.getQualifier().readonly = readonly; + + // We may have created an equivalent type before, in which case we should use its + // deep structure. + parseContext.shareStructBufferType(blockType); + type.shallowCopy(blockType); return true; @@ -2527,8 +2521,8 @@ bool HlslGrammar::acceptPostfixExpression(TIntermTyped*& node) ~tFinalize() { parseContext.finalizeFlattening(); } HlslParseContext& parseContext; private: - const tFinalize& operator=(const tFinalize& f); - tFinalize(const tFinalize& f); + const tFinalize& operator=(const tFinalize& f) { return *this; } + tFinalize(const tFinalize& f) : parseContext(f.parseContext) { } } finalize(parseContext); // Initialize the flattening accumulation data, so we can track data across multiple bracket or @@ -3289,11 +3283,18 @@ void HlslGrammar::acceptArraySpecifier(TArraySizes*& arraySizes) // COLON LAYOUT layout_qualifier_list // annotations // optional // -void HlslGrammar::acceptPostDecls(TQualifier& qualifier) +// Return true if any tokens were accepted. That is, +// false can be returned on successfully recognizing nothing, +// not necessarily meaning bad syntax. +// +bool HlslGrammar::acceptPostDecls(TQualifier& qualifier) { + bool found = false; + do { // COLON if (acceptTokenClass(EHTokColon)) { + found = true; HlslToken idToken; if (peekTokenClass(EHTokLayout)) acceptLayoutQualifierList(qualifier); @@ -3301,18 +3302,18 @@ void HlslGrammar::acceptPostDecls(TQualifier& qualifier) // PACKOFFSET LEFT_PAREN c[Subcomponent][.component] RIGHT_PAREN if (! acceptTokenClass(EHTokLeftParen)) { expected("("); - return; + return false; } HlslToken locationToken; if (! acceptIdentifier(locationToken)) { expected("c[subcomponent][.component]"); - return; + return false; } HlslToken componentToken; if (acceptTokenClass(EHTokDot)) { if (! acceptIdentifier(componentToken)) { expected("component"); - return; + return false; } } if (! acceptTokenClass(EHTokRightParen)) { @@ -3322,19 +3323,19 @@ void HlslGrammar::acceptPostDecls(TQualifier& qualifier) parseContext.handlePackOffset(locationToken.loc, qualifier, *locationToken.string, componentToken.string); } else if (! acceptIdentifier(idToken)) { expected("layout, semantic, packoffset, or register"); - return; + return false; } else if (*idToken.string == "register") { // REGISTER LEFT_PAREN [shader_profile,] Type#[subcomp]opt (COMMA SPACEN)opt RIGHT_PAREN // LEFT_PAREN if (! acceptTokenClass(EHTokLeftParen)) { expected("("); - return; + return false; } HlslToken registerDesc; // for Type# HlslToken profile; if (! acceptIdentifier(registerDesc)) { expected("register number description"); - return; + return false; } if (registerDesc.string->size() > 1 && !isdigit((*registerDesc.string)[1]) && acceptTokenClass(EHTokComma)) { @@ -3343,7 +3344,7 @@ void HlslGrammar::acceptPostDecls(TQualifier& qualifier) profile = registerDesc; if (! acceptIdentifier(registerDesc)) { expected("register number description"); - return; + return false; } } int subComponent = 0; @@ -3351,7 +3352,7 @@ void HlslGrammar::acceptPostDecls(TQualifier& qualifier) // LEFT_BRACKET subcomponent RIGHT_BRACKET if (! peekTokenClass(EHTokIntConstant)) { expected("literal integer"); - return; + return false; } subComponent = token.i; advanceToken(); @@ -3365,7 +3366,7 @@ void HlslGrammar::acceptPostDecls(TQualifier& qualifier) if (acceptTokenClass(EHTokComma)) { if (! acceptIdentifier(spaceDesc)) { expected ("space identifier"); - return; + return false; } } // RIGHT_PAREN @@ -3378,12 +3379,15 @@ void HlslGrammar::acceptPostDecls(TQualifier& qualifier) // semantic, in idToken.string parseContext.handleSemantic(idToken.loc, qualifier, *idToken.string); } - } else if (peekTokenClass(EHTokLeftAngle)) + } else if (peekTokenClass(EHTokLeftAngle)) { + found = true; acceptAnnotations(qualifier); - else + } else break; } while (true); + + return found; } } // end namespace glslang diff --git a/3rdparty/glslang/hlsl/hlslGrammar.h b/3rdparty/glslang/hlsl/hlslGrammar.h index c8753fdc6..07080e448 100755 --- a/3rdparty/glslang/hlsl/hlslGrammar.h +++ b/3rdparty/glslang/hlsl/hlslGrammar.h @@ -114,7 +114,7 @@ namespace glslang { bool acceptCaseLabel(TIntermNode*&); bool acceptDefaultLabel(TIntermNode*&); void acceptArraySpecifier(TArraySizes*&); - void acceptPostDecls(TQualifier&); + bool acceptPostDecls(TQualifier&); bool acceptDefaultParameterDeclaration(const TType&, TIntermTyped*&); HlslParseContext& parseContext; // state of parsing and helper functions for building the intermediate diff --git a/3rdparty/glslang/hlsl/hlslParseHelper.cpp b/3rdparty/glslang/hlsl/hlslParseHelper.cpp index af4edc211..e42b4f352 100755 --- a/3rdparty/glslang/hlsl/hlslParseHelper.cpp +++ b/3rdparty/glslang/hlsl/hlslParseHelper.cpp @@ -691,6 +691,22 @@ TIntermTyped* HlslParseContext::handleBracketOperator(const TSourceLoc& loc, TIn } } + // Handle operator[] on structured buffers: this indexes into the array element of the buffer. + // indexStructBufferContent returns nullptr if it isn't a structuredbuffer (SSBO). + TIntermTyped* sbArray = indexStructBufferContent(loc, base); + if (sbArray != nullptr) { + if (sbArray == nullptr) + return nullptr; + + // Now we'll apply the [] index to that array + const TOperator idxOp = (index->getQualifier().storage == EvqConst) ? EOpIndexDirect : EOpIndexIndirect; + + TIntermTyped* element = intermediate.addIndex(idxOp, sbArray, index, loc); + const TType derefType(sbArray->getType(), 0); + element->setType(derefType); + return element; + } + return nullptr; } @@ -866,9 +882,7 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt const int vecSize = sampler.isShadow() ? 1 : 4; // TODO: handle arbitrary sample return sizes return intermediate.addMethod(base, TType(sampler.type, EvqTemporary, vecSize), &field, loc); } - } else if (isStructBufferMethod(field) && - base->getType().isRuntimeSizedArray() && - (base->getQualifier().storage == EvqUniform || base->getQualifier().storage == EvqBuffer)) { + } else if (isStructBufferType(base->getType())) { TType retType(base->getType(), 0); return intermediate.addMethod(base, retType, &field, loc); } else if (field == "Append" || @@ -1919,9 +1933,11 @@ void HlslParseContext::remapNonEntryPointIO(TFunction& function) if (function.getType().getBasicType() != EbtVoid) clearUniformInputOutput(function.getWritableType().getQualifier()); - // parameters + // parameters. + // References to structuredbuffer types are left unmodified for (int i = 0; i < function.getParamCount(); i++) - clearUniformInputOutput(function[i].type->getQualifier()); + if (!isReference(*function[i].type)) + clearUniformInputOutput(function[i].type->getQualifier()); } // Handle function returns, including type conversions to the function return type @@ -2284,13 +2300,17 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte const TOperator op = node->getAsOperator()->getOp(); TIntermAggregate* argAggregate = arguments ? arguments->getAsAggregate() : nullptr; - - TIntermTyped* argArray = argAggregate ? argAggregate->getSequence()[0]->getAsTyped() : nullptr; // array - - // Bail out if not a block method - if (argArray == nullptr || !argArray->getType().isRuntimeSizedArray()) + if (argAggregate == nullptr) return; + // Buffer is the object upon which method is called, so always arg 0 + TIntermTyped* bufferObj = argAggregate->getSequence()[0]->getAsTyped(); + + // Index to obtain the runtime sized array out of the buffer. + TIntermTyped* argArray = indexStructBufferContent(loc, bufferObj); + if (argArray == nullptr) + return; // It might not be a struct buffer method. + switch (op) { case EOpMethodLoad: { @@ -2432,7 +2452,7 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte case EOpMethodGetDimensions: { - const int numArgs = argAggregate->getSequence().size(); + const int numArgs = (int)argAggregate->getSequence().size(); TIntermTyped* argNumItems = argAggregate->getSequence()[1]->getAsTyped(); // out num items TIntermTyped* argStride = numArgs > 2 ? argAggregate->getSequence()[2]->getAsTyped() : nullptr; // out stride @@ -3564,10 +3584,107 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& } case EOpF16tof32: + { + // input uvecN with low 16 bits of each component holding a float16. convert to float32. + TIntermTyped* argValue = node->getAsUnaryNode()->getOperand(); + TIntermTyped* zero = intermediate.addConstantUnion(0, loc, true); + const int vecSize = argValue->getType().getVectorSize(); + + TOperator constructOp = EOpNull; + switch (vecSize) { + case 1: constructOp = EOpNull; break; // direct use, no construct needed + case 2: constructOp = EOpConstructVec2; break; + case 3: constructOp = EOpConstructVec3; break; + case 4: constructOp = EOpConstructVec4; break; + default: assert(0); break; + } + + // For scalar case, we don't need to construct another type. + TIntermAggregate* result = (vecSize > 1) ? new TIntermAggregate(constructOp) : nullptr; + + if (result) { + result->setType(TType(EbtFloat, EvqTemporary, vecSize)); + result->setLoc(loc); + } + + for (int idx = 0; idx < vecSize; ++idx) { + TIntermTyped* idxConst = intermediate.addConstantUnion(idx, loc, true); + TIntermTyped* component = argValue->getType().isVector() ? + intermediate.addIndex(EOpIndexDirect, argValue, idxConst, loc) : argValue; + + if (component != argValue) + component->setType(TType(argValue->getBasicType(), EvqTemporary)); + + TIntermTyped* unpackOp = new TIntermUnary(EOpUnpackHalf2x16); + unpackOp->setType(TType(EbtFloat, EvqTemporary, 2)); + unpackOp->getAsUnaryNode()->setOperand(component); + unpackOp->setLoc(loc); + + TIntermTyped* lowOrder = intermediate.addIndex(EOpIndexDirect, unpackOp, zero, loc); + + if (result != nullptr) { + result->getSequence().push_back(lowOrder); + node = result; + } else { + node = lowOrder; + } + } + + break; + } + case EOpF32tof16: { - // Temporary until decomposition is available. - error(loc, "unimplemented intrinsic: handle natively", "f32tof16", ""); + // input floatN converted to 16 bit float in low order bits of each component of uintN + TIntermTyped* argValue = node->getAsUnaryNode()->getOperand(); + + TIntermTyped* zero = intermediate.addConstantUnion(0.0, EbtFloat, loc, true); + const int vecSize = argValue->getType().getVectorSize(); + + TOperator constructOp = EOpNull; + switch (vecSize) { + case 1: constructOp = EOpNull; break; // direct use, no construct needed + case 2: constructOp = EOpConstructUVec2; break; + case 3: constructOp = EOpConstructUVec3; break; + case 4: constructOp = EOpConstructUVec4; break; + default: assert(0); break; + } + + // For scalar case, we don't need to construct another type. + TIntermAggregate* result = (vecSize > 1) ? new TIntermAggregate(constructOp) : nullptr; + + if (result) { + result->setType(TType(EbtUint, EvqTemporary, vecSize)); + result->setLoc(loc); + } + + for (int idx = 0; idx < vecSize; ++idx) { + TIntermTyped* idxConst = intermediate.addConstantUnion(idx, loc, true); + TIntermTyped* component = argValue->getType().isVector() ? + intermediate.addIndex(EOpIndexDirect, argValue, idxConst, loc) : argValue; + + if (component != argValue) + component->setType(TType(argValue->getBasicType(), EvqTemporary)); + + TIntermAggregate* vec2ComponentAndZero = new TIntermAggregate(EOpConstructVec2); + vec2ComponentAndZero->getSequence().push_back(component); + vec2ComponentAndZero->getSequence().push_back(zero); + vec2ComponentAndZero->setType(TType(EbtFloat, EvqTemporary, 2)); + vec2ComponentAndZero->setLoc(loc); + + TIntermTyped* packOp = new TIntermUnary(EOpPackHalf2x16); + packOp->getAsUnaryNode()->setOperand(vec2ComponentAndZero); + packOp->setLoc(loc); + packOp->setType(TType(EbtUint, EvqTemporary)); + + if (result != nullptr) { + result->getSequence().push_back(packOp); + node = result; + } else { + node = packOp; + } + } + break; } @@ -3637,13 +3754,13 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct // Find it in the symbol table. // const TFunction* fnCandidate = nullptr; - bool builtIn; + bool builtIn = false; // TODO: this needs improvement: there's no way at present to look up a signature in // the symbol table for an arbitrary type. This is a temporary hack until that ability exists. // It will have false positives, since it doesn't check arg counts or types. if (arguments && arguments->getAsAggregate()) { - if (arguments->getAsAggregate()->getSequence()[0]->getAsTyped()->getType().isRuntimeSizedArray()) { + if (isStructBufferType(arguments->getAsAggregate()->getSequence()[0]->getAsTyped()->getType())) { if (isStructBufferMethod(function->getName())) { const TString mangle = function->getName() + "("; TSymbol* symbol = symbolTable.find(mangle, &builtIn); @@ -5033,6 +5150,101 @@ void HlslParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& n trackLinkage(*block); } +// +// Generate index to the array element in a structure buffer (SSBO) +// +TIntermTyped* HlslParseContext::indexStructBufferContent(const TSourceLoc& loc, TIntermTyped* buffer) const +{ + // Bail out if not a struct buffer + if (buffer == nullptr || ! isStructBufferType(buffer->getType())) + return nullptr; + + // Runtime sized array is always the last element. + const TTypeList* bufferStruct = buffer->getType().getStruct(); + TIntermTyped* arrayPosition = intermediate.addConstantUnion(unsigned(bufferStruct->size()-1), loc); + + TIntermTyped* argArray = intermediate.addIndex(EOpIndexDirectStruct, buffer, arrayPosition, loc); + argArray->setType(*(*bufferStruct)[bufferStruct->size()-1].type); + + return argArray; +} + +// +// IFF type is a structuredbuffer/byteaddressbuffer type, return the content +// (template) type. E.g, StructuredBuffer -> MyType. Else return nullptr. +// +TType* HlslParseContext::getStructBufferContentType(const TType& type) const +{ + if (type.getBasicType() != EbtBlock) + return nullptr; + + const int memberCount = (int)type.getStruct()->size(); + assert(memberCount > 0); + + TType* contentType = (*type.getStruct())[memberCount-1].type; + + return contentType->isRuntimeSizedArray() ? contentType : nullptr; +} + +// +// If an existing struct buffer has a sharable type, then share it. +// +void HlslParseContext::shareStructBufferType(TType& type) +{ + // PackOffset must be equivalent to share types on a per-member basis. + // Note: cannot use auto type due to recursion. Thus, this is a std::function. + const std::function + compareQualifiers = [&](TType& lhs, TType& rhs) -> bool { + if (lhs.getQualifier().layoutOffset != rhs.getQualifier().layoutOffset) + return false; + + if (lhs.isStruct() != rhs.isStruct()) + return false; + + if (lhs.isStruct() && rhs.isStruct()) { + if (lhs.getStruct()->size() != rhs.getStruct()->size()) + return false; + + for (int i = 0; i < int(lhs.getStruct()->size()); ++i) + if (!compareQualifiers(*(*lhs.getStruct())[i].type, *(*rhs.getStruct())[i].type)) + return false; + } + + return true; + }; + + // We need to compare certain qualifiers in addition to the type. + const auto typeEqual = [compareQualifiers](TType& lhs, TType& rhs) -> bool { + if (lhs.getQualifier().readonly != rhs.getQualifier().readonly) + return false; + + // If both are structures, recursively look for packOffset equality + // as well as type equality. + return compareQualifiers(lhs, rhs) && lhs == rhs; + }; + + // TString typeName; + // type.appendMangledName(typeName); + // type.setTypeName(typeName); + + // This is an exhaustive O(N) search, but real world shaders have + // only a small number of these. + for (int idx = 0; idx < int(structBufferTypes.size()); ++idx) { + // If the deep structure matches, modulo qualifiers, use it + if (typeEqual(*structBufferTypes[idx], type)) { + type.shallowCopy(*structBufferTypes[idx]); + return; + } + } + + // Otherwise, remember it: + TType* typeCopy = new TType; + typeCopy->shallowCopy(type); + structBufferTypes.push_back(typeCopy); + + // structBuffTypes.push_back(type.getWritableStruct()); +} + void HlslParseContext::paramFix(TType& type) { switch (type.getQualifier().storage) { @@ -5043,6 +5255,18 @@ void HlslParseContext::paramFix(TType& type) case EvqTemporary: type.getQualifier().storage = EvqIn; break; + case EvqBuffer: + { + // SSBO parameter. These do not go through the declareBlock path since they are fn parameters. + correctUniform(type.getQualifier()); + TQualifier bufferQualifier = globalBufferDefaults; + mergeObjectLayoutQualifiers(bufferQualifier, type.getQualifier(), true); + bufferQualifier.storage = type.getQualifier().storage; + bufferQualifier.readonly = type.getQualifier().readonly; + bufferQualifier.coherent = type.getQualifier().coherent; + type.getQualifier() = bufferQualifier; + break; + } default: break; } @@ -5874,6 +6098,19 @@ void HlslParseContext::declareStruct(const TSourceLoc& loc, TString& structName, ioTypeMap[type.getStruct()] = newLists; } +// Lookup a user-type by name. +// If found, fill in the type and return the defining symbol. +// If not found, return nullptr. +TSymbol* HlslParseContext::lookupUserType(const TString& typeName, TType& type) +{ + TSymbol* symbol = symbolTable.find(typeName); + if (symbol && symbol->getAsVariable() && symbol->getAsVariable()->isUserType()) { + type.shallowCopy(symbol->getType()); + return symbol; + } else + return nullptr; +} + // // Do everything necessary to handle a variable (non-block) declaration. // Either redeclaring a variable, or making a new one, updating the symbol @@ -5914,6 +6151,7 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& i if (it != ioTypeMap.end()) type.setStruct(it->second.uniform); } + break; default: break; @@ -6551,8 +6789,6 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TType& type, const TS error(memberLoc, "member cannot contradict block (or what block inherited from global)", "xfb_buffer", ""); } - if (memberQualifier.hasPacking()) - error(memberLoc, "member of block cannot have a packing layout qualifier", typeList[member].type->getFieldName().c_str(), ""); if (memberQualifier.hasLocation()) { switch (type.getQualifier().storage) { case EvqVaryingIn: @@ -6564,10 +6800,6 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TType& type, const TS } } else memberWithoutLocation = true; - if (memberQualifier.hasAlign()) { - if (defaultQualification.layoutPacking != ElpStd140 && defaultQualification.layoutPacking != ElpStd430) - error(memberLoc, "can only be used with std140 or std430 layout packing", "align", ""); - } TQualifier newMemberQualification = defaultQualification; mergeQualifiers(newMemberQualification, memberQualifier); diff --git a/3rdparty/glslang/hlsl/hlslParseHelper.h b/3rdparty/glslang/hlsl/hlslParseHelper.h index de1bc9581..5b585dcda 100755 --- a/3rdparty/glslang/hlsl/hlslParseHelper.h +++ b/3rdparty/glslang/hlsl/hlslParseHelper.h @@ -133,6 +133,7 @@ public: const TFunction* findFunction(const TSourceLoc& loc, TFunction& call, bool& builtIn, TIntermTyped*& args); void declareTypedef(const TSourceLoc&, TString& identifier, const TType&); void declareStruct(const TSourceLoc&, TString& structName, TType&); + TSymbol* lookupUserType(const TString&, TType&); TIntermNode* declareVariable(const TSourceLoc&, TString& identifier, TType&, TIntermTyped* initializer = 0); void lengthenList(const TSourceLoc&, TIntermSequence& list, int size); TIntermTyped* addConstructor(const TSourceLoc&, TIntermNode*, const TType&); @@ -180,6 +181,9 @@ public: void initFlattening() { flattenLevel.push_back(0); flattenOffset.push_back(0); } void finalizeFlattening() { flattenLevel.pop_back(); flattenOffset.pop_back(); } + // Share struct buffer deep types + void shareStructBufferType(TType&); + protected: struct TFlattenData { TFlattenData() : nextBinding(TQualifier::layoutBindingEnd) { } @@ -248,6 +252,14 @@ protected: bool isSamplerMethod(const TString& name) const; bool isStructBufferMethod(const TString& name) const; + TType* getStructBufferContentType(const TType& type) const; + bool isStructBufferType(const TType& type) const { return getStructBufferContentType(type) != nullptr; } + TIntermTyped* indexStructBufferContent(const TSourceLoc& loc, TIntermTyped* buffer) const; + + // Return true if this type is a reference. This is not currently a type method in case that's + // a language specific answer. + bool isReference(const TType& type) const { return isStructBufferType(type); } + // Pass through to base class after remembering builtin mappings. using TParseContextBase::trackLinkage; void trackLinkage(TSymbol& variable) override; @@ -330,6 +342,9 @@ protected: // Structure splitting data: TMap splitIoVars; // variables with the builtin interstage IO removed, indexed by unique ID. + // Structuredbuffer shared types. Typically there are only a few. + TVector structBufferTypes; + // The builtin interstage IO map considers e.g, EvqPosition on input and output separately, so that we // can build the linkage correctly if position appears on both sides. Otherwise, multiple positions // are considered identical. diff --git a/3rdparty/glslang/hlsl/hlslScanContext.cpp b/3rdparty/glslang/hlsl/hlslScanContext.cpp index 907ccd1cd..a80ee93f8 100755 --- a/3rdparty/glslang/hlsl/hlslScanContext.cpp +++ b/3rdparty/glslang/hlsl/hlslScanContext.cpp @@ -327,6 +327,7 @@ void HlslScanContext::fillInKeywordMap() (*KeywordMap)["RWStructuredBuffer"] = EHTokRWStructuredBuffer; (*KeywordMap)["StructuredBuffer"] = EHTokStructuredBuffer; + (*KeywordMap)["class"] = EHTokClass; (*KeywordMap)["struct"] = EHTokStruct; (*KeywordMap)["cbuffer"] = EHTokCBuffer; (*KeywordMap)["tbuffer"] = EHTokTBuffer; @@ -354,7 +355,6 @@ void HlslScanContext::fillInKeywordMap() ReservedSet->insert("auto"); ReservedSet->insert("catch"); ReservedSet->insert("char"); - ReservedSet->insert("class"); ReservedSet->insert("const_cast"); ReservedSet->insert("enum"); ReservedSet->insert("explicit"); @@ -740,6 +740,7 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier() return keyword; // variable, user type, ... + case EHTokClass: case EHTokStruct: case EHTokTypedef: case EHTokCBuffer: diff --git a/3rdparty/glslang/hlsl/hlslTokens.h b/3rdparty/glslang/hlsl/hlslTokens.h index 824aa8c8f..1c8f52834 100755 --- a/3rdparty/glslang/hlsl/hlslTokens.h +++ b/3rdparty/glslang/hlsl/hlslTokens.h @@ -268,6 +268,7 @@ enum EHlslTokenClass { // variable, user type, ... EHTokIdentifier, EHTokTypeName, + EHTokClass, EHTokStruct, EHTokCBuffer, EHTokTBuffer,