From 10f7fc739cd4501ee18a1ea7db781bdb1de000b4 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sun, 25 Sep 2016 20:25:06 -0600 Subject: [PATCH] HLSL: Reverse what the driver is told about row/column majorness, matching the row-column reversal. --- Test/baseResults/hlsl.buffer.frag.out | 199 ++++++++++++---------- Test/baseResults/hlsl.layout.frag.out | 36 ++-- Test/baseResults/hlsl.reflection.vert.out | 14 +- Test/hlsl.buffer.frag | 4 + glslang/Include/revision.h | 4 +- hlsl/hlslGrammar.cpp | 4 +- hlsl/hlslParseHelper.cpp | 8 +- 7 files changed, 145 insertions(+), 124 deletions(-) diff --git a/Test/baseResults/hlsl.buffer.frag.out b/Test/baseResults/hlsl.buffer.frag.out index 78a8e738..6d7b6105 100755 --- a/Test/baseResults/hlsl.buffer.frag.out +++ b/Test/baseResults/hlsl.buffer.frag.out @@ -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 diff --git a/Test/baseResults/hlsl.layout.frag.out b/Test/baseResults/hlsl.layout.frag.out index 44553855..938332b7 100755 --- a/Test/baseResults/hlsl.layout.frag.out +++ b/Test/baseResults/hlsl.layout.frag.out @@ -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 diff --git a/Test/baseResults/hlsl.reflection.vert.out b/Test/baseResults/hlsl.reflection.vert.out index b97de159..466b2a6f 100644 --- a/Test/baseResults/hlsl.reflection.vert.out +++ b/Test/baseResults/hlsl.reflection.vert.out @@ -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 diff --git a/Test/hlsl.buffer.frag b/Test/hlsl.buffer.frag index 4e28043a..b93dcd31 100644 --- a/Test/hlsl.buffer.frag +++ b/Test/hlsl.buffer.frag @@ -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 diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 0fd06e15..811e161b 100644 --- a/glslang/Include/revision.h +++ b/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.1506" -#define GLSLANG_DATE "21-Sep-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1507" +#define GLSLANG_DATE "25-Sep-2016" diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index d458a882..30d42f10 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -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; diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 470b03f5..4afbd924 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -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") {