diff --git a/Test/baseResults/spv.intrinsicsSpirvDecorateString.comp.out b/Test/baseResults/spv.intrinsicsSpirvDecorateString.comp.out new file mode 100644 index 00000000..87225b87 --- /dev/null +++ b/Test/baseResults/spv.intrinsicsSpirvDecorateString.comp.out @@ -0,0 +1,39 @@ +spv.intrinsicsSpirvDecorateString.comp +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 16 + + Capability Shader + Extension "SPV_GOOGLE_hlsl_functionality1" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source GLSL 460 + SourceExtension "GL_EXT_spirv_intrinsics" + Name 4 "main" + Name 8 "x" + Name 10 "y" + Decorate 8(x) RelaxedPrecision + DecorateStringGOOGLE 8(x) DecorationHlslSemanticGOOGLE "foobar" + Decorate 10(y) RelaxedPrecision + DecorateStringGOOGLE 10(y) DecorationHlslSemanticGOOGLE "foobar" + Decorate 15 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 9: 6(float) Constant 1056964608 + 11: 6(float) Constant 1065353216 + 12: TypeInt 32 0 + 13: TypeVector 12(int) 3 + 14: 12(int) Constant 1 + 15: 13(ivec3) ConstantComposite 14 14 14 + 4(main): 2 Function None 3 + 5: Label + 8(x): 7(ptr) Variable Function + 10(y): 7(ptr) Variable Function + Store 8(x) 9 + Store 10(y) 11 + Return + FunctionEnd diff --git a/Test/spv.intrinsicsSpirvDecorateString.comp b/Test/spv.intrinsicsSpirvDecorateString.comp new file mode 100644 index 00000000..7de65fce --- /dev/null +++ b/Test/spv.intrinsicsSpirvDecorateString.comp @@ -0,0 +1,15 @@ +#version 460 core +#extension GL_EXT_spirv_intrinsics : require + +spirv_decorate_string(extensions = ["SPV_GOOGLE_hlsl_functionality1"], 5635, "foobar") // UserSemantic +spirv_decorate(0) // RelaxedPrecision +float x = 0.5; + +spirv_decorate(0) // RelaxedPrecision +spirv_decorate_string(extensions = ["SPV_GOOGLE_hlsl_functionality1"], 5635, "foobar") // UserSemantic +float y = 1.0; + +layout(local_size_x = 1) in; +void main() +{ +} diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 4b22c6cd..638fc6a3 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -4228,7 +4228,7 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons if (dstSpirvDecorate.decorates.find(decorateString.first) != dstSpirvDecorate.decorates.end()) error(loc, "too many SPIR-V decorate qualifiers", "spirv_decorate_string", "(decoration=%u)", decorateString.first); else - dstSpirvDecorate.decorates.insert(decorateString); + dstSpirvDecorate.decorateStrings.insert(decorateString); } } else { dst.spirvDecorate = src.spirvDecorate; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 4ded1278..44c50e05 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -385,6 +385,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.intrinsicsSpirvByReference.vert", "spv.intrinsicsSpirvDecorate.frag", "spv.intrinsicsSpirvDecorateId.comp", + "spv.intrinsicsSpirvDecorateString.comp", "spv.intrinsicsSpirvExecutionMode.frag", "spv.intrinsicsSpirvInstruction.vert", "spv.intrinsicsSpirvLiteral.vert",