From c884b4a47f8e7c8953d41f6318a18d13a021b2bd Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Wed, 29 Jun 2016 15:03:44 +0800 Subject: [PATCH] SPV: Certain decorations are missing for structure-typed in/out variables. --- SPIRV/GlslangToSpv.cpp | 2 +- Test/baseResults/spv.430.vert.out | 1 + Test/baseResults/spv.layoutNested.vert.out | 1 + Test/baseResults/spv.localAggregates.frag.out | 3 +++ Test/baseResults/spv.variableArrayIndex.frag.out | 3 +++ 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index ceea1e2b1..7f12090a3 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -4024,7 +4024,7 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol id = createSpvVariable(symbol); symbolValues[symbol->getId()] = id; - if (! symbol->getType().isStruct()) { + if (symbol->getBasicType() != glslang::EbtBlock) { addDecoration(id, TranslatePrecisionDecoration(symbol->getType())); addDecoration(id, TranslateInterpolationDecoration(symbol->getType().getQualifier())); addDecoration(id, TranslateAuxiliaryStorageDecoration(symbol->getType().getQualifier())); diff --git a/Test/baseResults/spv.430.vert.out b/Test/baseResults/spv.430.vert.out index 07dc1a792..527491347 100755 --- a/Test/baseResults/spv.430.vert.out +++ b/Test/baseResults/spv.430.vert.out @@ -63,6 +63,7 @@ Linked vertex stage: Decorate 55(sampb2) Binding 5 Decorate 56(sampb4) DescriptorSet 0 Decorate 56(sampb4) Binding 31 + Decorate 62(var) Flat Decorate 62(var) Location 0 MemberDecorate 63(MS) 0 Location 17 Decorate 63(MS) Block diff --git a/Test/baseResults/spv.layoutNested.vert.out b/Test/baseResults/spv.layoutNested.vert.out index 2d6f559c3..d778fbb41 100644 --- a/Test/baseResults/spv.layoutNested.vert.out +++ b/Test/baseResults/spv.layoutNested.vert.out @@ -162,6 +162,7 @@ Linked vertex stage: Decorate 58(bBt3) BufferBlock Decorate 60(bBtn3) DescriptorSet 1 Decorate 60(bBtn3) Binding 0 + Decorate 62(sout) Flat MemberDecorate 63(S) 0 Invariant MemberDecorate 63(S) 1 Invariant MemberDecorate 63(S) 2 Invariant diff --git a/Test/baseResults/spv.localAggregates.frag.out b/Test/baseResults/spv.localAggregates.frag.out index 2d464de50..21c389a0b 100755 --- a/Test/baseResults/spv.localAggregates.frag.out +++ b/Test/baseResults/spv.localAggregates.frag.out @@ -44,8 +44,11 @@ Linked fragment stage: Name 128 "samp2D" Name 134 "foo" Name 135 "foo2" + Decorate 15(foo3) Flat Decorate 90(condition) Flat Decorate 128(samp2D) DescriptorSet 0 + Decorate 134(foo) Flat + Decorate 135(foo2) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/spv.variableArrayIndex.frag.out b/Test/baseResults/spv.variableArrayIndex.frag.out index b84b5bacc..1f8ee96ab 100755 --- a/Test/baseResults/spv.variableArrayIndex.frag.out +++ b/Test/baseResults/spv.variableArrayIndex.frag.out @@ -39,6 +39,9 @@ Linked fragment stage: Name 63 "coord" Name 69 "constructed" Decorate 10(Count) Flat + Decorate 20(foo3) Flat + Decorate 34(foo2) Flat + Decorate 36(foo) Flat Decorate 59(samp2D) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2