HLSL: Reverse what the driver is told about row/column majorness, matching the row...
authorJohn Kessenich <cepheus@frii.com>
Mon, 26 Sep 2016 02:25:06 +0000 (20:25 -0600)
committerJohn Kessenich <cepheus@frii.com>
Mon, 26 Sep 2016 02:26:03 +0000 (20:26 -0600)
Test/baseResults/hlsl.buffer.frag.out
Test/baseResults/hlsl.layout.frag.out
Test/baseResults/hlsl.reflection.vert.out
Test/hlsl.buffer.frag
glslang/Include/revision.h
hlsl/hlslGrammar.cpp
hlsl/hlslParseHelper.cpp

index 78a8e73..6d7b610 100755 (executable)
@@ -2,40 +2,40 @@ hlsl.buffer.frag
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:26  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
-0:26    Function Parameters: 
-0:26      'input' (layout(location=0 ) in 4-component vector of float)
+0:30  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:30    Function Parameters: 
+0:30      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
-0:27      Sequence
-0:27        move second child to first child (temp 4-component vector of float)
+0:31      Sequence
+0:31        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          add (temp 4-component vector of float)
-0:27            add (temp 4-component vector of float)
-0:27              add (temp 4-component vector of float)
-0:27                add (temp 4-component vector of float)
-0:27                  'input' (layout(location=0 ) in 4-component vector of float)
-0:27                  v1: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float)
-0:27                    'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1})
-0:27                    Constant:
-0:27                      0 (const uint)
-0:27                v2: direct index for structure (layout(column_major std430 ) buffer 4-component vector of float)
-0:27                  'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2})
-0:27                  Constant:
-0:27                    0 (const uint)
-0:27              v3: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float)
-0:27                'anon@2' (layout(set=10 binding=2 column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3})
-0:27                Constant:
-0:27                  0 (const uint)
-0:27            v4: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
-0:27              'anon@3' (layout(binding=8 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7})
-0:27              Constant:
-0:27                0 (const uint)
-0:27        Branch: Return
+0:31          add (temp 4-component vector of float)
+0:31            add (temp 4-component vector of float)
+0:31              add (temp 4-component vector of float)
+0:31                add (temp 4-component vector of float)
+0:31                  'input' (layout(location=0 ) in 4-component vector of float)
+0:31                  v1: direct index for structure (layout(row_major std140 ) uniform 4-component vector of float)
+0:31                    'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v1})
+0:31                    Constant:
+0:31                      0 (const uint)
+0:31                v2: direct index for structure (layout(row_major std430 ) buffer 4-component vector of float)
+0:31                  'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer 4-component vector of float v2})
+0:31                  Constant:
+0:31                    0 (const uint)
+0:31              v3: direct index for structure (layout(row_major std140 ) uniform 4-component vector of float)
+0:31                'anon@2' (layout(set=10 binding=2 row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v3, layout(row_major std140 offset=20 ) uniform int i3})
+0:31                Constant:
+0:31                  0 (const uint)
+0:31            v4: direct index for structure (layout(row_major std430 offset=16 ) buffer 4-component vector of float)
+0:31              'anon@3' (layout(binding=8 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v4, layout(row_major std430 offset=48 ) buffer int i4, layout(row_major std430 offset=60 ) buffer float f1, layout(row_major std430 offset=64 ) buffer float f3, layout(row_major std430 offset=68 ) buffer float f4, layout(row_major std430 offset=72 ) buffer float f5, layout(row_major std430 ) buffer float f6, layout(row_major std430 ) buffer float f7, layout(row_major std430 ) buffer 3X4 matrix of float m1, layout(column_major std430 ) buffer 3X4 matrix of float m2, layout(row_major std430 ) buffer 3X4 matrix of float m3, ...})
+0:31              Constant:
+0:31                0 (const uint)
+0:31        Branch: Return
 0:?   Linker Objects
-0:?     'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1})
-0:?     'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2})
-0:?     'anon@2' (layout(set=10 binding=2 column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3})
-0:?     'anon@3' (layout(binding=8 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v1})
+0:?     'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer 4-component vector of float v2})
+0:?     'anon@2' (layout(set=10 binding=2 row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v3, layout(row_major std140 offset=20 ) uniform int i3})
+0:?     'anon@3' (layout(binding=8 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v4, layout(row_major std430 offset=48 ) buffer int i4, layout(row_major std430 offset=60 ) buffer float f1, layout(row_major std430 offset=64 ) buffer float f3, layout(row_major std430 offset=68 ) buffer float f4, layout(row_major std430 offset=72 ) buffer float f5, layout(row_major std430 ) buffer float f6, layout(row_major std430 ) buffer float f7, layout(row_major std430 ) buffer 3X4 matrix of float m1, layout(column_major std430 ) buffer 3X4 matrix of float m2, layout(row_major std430 ) buffer 3X4 matrix of float m3, ...})
 0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
 0:?     'input' (layout(location=0 ) in 4-component vector of float)
 
@@ -46,46 +46,46 @@ Linked fragment stage:
 Shader version: 450
 gl_FragCoord origin is upper left
 0:? Sequence
-0:26  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
-0:26    Function Parameters: 
-0:26      'input' (layout(location=0 ) in 4-component vector of float)
+0:30  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:30    Function Parameters: 
+0:30      'input' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
-0:27      Sequence
-0:27        move second child to first child (temp 4-component vector of float)
+0:31      Sequence
+0:31        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          add (temp 4-component vector of float)
-0:27            add (temp 4-component vector of float)
-0:27              add (temp 4-component vector of float)
-0:27                add (temp 4-component vector of float)
-0:27                  'input' (layout(location=0 ) in 4-component vector of float)
-0:27                  v1: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float)
-0:27                    'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1})
-0:27                    Constant:
-0:27                      0 (const uint)
-0:27                v2: direct index for structure (layout(column_major std430 ) buffer 4-component vector of float)
-0:27                  'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2})
-0:27                  Constant:
-0:27                    0 (const uint)
-0:27              v3: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float)
-0:27                'anon@2' (layout(set=10 binding=2 column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3})
-0:27                Constant:
-0:27                  0 (const uint)
-0:27            v4: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
-0:27              'anon@3' (layout(binding=8 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7})
-0:27              Constant:
-0:27                0 (const uint)
-0:27        Branch: Return
+0:31          add (temp 4-component vector of float)
+0:31            add (temp 4-component vector of float)
+0:31              add (temp 4-component vector of float)
+0:31                add (temp 4-component vector of float)
+0:31                  'input' (layout(location=0 ) in 4-component vector of float)
+0:31                  v1: direct index for structure (layout(row_major std140 ) uniform 4-component vector of float)
+0:31                    'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v1})
+0:31                    Constant:
+0:31                      0 (const uint)
+0:31                v2: direct index for structure (layout(row_major std430 ) buffer 4-component vector of float)
+0:31                  'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer 4-component vector of float v2})
+0:31                  Constant:
+0:31                    0 (const uint)
+0:31              v3: direct index for structure (layout(row_major std140 ) uniform 4-component vector of float)
+0:31                'anon@2' (layout(set=10 binding=2 row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v3, layout(row_major std140 offset=20 ) uniform int i3})
+0:31                Constant:
+0:31                  0 (const uint)
+0:31            v4: direct index for structure (layout(row_major std430 offset=16 ) buffer 4-component vector of float)
+0:31              'anon@3' (layout(binding=8 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v4, layout(row_major std430 offset=48 ) buffer int i4, layout(row_major std430 offset=60 ) buffer float f1, layout(row_major std430 offset=64 ) buffer float f3, layout(row_major std430 offset=68 ) buffer float f4, layout(row_major std430 offset=72 ) buffer float f5, layout(row_major std430 ) buffer float f6, layout(row_major std430 ) buffer float f7, layout(row_major std430 ) buffer 3X4 matrix of float m1, layout(column_major std430 ) buffer 3X4 matrix of float m2, layout(row_major std430 ) buffer 3X4 matrix of float m3, ...})
+0:31              Constant:
+0:31                0 (const uint)
+0:31        Branch: Return
 0:?   Linker Objects
-0:?     'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1})
-0:?     'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2})
-0:?     'anon@2' (layout(set=10 binding=2 column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3})
-0:?     'anon@3' (layout(binding=8 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v1})
+0:?     'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer 4-component vector of float v2})
+0:?     'anon@2' (layout(set=10 binding=2 row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v3, layout(row_major std140 offset=20 ) uniform int i3})
+0:?     'anon@3' (layout(binding=8 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v4, layout(row_major std430 offset=48 ) buffer int i4, layout(row_major std430 offset=60 ) buffer float f1, layout(row_major std430 offset=64 ) buffer float f3, layout(row_major std430 offset=68 ) buffer float f4, layout(row_major std430 offset=72 ) buffer float f5, layout(row_major std430 ) buffer float f6, layout(row_major std430 ) buffer float f7, layout(row_major std430 ) buffer 3X4 matrix of float m1, layout(column_major std430 ) buffer 3X4 matrix of float m2, layout(row_major std430 ) buffer 3X4 matrix of float m3, ...})
 0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
 0:?     'input' (layout(location=0 ) in 4-component vector of float)
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 41
+// Id's are bound by 42
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
@@ -105,16 +105,20 @@ gl_FragCoord origin is upper left
                               MemberName 28 0  "v3"
                               MemberName 28 1  "i3"
                               Name 30  ""
-                              Name 34  ""
-                              MemberName 34 0  "v4"
-                              MemberName 34 1  "i4"
-                              MemberName 34 2  "f1"
-                              MemberName 34 3  "f3"
-                              MemberName 34 4  "f4"
-                              MemberName 34 5  "f5"
-                              MemberName 34 6  "f6"
-                              MemberName 34 7  "f7"
-                              Name 36  ""
+                              Name 35  ""
+                              MemberName 35 0  "v4"
+                              MemberName 35 1  "i4"
+                              MemberName 35 2  "f1"
+                              MemberName 35 3  "f3"
+                              MemberName 35 4  "f4"
+                              MemberName 35 5  "f5"
+                              MemberName 35 6  "f6"
+                              MemberName 35 7  "f7"
+                              MemberName 35 8  "m1"
+                              MemberName 35 9  "m2"
+                              MemberName 35 10  "m3"
+                              MemberName 35 11  "m4"
+                              Name 37  ""
                               Decorate 9(@entryPointOutput) Location 0
                               Decorate 11(input) Location 0
                               MemberDecorate 13 0 Offset 0
@@ -128,17 +132,29 @@ gl_FragCoord origin is upper left
                               Decorate 28 Block
                               Decorate 30 DescriptorSet 10
                               Decorate 30 Binding 2
-                              MemberDecorate 34 0 Offset 16
-                              MemberDecorate 34 1 Offset 48
-                              MemberDecorate 34 2 Offset 60
-                              MemberDecorate 34 3 Offset 64
-                              MemberDecorate 34 4 Offset 68
-                              MemberDecorate 34 5 Offset 72
-                              MemberDecorate 34 6 Offset 76
-                              MemberDecorate 34 7 Offset 80
-                              Decorate 34 BufferBlock
-                              Decorate 36 DescriptorSet 0
-                              Decorate 36 Binding 8
+                              MemberDecorate 35 0 Offset 16
+                              MemberDecorate 35 1 Offset 48
+                              MemberDecorate 35 2 Offset 60
+                              MemberDecorate 35 3 Offset 64
+                              MemberDecorate 35 4 Offset 68
+                              MemberDecorate 35 5 Offset 72
+                              MemberDecorate 35 6 Offset 76
+                              MemberDecorate 35 7 Offset 80
+                              MemberDecorate 35 8 RowMajor
+                              MemberDecorate 35 8 Offset 96
+                              MemberDecorate 35 8 MatrixStride 16
+                              MemberDecorate 35 9 ColMajor
+                              MemberDecorate 35 9 Offset 160
+                              MemberDecorate 35 9 MatrixStride 16
+                              MemberDecorate 35 10 RowMajor
+                              MemberDecorate 35 10 Offset 208
+                              MemberDecorate 35 10 MatrixStride 16
+                              MemberDecorate 35 11 RowMajor
+                              MemberDecorate 35 11 Offset 272
+                              MemberDecorate 35 11 MatrixStride 16
+                              Decorate 35 BufferBlock
+                              Decorate 37 DescriptorSet 0
+                              Decorate 37 Binding 8
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -159,9 +175,10 @@ gl_FragCoord origin is upper left
               28:             TypeStruct 7(fvec4) 16(int)
               29:             TypePointer Uniform 28(struct)
               30:     29(ptr) Variable Uniform
-              34:             TypeStruct 7(fvec4) 16(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float)
-              35:             TypePointer Uniform 34(struct)
-              36:     35(ptr) Variable Uniform
+              34:             TypeMatrix 7(fvec4) 3
+              35:             TypeStruct 7(fvec4) 16(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 34 34 34 34
+              36:             TypePointer Uniform 35(struct)
+              37:     36(ptr) Variable Uniform
 4(PixelShaderFunction):           2 Function None 3
                5:             Label
               12:    7(fvec4) Load 11(input)
@@ -174,9 +191,9 @@ gl_FragCoord origin is upper left
               31:     18(ptr) AccessChain 30 17
               32:    7(fvec4) Load 31
               33:    7(fvec4) FAdd 27 32
-              37:     18(ptr) AccessChain 36 17
-              38:    7(fvec4) Load 37
-              39:    7(fvec4) FAdd 33 38
-                              Store 9(@entryPointOutput) 39
+              38:     18(ptr) AccessChain 37 17
+              39:    7(fvec4) Load 38
+              40:    7(fvec4) FAdd 33 39
+                              Store 9(@entryPointOutput) 40
                               Return
                               FunctionEnd
index 4455385..938332b 100755 (executable)
@@ -11,24 +11,24 @@ gl_FragCoord origin is upper left
 0:17          add (temp 4-component vector of float)
 0:17            add (temp 4-component vector of float)
 0:17              'input' (in 4-component vector of float)
-0:17              v1: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
-0:17                'anon@0' (layout(set=3 binding=5 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1})
+0:17              v1: direct index for structure (layout(row_major std430 offset=16 ) buffer 4-component vector of float)
+0:17                'anon@0' (layout(set=3 binding=5 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1})
 0:17                Constant:
 0:17                  0 (const uint)
-0:17            v5: direct index for structure (layout(column_major std430 offset=0 ) buffer 4-component vector of float)
-0:17              'anon@1' (layout(column_major std430 push_constant ) buffer block{layout(column_major std430 offset=0 ) buffer 4-component vector of float v5})
+0:17            v5: direct index for structure (layout(row_major std430 offset=0 ) buffer 4-component vector of float)
+0:17              'anon@1' (layout(row_major std430 push_constant ) buffer block{layout(row_major std430 offset=0 ) buffer 4-component vector of float v5})
 0:17              Constant:
 0:17                0 (const uint)
-0:17          v1PostLayout: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
-0:17            'anon@2' (layout(set=4 binding=7 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout})
+0:17          v1PostLayout: direct index for structure (layout(row_major std430 offset=16 ) buffer 4-component vector of float)
+0:17            'anon@2' (layout(set=4 binding=7 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout})
 0:17            Constant:
 0:17              0 (const uint)
 0:?   Linker Objects
-0:?     'anon@0' (layout(set=3 binding=5 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1})
-0:?     'anon@1' (layout(column_major std430 push_constant ) buffer block{layout(column_major std430 offset=0 ) buffer 4-component vector of float v5})
+0:?     'anon@0' (layout(set=3 binding=5 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1})
+0:?     'anon@1' (layout(row_major std430 push_constant ) buffer block{layout(row_major std430 offset=0 ) buffer 4-component vector of float v5})
 0:?     'specConst' (specialization-constant const int)
 0:?       10 (const int)
-0:?     'anon@2' (layout(set=4 binding=7 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout})
+0:?     'anon@2' (layout(set=4 binding=7 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout})
 
 
 Linked fragment stage:
@@ -46,24 +46,24 @@ gl_FragCoord origin is upper left
 0:17          add (temp 4-component vector of float)
 0:17            add (temp 4-component vector of float)
 0:17              'input' (in 4-component vector of float)
-0:17              v1: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
-0:17                'anon@0' (layout(set=3 binding=5 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1})
+0:17              v1: direct index for structure (layout(row_major std430 offset=16 ) buffer 4-component vector of float)
+0:17                'anon@0' (layout(set=3 binding=5 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1})
 0:17                Constant:
 0:17                  0 (const uint)
-0:17            v5: direct index for structure (layout(column_major std430 offset=0 ) buffer 4-component vector of float)
-0:17              'anon@1' (layout(column_major std430 push_constant ) buffer block{layout(column_major std430 offset=0 ) buffer 4-component vector of float v5})
+0:17            v5: direct index for structure (layout(row_major std430 offset=0 ) buffer 4-component vector of float)
+0:17              'anon@1' (layout(row_major std430 push_constant ) buffer block{layout(row_major std430 offset=0 ) buffer 4-component vector of float v5})
 0:17              Constant:
 0:17                0 (const uint)
-0:17          v1PostLayout: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
-0:17            'anon@2' (layout(set=4 binding=7 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout})
+0:17          v1PostLayout: direct index for structure (layout(row_major std430 offset=16 ) buffer 4-component vector of float)
+0:17            'anon@2' (layout(set=4 binding=7 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout})
 0:17            Constant:
 0:17              0 (const uint)
 0:?   Linker Objects
-0:?     'anon@0' (layout(set=3 binding=5 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1})
-0:?     'anon@1' (layout(column_major std430 push_constant ) buffer block{layout(column_major std430 offset=0 ) buffer 4-component vector of float v5})
+0:?     'anon@0' (layout(set=3 binding=5 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1})
+0:?     'anon@1' (layout(row_major std430 push_constant ) buffer block{layout(row_major std430 offset=0 ) buffer 4-component vector of float v5})
 0:?     'specConst' (specialization-constant const int)
 0:?       10 (const int)
-0:?     'anon@2' (layout(set=4 binding=7 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout})
+0:?     'anon@2' (layout(set=4 binding=7 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout})
 
 // Module Version 10000
 // Generated by (magic number): 80001
index b97de15..466b2a6 100644 (file)
@@ -4,16 +4,16 @@ Linked vertex stage:
 
 
 Uniform reflection:
-anonMember3: offset 96, type 8b52, size 1, index 0
+anonMember3: offset 80, type 8b52, size 1, index 0
 s.a: offset -1, type 1404, size 1, index -1
 scalar: offset 12, type 1404, size 1, index 0
 m23: offset 16, type 8b67, size 1, index 0
-scalarAfterm23: offset 64, type 1404, size 1, index 0
+scalarAfterm23: offset 48, type 1404, size 1, index 0
 c_m23: offset 16, type 8b67, size 1, index 0
-c_scalarAfterm23: offset 64, type 1404, size 1, index 0
-scalarBeforeArray: offset 112, type 1404, size 1, index 0
-floatArray: offset 128, type 1406, size 5, index 0
-scalarAfterArray: offset 208, type 1404, size 1, index 0
+c_scalarAfterm23: offset 48, type 1404, size 1, index 0
+scalarBeforeArray: offset 96, type 1404, size 1, index 0
+floatArray: offset 112, type 1406, size 5, index 0
+scalarAfterArray: offset 192, type 1404, size 1, index 0
 memfloat2: offset 48, type 8b50, size 1, index 0
 memf1: offset 56, type 1406, size 1, index 0
 memf2: offset 60, type 8b56, size 1, index 0
@@ -73,7 +73,7 @@ anonMember1: offset 0, type 8b51, size 1, index 0
 uf1: offset -1, type 1406, size 1, index -1
 
 Uniform block reflection:
-: offset -1, type ffffffff, size 512, index -1
+: offset -1, type ffffffff, size 496, index -1
 
 Vertex attribute reflection:
 attributeFloat: offset 0, type 1406, size 0, index 0
index 4e28043..b93dcd3 100644 (file)
@@ -20,6 +20,10 @@ tbuffer tbufName : register(b8) {
     float f5  : packoffset(c4.z);
     float f6  : packoffset(c);
     float f7;
+                 float3x4 m1;
+       row_major float3x4 m2;
+    column_major float3x4 m3;
+                 float3x4 m4;
 };
 
 float4 PixelShaderFunction(float4 input) : COLOR0
index 0fd06e1..811e161 100644 (file)
@@ -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.1506"
-#define GLSLANG_DATE "21-Sep-2016"
+#define GLSLANG_REVISION "Overload400-PrecQual.1507"
+#define GLSLANG_DATE "25-Sep-2016"
index d458a88..30d42f1 100755 (executable)
@@ -491,10 +491,10 @@ bool HlslGrammar::acceptQualifier(TQualifier& qualifier)
             qualifier.sample = true;
             break;
         case EHTokRowMajor:
-            qualifier.layoutMatrix = ElmRowMajor;
+            qualifier.layoutMatrix = ElmColumnMajor;
             break;
         case EHTokColumnMajor:
-            qualifier.layoutMatrix = ElmColumnMajor;
+            qualifier.layoutMatrix = ElmRowMajor;
             break;
         case EHTokPrecise:
             qualifier.noContraction = true;
index 470b03f..4afbd92 100755 (executable)
@@ -63,11 +63,11 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int
     linkage = new TIntermAggregate;
 
     globalUniformDefaults.clear();
-    globalUniformDefaults.layoutMatrix = ElmColumnMajor;
+    globalUniformDefaults.layoutMatrix = ElmRowMajor;
     globalUniformDefaults.layoutPacking = ElpStd140;
 
     globalBufferDefaults.clear();
-    globalBufferDefaults.layoutMatrix = ElmColumnMajor;
+    globalBufferDefaults.layoutMatrix = ElmRowMajor;
     globalBufferDefaults.layoutPacking = ElpStd430;
 
     globalInputDefaults.clear();
@@ -3624,11 +3624,11 @@ void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TQualifier& qua
     std::transform(id.begin(), id.end(), id.begin(), ::tolower);
 
     if (id == TQualifier::getLayoutMatrixString(ElmColumnMajor)) {
-        qualifier.layoutMatrix = ElmColumnMajor;
+        qualifier.layoutMatrix = ElmRowMajor;
         return;
     }
     if (id == TQualifier::getLayoutMatrixString(ElmRowMajor)) {
-        qualifier.layoutMatrix = ElmRowMajor;
+        qualifier.layoutMatrix = ElmColumnMajor;
         return;
     }
     if (id == "push_constant") {