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
117 lines
5.5 KiB
Plaintext
117 lines
5.5 KiB
Plaintext
spv.multiStructFuncall.frag
|
|
// Module Version 10000
|
|
// Generated by (magic number): 8000b
|
|
// Id's are bound by 65
|
|
|
|
Capability Shader
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint Fragment 4 "main"
|
|
ExecutionMode 4 OriginUpperLeft
|
|
Source GLSL 450
|
|
Name 4 "main"
|
|
Name 9 "S"
|
|
MemberName 9(S) 0 "m"
|
|
Name 12 "fooConst(struct-S-mf441;"
|
|
Name 11 "s"
|
|
Name 17 "foo(struct-S-mf441;"
|
|
Name 16 "s"
|
|
Name 20 "fooOut(struct-S-mf441;"
|
|
Name 19 "s"
|
|
Name 22 "S"
|
|
MemberName 22(S) 0 "m"
|
|
Name 23 "blockName"
|
|
MemberName 23(blockName) 0 "s1"
|
|
Name 25 ""
|
|
Name 31 "arg"
|
|
Name 38 "s2"
|
|
Name 41 "param"
|
|
Name 47 "param"
|
|
Name 50 "param"
|
|
Name 61 "param"
|
|
MemberDecorate 22(S) 0 ColMajor
|
|
MemberDecorate 22(S) 0 MatrixStride 16
|
|
MemberDecorate 22(S) 0 Offset 0
|
|
Decorate 23(blockName) BufferBlock
|
|
MemberDecorate 23(blockName) 0 Offset 0
|
|
Decorate 25 Binding 0
|
|
Decorate 25 DescriptorSet 0
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
6: TypeFloat 32
|
|
7: TypeVector 6(float) 4
|
|
8: TypeMatrix 7(fvec4) 4
|
|
9(S): TypeStruct 8
|
|
10: TypeFunction 2 9(S)
|
|
14: TypePointer Function 9(S)
|
|
15: TypeFunction 2 14(ptr)
|
|
22(S): TypeStruct 8
|
|
23(blockName): TypeStruct 22(S)
|
|
24: TypePointer Uniform 23(blockName)
|
|
25: 24(ptr) Variable Uniform
|
|
26: TypeInt 32 1
|
|
27: 26(int) Constant 0
|
|
28: TypePointer Uniform 22(S)
|
|
33: TypePointer Function 8
|
|
37: TypePointer Private 9(S)
|
|
38(s2): 37(ptr) Variable Private
|
|
59: TypePointer Uniform 8
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
31(arg): 14(ptr) Variable Function
|
|
41(param): 14(ptr) Variable Function
|
|
47(param): 14(ptr) Variable Function
|
|
50(param): 14(ptr) Variable Function
|
|
61(param): 14(ptr) Variable Function
|
|
29: 28(ptr) AccessChain 25 27
|
|
30: 22(S) Load 29
|
|
32: 8 CompositeExtract 30 0
|
|
34: 33(ptr) AccessChain 31(arg) 27
|
|
Store 34 32
|
|
35: 9(S) Load 31(arg)
|
|
36: 2 FunctionCall 12(fooConst(struct-S-mf441;) 35
|
|
39: 9(S) Load 38(s2)
|
|
40: 2 FunctionCall 12(fooConst(struct-S-mf441;) 39
|
|
42: 28(ptr) AccessChain 25 27
|
|
43: 22(S) Load 42
|
|
44: 8 CompositeExtract 43 0
|
|
45: 33(ptr) AccessChain 41(param) 27
|
|
Store 45 44
|
|
46: 2 FunctionCall 17(foo(struct-S-mf441;) 41(param)
|
|
48: 9(S) Load 38(s2)
|
|
Store 47(param) 48
|
|
49: 2 FunctionCall 17(foo(struct-S-mf441;) 47(param)
|
|
51: 28(ptr) AccessChain 25 27
|
|
52: 22(S) Load 51
|
|
53: 8 CompositeExtract 52 0
|
|
54: 33(ptr) AccessChain 50(param) 27
|
|
Store 54 53
|
|
55: 2 FunctionCall 20(fooOut(struct-S-mf441;) 50(param)
|
|
56: 9(S) Load 50(param)
|
|
57: 28(ptr) AccessChain 25 27
|
|
58: 8 CompositeExtract 56 0
|
|
60: 59(ptr) AccessChain 57 27
|
|
Store 60 58
|
|
62: 9(S) Load 38(s2)
|
|
Store 61(param) 62
|
|
63: 2 FunctionCall 20(fooOut(struct-S-mf441;) 61(param)
|
|
64: 9(S) Load 61(param)
|
|
Store 38(s2) 64
|
|
Return
|
|
FunctionEnd
|
|
12(fooConst(struct-S-mf441;): 2 Function None 10
|
|
11(s): 9(S) FunctionParameter
|
|
13: Label
|
|
Return
|
|
FunctionEnd
|
|
17(foo(struct-S-mf441;): 2 Function None 15
|
|
16(s): 14(ptr) FunctionParameter
|
|
18: Label
|
|
Return
|
|
FunctionEnd
|
|
20(fooOut(struct-S-mf441;): 2 Function None 15
|
|
19(s): 14(ptr) FunctionParameter
|
|
21: Label
|
|
Return
|
|
FunctionEnd
|