HLSL: Fix 1201: Accept 'layout' as an identifier.

This commit is contained in:
John Kessenich 2017-12-29 20:59:13 -07:00
parent 046bae0bab
commit fd1e8a78a8
3 changed files with 114 additions and 85 deletions

View File

@ -6,23 +6,33 @@ gl_FragCoord origin is upper left
0:16 Function Parameters:
0:16 'input' ( in 4-component vector of float)
0:? Sequence
0:17 Branch: Return with expression
0:17 add ( temp 4-component vector of float)
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( row_major std430 offset=16) buffer 4-component vector of float)
0:17 'anon@0' (layout( set=3 binding=5 row_major std430) readonly 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( row_major std430 offset=0) buffer 4-component vector of float)
0:17 'anon@1' (layout( row_major std430 push_constant) readonly 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( row_major std430 offset=16) buffer 4-component vector of float)
0:17 'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
0:17 Constant:
0:17 0 (const uint)
0:17 Sequence
0:17 move second child to first child ( temp 4-component vector of float)
0:17 'layout' ( temp 4-component vector of float)
0:17 Constant:
0:17 2.000000
0:17 2.000000
0:17 2.000000
0:17 2.000000
0:18 Branch: Return with expression
0:18 add ( temp 4-component vector of float)
0:18 add ( temp 4-component vector of float)
0:18 add ( temp 4-component vector of float)
0:18 'input' ( in 4-component vector of float)
0:18 v1: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
0:18 'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
0:18 Constant:
0:18 0 (const uint)
0:18 v5: direct index for structure (layout( row_major std430 offset=0) buffer 4-component vector of float)
0:18 'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
0:18 Constant:
0:18 0 (const uint)
0:18 component-wise multiply ( temp 4-component vector of float)
0:18 v1PostLayout: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
0:18 'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
0:18 Constant:
0:18 0 (const uint)
0:18 'layout' ( temp 4-component vector of float)
0:? Linker Objects
0:? 'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
0:? 'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
@ -42,23 +52,33 @@ gl_FragCoord origin is upper left
0:16 Function Parameters:
0:16 'input' ( in 4-component vector of float)
0:? Sequence
0:17 Branch: Return with expression
0:17 add ( temp 4-component vector of float)
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( row_major std430 offset=16) buffer 4-component vector of float)
0:17 'anon@0' (layout( set=3 binding=5 row_major std430) readonly 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( row_major std430 offset=0) buffer 4-component vector of float)
0:17 'anon@1' (layout( row_major std430 push_constant) readonly 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( row_major std430 offset=16) buffer 4-component vector of float)
0:17 'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
0:17 Constant:
0:17 0 (const uint)
0:17 Sequence
0:17 move second child to first child ( temp 4-component vector of float)
0:17 'layout' ( temp 4-component vector of float)
0:17 Constant:
0:17 2.000000
0:17 2.000000
0:17 2.000000
0:17 2.000000
0:18 Branch: Return with expression
0:18 add ( temp 4-component vector of float)
0:18 add ( temp 4-component vector of float)
0:18 add ( temp 4-component vector of float)
0:18 'input' ( in 4-component vector of float)
0:18 v1: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
0:18 'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
0:18 Constant:
0:18 0 (const uint)
0:18 v5: direct index for structure (layout( row_major std430 offset=0) buffer 4-component vector of float)
0:18 'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
0:18 Constant:
0:18 0 (const uint)
0:18 component-wise multiply ( temp 4-component vector of float)
0:18 v1PostLayout: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
0:18 'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
0:18 Constant:
0:18 0 (const uint)
0:18 'layout' ( temp 4-component vector of float)
0:? Linker Objects
0:? 'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
0:? 'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
@ -68,7 +88,7 @@ gl_FragCoord origin is upper left
// Module Version 10000
// Generated by (magic number): 80003
// Id's are bound by 39
// Id's are bound by 44
Capability Shader
1: ExtInstImport "GLSL.std.450"
@ -79,50 +99,53 @@ gl_FragCoord origin is upper left
Name 4 "main"
Name 11 "PixelShaderFunction(vf4;"
Name 10 "input"
Name 14 "tbufName"
MemberName 14(tbufName) 0 "v1"
Name 16 ""
Name 23 "tbufName2"
MemberName 23(tbufName2) 0 "v5"
Name 25 ""
Name 30 "tbufName2"
MemberName 30(tbufName2) 0 "v1PostLayout"
Name 32 ""
Name 38 "specConst"
MemberDecorate 14(tbufName) 0 NonWritable
MemberDecorate 14(tbufName) 0 Offset 16
Decorate 14(tbufName) BufferBlock
Decorate 16 DescriptorSet 3
Decorate 16 Binding 5
MemberDecorate 23(tbufName2) 0 NonWritable
MemberDecorate 23(tbufName2) 0 Offset 0
Decorate 23(tbufName2) BufferBlock
MemberDecorate 30(tbufName2) 0 NonWritable
MemberDecorate 30(tbufName2) 0 Offset 16
Decorate 30(tbufName2) BufferBlock
Decorate 32 DescriptorSet 4
Decorate 32 Binding 7
Decorate 38(specConst) SpecId 17
Name 13 "layout"
Name 17 "tbufName"
MemberName 17(tbufName) 0 "v1"
Name 19 ""
Name 26 "tbufName2"
MemberName 26(tbufName2) 0 "v5"
Name 28 ""
Name 33 "tbufName2"
MemberName 33(tbufName2) 0 "v1PostLayout"
Name 35 ""
Name 43 "specConst"
MemberDecorate 17(tbufName) 0 NonWritable
MemberDecorate 17(tbufName) 0 Offset 16
Decorate 17(tbufName) BufferBlock
Decorate 19 DescriptorSet 3
Decorate 19 Binding 5
MemberDecorate 26(tbufName2) 0 NonWritable
MemberDecorate 26(tbufName2) 0 Offset 0
Decorate 26(tbufName2) BufferBlock
MemberDecorate 33(tbufName2) 0 NonWritable
MemberDecorate 33(tbufName2) 0 Offset 16
Decorate 33(tbufName2) BufferBlock
Decorate 35 DescriptorSet 4
Decorate 35 Binding 7
Decorate 43(specConst) SpecId 17
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
9: TypeFunction 7(fvec4) 8(ptr)
14(tbufName): TypeStruct 7(fvec4)
15: TypePointer Uniform 14(tbufName)
16: 15(ptr) Variable Uniform
17: TypeInt 32 1
18: 17(int) Constant 0
19: TypePointer Uniform 7(fvec4)
23(tbufName2): TypeStruct 7(fvec4)
24: TypePointer PushConstant 23(tbufName2)
25: 24(ptr) Variable PushConstant
26: TypePointer PushConstant 7(fvec4)
30(tbufName2): TypeStruct 7(fvec4)
31: TypePointer Uniform 30(tbufName2)
32: 31(ptr) Variable Uniform
38(specConst): 17(int) SpecConstant 10
14: 6(float) Constant 1073741824
15: 7(fvec4) ConstantComposite 14 14 14 14
17(tbufName): TypeStruct 7(fvec4)
18: TypePointer Uniform 17(tbufName)
19: 18(ptr) Variable Uniform
20: TypeInt 32 1
21: 20(int) Constant 0
22: TypePointer Uniform 7(fvec4)
26(tbufName2): TypeStruct 7(fvec4)
27: TypePointer PushConstant 26(tbufName2)
28: 27(ptr) Variable PushConstant
29: TypePointer PushConstant 7(fvec4)
33(tbufName2): TypeStruct 7(fvec4)
34: TypePointer Uniform 33(tbufName2)
35: 34(ptr) Variable Uniform
43(specConst): 20(int) SpecConstant 10
4(main): 2 Function None 3
5: Label
Return
@ -130,15 +153,19 @@ gl_FragCoord origin is upper left
11(PixelShaderFunction(vf4;): 7(fvec4) Function None 9
10(input): 8(ptr) FunctionParameter
12: Label
13: 7(fvec4) Load 10(input)
20: 19(ptr) AccessChain 16 18
21: 7(fvec4) Load 20
22: 7(fvec4) FAdd 13 21
27: 26(ptr) AccessChain 25 18
28: 7(fvec4) Load 27
29: 7(fvec4) FAdd 22 28
33: 19(ptr) AccessChain 32 18
34: 7(fvec4) Load 33
35: 7(fvec4) FAdd 29 34
ReturnValue 35
13(layout): 8(ptr) Variable Function
Store 13(layout) 15
16: 7(fvec4) Load 10(input)
23: 22(ptr) AccessChain 19 21
24: 7(fvec4) Load 23
25: 7(fvec4) FAdd 16 24
30: 29(ptr) AccessChain 28 21
31: 7(fvec4) Load 30
32: 7(fvec4) FAdd 25 31
36: 22(ptr) AccessChain 35 21
37: 7(fvec4) Load 36
38: 7(fvec4) Load 13(layout)
39: 7(fvec4) FMul 37 38
40: 7(fvec4) FAdd 32 39
ReturnValue 40
FunctionEnd

View File

@ -14,5 +14,6 @@ tbuffer tbufName2 : layout(set=4,binding=7) {
float4 PixelShaderFunction(float4 input) : COLOR0
{
return input + v1 + v5 + v1PostLayout;
float4 layout = 2.0;
return input + v1 + v5 + v1PostLayout * layout;
}

View File

@ -4077,6 +4077,7 @@ const char* HlslGrammar::getTypeString(EHlslTokenClass tokenClass) const
case EHTokMin16int: return "min16int";
case EHTokMin12int: return "min12int";
case EHTokConstantBuffer: return "ConstantBuffer";
case EHTokLayout: return "layout";
default:
return nullptr;
}