mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-13 21:50:06 +00:00
33c7e30860
It is invalid if the same decoration is applied to the same id multiple times. This adds a check before adding a decoration that the decoration is not already in the list. If it is, then the duplicate is not added. Fixes #3627
329 lines
22 KiB
Plaintext
329 lines
22 KiB
Plaintext
hlsl.buffer.frag
|
|
Shader version: 500
|
|
gl_FragCoord origin is upper left
|
|
0:? Sequence
|
|
0:30 Function Definition: foo( ( temp float)
|
|
0:30 Function Parameters:
|
|
0:? Sequence
|
|
0:31 Branch: Return with expression
|
|
0:31 Constant:
|
|
0:31 1.000000
|
|
0:43 Function Definition: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a})
|
|
0:43 Function Parameters:
|
|
0:43 'input' ( in 4-component vector of float)
|
|
0:? Sequence
|
|
0:45 move second child to first child ( temp 4-component vector of float)
|
|
0:45 a: direct index for structure ( temp 4-component vector of float)
|
|
0:45 'ret' ( temp structure{ temp 4-component vector of float a})
|
|
0:45 Constant:
|
|
0:45 0 (const int)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 v24: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
|
|
0:45 'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 vector-scale ( temp 4-component vector of float)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 'input' ( in 4-component vector of float)
|
|
0:45 v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
|
|
0:45 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
|
|
0:45 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 v3: direct index for structure (layout( row_major std140 offset=0) uniform 4-component vector of float)
|
|
0:45 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
|
|
0:45 'anon@3' (layout( binding=8 row_major std430) readonly 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 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 Function Call: foo( ( temp float)
|
|
0:46 Branch: Return with expression
|
|
0:46 'ret' ( temp structure{ temp 4-component vector of float a})
|
|
0:43 Function Definition: PixelShaderFunction( ( temp void)
|
|
0:43 Function Parameters:
|
|
0:? Sequence
|
|
0:43 move second child to first child ( temp 4-component vector of float)
|
|
0:? 'input' ( temp 4-component vector of float)
|
|
0:? 'input' ( in 4-component vector of float FragCoord)
|
|
0:43 Sequence
|
|
0:43 move second child to first child ( temp 4-component vector of float)
|
|
0:? '@entryPointOutput.a' (layout( location=0) out 4-component vector of float)
|
|
0:43 a: direct index for structure ( temp 4-component vector of float)
|
|
0:43 Function Call: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a})
|
|
0:? 'input' ( temp 4-component vector of float)
|
|
0:43 Constant:
|
|
0:43 0 (const int)
|
|
0:? Linker Objects
|
|
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) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
|
|
0:? 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) 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) readonly 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 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
|
|
0:? 'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24})
|
|
0:? '@entryPointOutput.a' (layout( location=0) out 4-component vector of float)
|
|
0:? 'input' ( in 4-component vector of float FragCoord)
|
|
|
|
|
|
Linked fragment stage:
|
|
|
|
|
|
Shader version: 500
|
|
gl_FragCoord origin is upper left
|
|
0:? Sequence
|
|
0:30 Function Definition: foo( ( temp float)
|
|
0:30 Function Parameters:
|
|
0:? Sequence
|
|
0:31 Branch: Return with expression
|
|
0:31 Constant:
|
|
0:31 1.000000
|
|
0:43 Function Definition: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a})
|
|
0:43 Function Parameters:
|
|
0:43 'input' ( in 4-component vector of float)
|
|
0:? Sequence
|
|
0:45 move second child to first child ( temp 4-component vector of float)
|
|
0:45 a: direct index for structure ( temp 4-component vector of float)
|
|
0:45 'ret' ( temp structure{ temp 4-component vector of float a})
|
|
0:45 Constant:
|
|
0:45 0 (const int)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 v24: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
|
|
0:45 'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 vector-scale ( temp 4-component vector of float)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 'input' ( in 4-component vector of float)
|
|
0:45 v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
|
|
0:45 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
|
|
0:45 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 v3: direct index for structure (layout( row_major std140 offset=0) uniform 4-component vector of float)
|
|
0:45 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
|
|
0:45 'anon@3' (layout( binding=8 row_major std430) readonly 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 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 Function Call: foo( ( temp float)
|
|
0:46 Branch: Return with expression
|
|
0:46 'ret' ( temp structure{ temp 4-component vector of float a})
|
|
0:43 Function Definition: PixelShaderFunction( ( temp void)
|
|
0:43 Function Parameters:
|
|
0:? Sequence
|
|
0:43 move second child to first child ( temp 4-component vector of float)
|
|
0:? 'input' ( temp 4-component vector of float)
|
|
0:? 'input' ( in 4-component vector of float FragCoord)
|
|
0:43 Sequence
|
|
0:43 move second child to first child ( temp 4-component vector of float)
|
|
0:? '@entryPointOutput.a' (layout( location=0) out 4-component vector of float)
|
|
0:43 a: direct index for structure ( temp 4-component vector of float)
|
|
0:43 Function Call: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a})
|
|
0:? 'input' ( temp 4-component vector of float)
|
|
0:43 Constant:
|
|
0:43 0 (const int)
|
|
0:? Linker Objects
|
|
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) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
|
|
0:? 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) 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) readonly 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 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
|
|
0:? 'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24})
|
|
0:? '@entryPointOutput.a' (layout( location=0) out 4-component vector of float)
|
|
0:? 'input' ( in 4-component vector of float FragCoord)
|
|
|
|
Validation failed
|
|
// Module Version 10000
|
|
// Generated by (magic number): 8000b
|
|
// Id's are bound by 73
|
|
|
|
Capability Shader
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint Fragment 4 "PixelShaderFunction" 65 68
|
|
ExecutionMode 4 OriginUpperLeft
|
|
Source HLSL 500
|
|
Name 4 "PixelShaderFunction"
|
|
Name 8 "foo("
|
|
Name 12 "id"
|
|
MemberName 12(id) 0 "a"
|
|
Name 15 "@PixelShaderFunction(vf4;"
|
|
Name 14 "input"
|
|
Name 21 "ret"
|
|
Name 24 "cbufName2"
|
|
MemberName 24(cbufName2) 0 "v24"
|
|
Name 26 ""
|
|
Name 31 "buf1"
|
|
MemberName 31(buf1) 0 "v1"
|
|
Name 33 ""
|
|
Name 37 "buf2"
|
|
MemberName 37(buf2) 0 "v2"
|
|
Name 39 ""
|
|
Name 43 "cbufName"
|
|
MemberName 43(cbufName) 0 "v3"
|
|
MemberName 43(cbufName) 1 "i3"
|
|
Name 45 ""
|
|
Name 50 "tbufName"
|
|
MemberName 50(tbufName) 0 "v4"
|
|
MemberName 50(tbufName) 1 "i4"
|
|
MemberName 50(tbufName) 2 "f1"
|
|
MemberName 50(tbufName) 3 "f3"
|
|
MemberName 50(tbufName) 4 "f4"
|
|
MemberName 50(tbufName) 5 "f5"
|
|
MemberName 50(tbufName) 6 "f6"
|
|
MemberName 50(tbufName) 7 "f7"
|
|
MemberName 50(tbufName) 8 "m1"
|
|
MemberName 50(tbufName) 9 "m2"
|
|
MemberName 50(tbufName) 10 "m3"
|
|
MemberName 50(tbufName) 11 "m4"
|
|
Name 52 ""
|
|
Name 63 "input"
|
|
Name 65 "input"
|
|
Name 68 "@entryPointOutput.a"
|
|
Name 69 "param"
|
|
Decorate 24(cbufName2) Block
|
|
MemberDecorate 24(cbufName2) 0 Offset 0
|
|
Decorate 26 Binding 3
|
|
Decorate 26 DescriptorSet 0
|
|
Decorate 31(buf1) Block
|
|
MemberDecorate 31(buf1) 0 Offset 0
|
|
Decorate 33 Binding 0
|
|
Decorate 33 DescriptorSet 0
|
|
Decorate 37(buf2) BufferBlock
|
|
MemberDecorate 37(buf2) 0 NonWritable
|
|
MemberDecorate 37(buf2) 0 Offset 0
|
|
Decorate 39 Binding 1
|
|
Decorate 39 DescriptorSet 0
|
|
Decorate 43(cbufName) Block
|
|
MemberDecorate 43(cbufName) 0 Offset 0
|
|
MemberDecorate 43(cbufName) 1 Offset 20
|
|
Decorate 45 Binding 2
|
|
Decorate 45 DescriptorSet 0
|
|
Decorate 50(tbufName) BufferBlock
|
|
MemberDecorate 50(tbufName) 0 NonWritable
|
|
MemberDecorate 50(tbufName) 0 Offset 16
|
|
MemberDecorate 50(tbufName) 1 NonWritable
|
|
MemberDecorate 50(tbufName) 1 Offset 48
|
|
MemberDecorate 50(tbufName) 2 NonWritable
|
|
MemberDecorate 50(tbufName) 2 Offset 60
|
|
MemberDecorate 50(tbufName) 3 NonWritable
|
|
MemberDecorate 50(tbufName) 3 Offset 64
|
|
MemberDecorate 50(tbufName) 4 NonWritable
|
|
MemberDecorate 50(tbufName) 4 Offset 68
|
|
MemberDecorate 50(tbufName) 5 NonWritable
|
|
MemberDecorate 50(tbufName) 5 Offset 72
|
|
MemberDecorate 50(tbufName) 6 NonWritable
|
|
MemberDecorate 50(tbufName) 6 Offset 76
|
|
MemberDecorate 50(tbufName) 7 NonWritable
|
|
MemberDecorate 50(tbufName) 7 Offset 128
|
|
MemberDecorate 50(tbufName) 8 RowMajor
|
|
MemberDecorate 50(tbufName) 8 MatrixStride 16
|
|
MemberDecorate 50(tbufName) 8 NonWritable
|
|
MemberDecorate 50(tbufName) 8 Offset 112
|
|
MemberDecorate 50(tbufName) 9 ColMajor
|
|
MemberDecorate 50(tbufName) 9 MatrixStride 16
|
|
MemberDecorate 50(tbufName) 9 NonWritable
|
|
MemberDecorate 50(tbufName) 9 Offset 176
|
|
MemberDecorate 50(tbufName) 10 RowMajor
|
|
MemberDecorate 50(tbufName) 10 MatrixStride 16
|
|
MemberDecorate 50(tbufName) 10 NonWritable
|
|
MemberDecorate 50(tbufName) 10 Offset 240
|
|
MemberDecorate 50(tbufName) 11 RowMajor
|
|
MemberDecorate 50(tbufName) 11 MatrixStride 16
|
|
MemberDecorate 50(tbufName) 11 NonWritable
|
|
MemberDecorate 50(tbufName) 11 Offset 304
|
|
Decorate 52 Binding 8
|
|
Decorate 52 DescriptorSet 0
|
|
Decorate 65(input) BuiltIn FragCoord
|
|
Decorate 68(@entryPointOutput.a) Location 0
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
6: TypeFloat 32
|
|
7: TypeFunction 6(float)
|
|
10: TypeVector 6(float) 4
|
|
11: TypePointer Function 10(fvec4)
|
|
12(id): TypeStruct 10(fvec4)
|
|
13: TypeFunction 12(id) 11(ptr)
|
|
17: 6(float) Constant 1065353216
|
|
20: TypePointer Function 12(id)
|
|
22: TypeInt 32 1
|
|
23: 22(int) Constant 0
|
|
24(cbufName2): TypeStruct 10(fvec4)
|
|
25: TypePointer Uniform 24(cbufName2)
|
|
26: 25(ptr) Variable Uniform
|
|
27: TypePointer Uniform 10(fvec4)
|
|
31(buf1): TypeStruct 10(fvec4)
|
|
32: TypePointer Uniform 31(buf1)
|
|
33: 32(ptr) Variable Uniform
|
|
37(buf2): TypeStruct 10(fvec4)
|
|
38: TypePointer Uniform 37(buf2)
|
|
39: 38(ptr) Variable Uniform
|
|
43(cbufName): TypeStruct 10(fvec4) 22(int)
|
|
44: TypePointer Uniform 43(cbufName)
|
|
45: 44(ptr) Variable Uniform
|
|
49: TypeMatrix 10(fvec4) 3
|
|
50(tbufName): TypeStruct 10(fvec4) 22(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 49 49 49 49
|
|
51: TypePointer Uniform 50(tbufName)
|
|
52: 51(ptr) Variable Uniform
|
|
64: TypePointer Input 10(fvec4)
|
|
65(input): 64(ptr) Variable Input
|
|
67: TypePointer Output 10(fvec4)
|
|
68(@entryPointOutput.a): 67(ptr) Variable Output
|
|
4(PixelShaderFunction): 2 Function None 3
|
|
5: Label
|
|
63(input): 11(ptr) Variable Function
|
|
69(param): 11(ptr) Variable Function
|
|
66: 10(fvec4) Load 65(input)
|
|
Store 63(input) 66
|
|
70: 10(fvec4) Load 63(input)
|
|
Store 69(param) 70
|
|
71: 12(id) FunctionCall 15(@PixelShaderFunction(vf4;) 69(param)
|
|
72: 10(fvec4) CompositeExtract 71 0
|
|
Store 68(@entryPointOutput.a) 72
|
|
Return
|
|
FunctionEnd
|
|
8(foo(): 6(float) Function None 7
|
|
9: Label
|
|
ReturnValue 17
|
|
FunctionEnd
|
|
15(@PixelShaderFunction(vf4;): 12(id) Function None 13
|
|
14(input): 11(ptr) FunctionParameter
|
|
16: Label
|
|
21(ret): 20(ptr) Variable Function
|
|
28: 27(ptr) AccessChain 26 23
|
|
29: 10(fvec4) Load 28
|
|
30: 10(fvec4) Load 14(input)
|
|
34: 27(ptr) AccessChain 33 23
|
|
35: 10(fvec4) Load 34
|
|
36: 10(fvec4) FAdd 30 35
|
|
40: 27(ptr) AccessChain 39 23
|
|
41: 10(fvec4) Load 40
|
|
42: 10(fvec4) FAdd 36 41
|
|
46: 27(ptr) AccessChain 45 23
|
|
47: 10(fvec4) Load 46
|
|
48: 10(fvec4) FAdd 42 47
|
|
53: 27(ptr) AccessChain 52 23
|
|
54: 10(fvec4) Load 53
|
|
55: 10(fvec4) FAdd 48 54
|
|
56: 6(float) FunctionCall 8(foo()
|
|
57: 10(fvec4) VectorTimesScalar 55 56
|
|
58: 10(fvec4) FAdd 29 57
|
|
59: 11(ptr) AccessChain 21(ret) 23
|
|
Store 59 58
|
|
60: 12(id) Load 21(ret)
|
|
ReturnValue 60
|
|
FunctionEnd
|