From c884b4a47f8e7c8953d41f6318a18d13a021b2bd Mon Sep 17 00:00:00 2001
From: Rex Xu <rex.xu@amd.com>
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
-- 
GitLab