Fix back-branch target for do-while loops.
To ensure back branches always go to a header block, create a header block even for !testFirst loops. Then unify common code between the testFirst/!testFirst cases. Generate the header-block code first, so update golden files. Realize that certain infinite loops generate invalid SPIR-V, so put a TODO to instead abort code generation in such cases. Change-Id: I1e173c8f73daad186cfc666b7d72bd563ed7665d
This commit is contained in:
parent
c8fbbab419
commit
832c65c33b
@ -1342,19 +1342,17 @@ void TGlslangToSpvTraverser::visitConstantUnion(glslang::TIntermConstantUnion* n
|
|||||||
bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIntermLoop* node)
|
bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIntermLoop* node)
|
||||||
{
|
{
|
||||||
auto blocks = builder.makeNewLoop();
|
auto blocks = builder.makeNewLoop();
|
||||||
|
builder.createBranch(&blocks.head);
|
||||||
if (node->testFirst() && node->getTest()) {
|
if (node->testFirst() && node->getTest()) {
|
||||||
spv::Block& head = builder.makeNewBlock();
|
builder.setBuildPoint(&blocks.head);
|
||||||
builder.createBranch(&head);
|
|
||||||
|
|
||||||
builder.setBuildPoint(&head);
|
|
||||||
node->getTest()->traverse(this);
|
node->getTest()->traverse(this);
|
||||||
spv::Id condition =
|
spv::Id condition =
|
||||||
builder.accessChainLoad(convertGlslangToSpvType(node->getTest()->getType()));
|
builder.accessChainLoad(convertGlslangToSpvType(node->getTest()->getType()));
|
||||||
builder.createLoopMerge(&blocks.merge, &blocks.continue_target, spv::LoopControlMaskNone);
|
builder.createLoopMerge(&blocks.merge, &blocks.continue_target, spv::LoopControlMaskNone);
|
||||||
builder.createConditionalBranch(condition, &blocks.body, &blocks.merge);
|
builder.createConditionalBranch(condition, &blocks.body, &blocks.merge);
|
||||||
|
|
||||||
breakForLoop.push(true);
|
|
||||||
builder.setBuildPoint(&blocks.body);
|
builder.setBuildPoint(&blocks.body);
|
||||||
|
breakForLoop.push(true);
|
||||||
if (node->getBody())
|
if (node->getBody())
|
||||||
node->getBody()->traverse(this);
|
node->getBody()->traverse(this);
|
||||||
builder.createBranch(&blocks.continue_target);
|
builder.createBranch(&blocks.continue_target);
|
||||||
@ -1363,8 +1361,14 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn
|
|||||||
builder.setBuildPoint(&blocks.continue_target);
|
builder.setBuildPoint(&blocks.continue_target);
|
||||||
if (node->getTerminal())
|
if (node->getTerminal())
|
||||||
node->getTerminal()->traverse(this);
|
node->getTerminal()->traverse(this);
|
||||||
builder.createBranch(&head);
|
builder.createBranch(&blocks.head);
|
||||||
} else {
|
} else {
|
||||||
|
// Spec requires back edges to target header blocks, and every header
|
||||||
|
// block must dominate its merge block. Create an empty header block
|
||||||
|
// here to ensure these conditions are met even when body contains
|
||||||
|
// non-trivial control flow.
|
||||||
|
builder.setBuildPoint(&blocks.head);
|
||||||
|
builder.createLoopMerge(&blocks.merge, &blocks.continue_target, spv::LoopControlMaskNone);
|
||||||
builder.createBranch(&blocks.body);
|
builder.createBranch(&blocks.body);
|
||||||
|
|
||||||
breakForLoop.push(true);
|
breakForLoop.push(true);
|
||||||
@ -1381,14 +1385,17 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn
|
|||||||
node->getTest()->traverse(this);
|
node->getTest()->traverse(this);
|
||||||
spv::Id condition =
|
spv::Id condition =
|
||||||
builder.accessChainLoad(convertGlslangToSpvType(node->getTest()->getType()));
|
builder.accessChainLoad(convertGlslangToSpvType(node->getTest()->getType()));
|
||||||
builder.createLoopMerge(&blocks.merge, &blocks.continue_target,
|
builder.createConditionalBranch(condition, &blocks.head, &blocks.merge);
|
||||||
spv::LoopControlMaskNone);
|
|
||||||
builder.createConditionalBranch(condition, &blocks.body, &blocks.merge);
|
|
||||||
} else {
|
} else {
|
||||||
builder.createBranch(&blocks.body);
|
// TODO: unless there was a break instruction somewhere in the body,
|
||||||
|
// this is an infinite loop, so we should abort code generation with
|
||||||
|
// a warning. As it stands now, nothing will jump to the merge
|
||||||
|
// block, and it may be dropped as unreachable by the SPIR-V dumper.
|
||||||
|
// That, in turn, will result in a non-existing %ID in the LoopMerge
|
||||||
|
// above.
|
||||||
|
builder.createBranch(&blocks.head);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
builder.setBuildPoint(&blocks.merge);
|
builder.setBuildPoint(&blocks.merge);
|
||||||
builder.closeLoop();
|
builder.closeLoop();
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -1763,7 +1763,7 @@ Block& Builder::makeNewBlock()
|
|||||||
|
|
||||||
Builder::LoopBlocks& Builder::makeNewLoop()
|
Builder::LoopBlocks& Builder::makeNewLoop()
|
||||||
{
|
{
|
||||||
loops.push({makeNewBlock(), makeNewBlock(), makeNewBlock()});
|
loops.push({makeNewBlock(), makeNewBlock(), makeNewBlock(), makeNewBlock()});
|
||||||
return loops.top();
|
return loops.top();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -374,7 +374,7 @@ public:
|
|||||||
void endSwitch(std::vector<Block*>& segmentBB);
|
void endSwitch(std::vector<Block*>& segmentBB);
|
||||||
|
|
||||||
struct LoopBlocks {
|
struct LoopBlocks {
|
||||||
Block &body, &merge, &continue_target;
|
Block &head, &body, &merge, &continue_target;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Start a new loop and prepare the builder to generate code for it. Until
|
// Start a new loop and prepare the builder to generate code for it. Until
|
||||||
|
|||||||
@ -48,26 +48,26 @@ Linked vertex stage:
|
|||||||
5: Label
|
5: Label
|
||||||
8(i): 7(ptr) Variable Function
|
8(i): 7(ptr) Variable Function
|
||||||
Store 8(i) 9
|
Store 8(i) 9
|
||||||
Branch 13
|
Branch 10
|
||||||
10: Label
|
10: Label
|
||||||
|
14: 6(int) Load 8(i)
|
||||||
|
17: 16(bool) SLessThan 14 15
|
||||||
|
LoopMerge 12 13 None
|
||||||
|
BranchConditional 17 11 12
|
||||||
|
11: Label
|
||||||
25: 6(int) Load 8(i)
|
25: 6(int) Load 8(i)
|
||||||
28: 19(fvec4) Load 27(color)
|
28: 19(fvec4) Load 27(color)
|
||||||
30: 29(ptr) AccessChain 24(colorOut) 25
|
30: 29(ptr) AccessChain 24(colorOut) 25
|
||||||
Store 30 28
|
Store 30 28
|
||||||
Branch 12
|
Branch 13
|
||||||
11: Label
|
12: Label
|
||||||
35: 29(ptr) AccessChain 24(colorOut) 34
|
35: 29(ptr) AccessChain 24(colorOut) 34
|
||||||
36: 19(fvec4) Load 35
|
36: 19(fvec4) Load 35
|
||||||
Store 33(gl_Position) 36
|
Store 33(gl_Position) 36
|
||||||
Return
|
Return
|
||||||
12: Label
|
13: Label
|
||||||
31: 6(int) Load 8(i)
|
31: 6(int) Load 8(i)
|
||||||
32: 6(int) IAdd 31 9
|
32: 6(int) IAdd 31 9
|
||||||
Store 8(i) 32
|
Store 8(i) 32
|
||||||
Branch 13
|
Branch 10
|
||||||
13: Label
|
|
||||||
14: 6(int) Load 8(i)
|
|
||||||
17: 16(bool) SLessThan 14 15
|
|
||||||
LoopMerge 11 12 None
|
|
||||||
BranchConditional 17 10 11
|
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@ -5,45 +5,47 @@ Linked vertex stage:
|
|||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80001
|
// Generated by (magic number): 80001
|
||||||
// Id's are bound by 23
|
// Id's are bound by 24
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Vertex 4 "main" 21 22
|
EntryPoint Vertex 4 "main" 22 23
|
||||||
Source ESSL 300
|
Source ESSL 300
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 8 "i"
|
Name 8 "i"
|
||||||
Name 21 "gl_VertexID"
|
Name 22 "gl_VertexID"
|
||||||
Name 22 "gl_InstanceID"
|
Name 23 "gl_InstanceID"
|
||||||
Decorate 21(gl_VertexID) BuiltIn VertexId
|
Decorate 22(gl_VertexID) BuiltIn VertexId
|
||||||
Decorate 22(gl_InstanceID) BuiltIn InstanceId
|
Decorate 23(gl_InstanceID) BuiltIn InstanceId
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
6: TypeInt 32 1
|
6: TypeInt 32 1
|
||||||
7: TypePointer Function 6(int)
|
7: TypePointer Function 6(int)
|
||||||
9: 6(int) Constant 0
|
9: 6(int) Constant 0
|
||||||
14: 6(int) Constant 1
|
15: 6(int) Constant 1
|
||||||
17: 6(int) Constant 10
|
18: 6(int) Constant 10
|
||||||
18: TypeBool
|
19: TypeBool
|
||||||
20: TypePointer Input 6(int)
|
21: TypePointer Input 6(int)
|
||||||
21(gl_VertexID): 20(ptr) Variable Input
|
22(gl_VertexID): 21(ptr) Variable Input
|
||||||
22(gl_InstanceID): 20(ptr) Variable Input
|
23(gl_InstanceID): 21(ptr) Variable Input
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
8(i): 7(ptr) Variable Function
|
8(i): 7(ptr) Variable Function
|
||||||
Store 8(i) 9
|
Store 8(i) 9
|
||||||
Branch 10
|
Branch 10
|
||||||
10: Label
|
10: Label
|
||||||
13: 6(int) Load 8(i)
|
LoopMerge 12 13 None
|
||||||
15: 6(int) IAdd 13 14
|
Branch 11
|
||||||
Store 8(i) 15
|
|
||||||
Branch 12
|
|
||||||
11: Label
|
11: Label
|
||||||
Return
|
14: 6(int) Load 8(i)
|
||||||
|
16: 6(int) IAdd 14 15
|
||||||
|
Store 8(i) 16
|
||||||
|
Branch 13
|
||||||
12: Label
|
12: Label
|
||||||
16: 6(int) Load 8(i)
|
Return
|
||||||
19: 18(bool) SLessThan 16 17
|
13: Label
|
||||||
LoopMerge 11 12 None
|
17: 6(int) Load 8(i)
|
||||||
BranchConditional 19 10 11
|
20: 19(bool) SLessThan 17 18
|
||||||
|
BranchConditional 20 10 12
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@ -5,89 +5,91 @@ Linked vertex stage:
|
|||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80001
|
// Generated by (magic number): 80001
|
||||||
// Id's are bound by 45
|
// Id's are bound by 46
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Vertex 4 "main" 43 44
|
EntryPoint Vertex 4 "main" 44 45
|
||||||
Source ESSL 300
|
Source ESSL 300
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 8 "i"
|
Name 8 "i"
|
||||||
Name 13 "A"
|
Name 14 "A"
|
||||||
Name 20 "B"
|
Name 21 "B"
|
||||||
Name 23 "C"
|
Name 24 "C"
|
||||||
Name 29 "D"
|
Name 30 "D"
|
||||||
Name 32 "E"
|
Name 33 "E"
|
||||||
Name 34 "F"
|
Name 35 "F"
|
||||||
Name 40 "G"
|
Name 41 "G"
|
||||||
Name 43 "gl_VertexID"
|
Name 44 "gl_VertexID"
|
||||||
Name 44 "gl_InstanceID"
|
Name 45 "gl_InstanceID"
|
||||||
Decorate 43(gl_VertexID) BuiltIn VertexId
|
Decorate 44(gl_VertexID) BuiltIn VertexId
|
||||||
Decorate 44(gl_InstanceID) BuiltIn InstanceId
|
Decorate 45(gl_InstanceID) BuiltIn InstanceId
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
6: TypeInt 32 1
|
6: TypeInt 32 1
|
||||||
7: TypePointer Function 6(int)
|
7: TypePointer Function 6(int)
|
||||||
9: 6(int) Constant 0
|
9: 6(int) Constant 0
|
||||||
15: 6(int) Constant 2
|
16: 6(int) Constant 2
|
||||||
16: TypeBool
|
17: TypeBool
|
||||||
21: 6(int) Constant 1
|
22: 6(int) Constant 1
|
||||||
25: 6(int) Constant 5
|
26: 6(int) Constant 5
|
||||||
30: 6(int) Constant 3
|
31: 6(int) Constant 3
|
||||||
33: 6(int) Constant 42
|
34: 6(int) Constant 42
|
||||||
35: 6(int) Constant 99
|
36: 6(int) Constant 99
|
||||||
38: 6(int) Constant 19
|
39: 6(int) Constant 19
|
||||||
41: 6(int) Constant 12
|
42: 6(int) Constant 12
|
||||||
42: TypePointer Input 6(int)
|
43: TypePointer Input 6(int)
|
||||||
43(gl_VertexID): 42(ptr) Variable Input
|
44(gl_VertexID): 43(ptr) Variable Input
|
||||||
44(gl_InstanceID): 42(ptr) Variable Input
|
45(gl_InstanceID): 43(ptr) Variable Input
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
8(i): 7(ptr) Variable Function
|
8(i): 7(ptr) Variable Function
|
||||||
13(A): 7(ptr) Variable Function
|
14(A): 7(ptr) Variable Function
|
||||||
20(B): 7(ptr) Variable Function
|
21(B): 7(ptr) Variable Function
|
||||||
23(C): 7(ptr) Variable Function
|
24(C): 7(ptr) Variable Function
|
||||||
29(D): 7(ptr) Variable Function
|
30(D): 7(ptr) Variable Function
|
||||||
32(E): 7(ptr) Variable Function
|
33(E): 7(ptr) Variable Function
|
||||||
34(F): 7(ptr) Variable Function
|
35(F): 7(ptr) Variable Function
|
||||||
40(G): 7(ptr) Variable Function
|
41(G): 7(ptr) Variable Function
|
||||||
Store 8(i) 9
|
Store 8(i) 9
|
||||||
Branch 10
|
Branch 10
|
||||||
10: Label
|
10: Label
|
||||||
Store 13(A) 9
|
LoopMerge 12 13 None
|
||||||
14: 6(int) Load 8(i)
|
|
||||||
17: 16(bool) IEqual 14 15
|
|
||||||
SelectionMerge 19 None
|
|
||||||
BranchConditional 17 18 19
|
|
||||||
11: Label
|
|
||||||
Store 40(G) 41
|
|
||||||
Return
|
|
||||||
12: Label
|
|
||||||
36: 6(int) Load 8(i)
|
|
||||||
37: 6(int) IAdd 36 21
|
|
||||||
Store 8(i) 37
|
|
||||||
39: 16(bool) SLessThan 37 38
|
|
||||||
LoopMerge 11 12 None
|
|
||||||
BranchConditional 39 10 11
|
|
||||||
18: Label
|
|
||||||
Store 20(B) 21
|
|
||||||
Branch 12
|
|
||||||
22: Label
|
|
||||||
Store 23(C) 15
|
|
||||||
Branch 19
|
|
||||||
19: Label
|
|
||||||
24: 6(int) Load 8(i)
|
|
||||||
26: 16(bool) IEqual 24 25
|
|
||||||
SelectionMerge 28 None
|
|
||||||
BranchConditional 26 27 28
|
|
||||||
27: Label
|
|
||||||
Store 29(D) 30
|
|
||||||
Branch 11
|
Branch 11
|
||||||
31: Label
|
11: Label
|
||||||
Store 32(E) 33
|
Store 14(A) 9
|
||||||
Branch 28
|
15: 6(int) Load 8(i)
|
||||||
|
18: 17(bool) IEqual 15 16
|
||||||
|
SelectionMerge 20 None
|
||||||
|
BranchConditional 18 19 20
|
||||||
|
12: Label
|
||||||
|
Store 41(G) 42
|
||||||
|
Return
|
||||||
|
13: Label
|
||||||
|
37: 6(int) Load 8(i)
|
||||||
|
38: 6(int) IAdd 37 22
|
||||||
|
Store 8(i) 38
|
||||||
|
40: 17(bool) SLessThan 38 39
|
||||||
|
BranchConditional 40 10 12
|
||||||
|
19: Label
|
||||||
|
Store 21(B) 22
|
||||||
|
Branch 13
|
||||||
|
23: Label
|
||||||
|
Store 24(C) 16
|
||||||
|
Branch 20
|
||||||
|
20: Label
|
||||||
|
25: 6(int) Load 8(i)
|
||||||
|
27: 17(bool) IEqual 25 26
|
||||||
|
SelectionMerge 29 None
|
||||||
|
BranchConditional 27 28 29
|
||||||
28: Label
|
28: Label
|
||||||
Store 34(F) 35
|
Store 30(D) 31
|
||||||
Branch 12
|
Branch 12
|
||||||
|
32: Label
|
||||||
|
Store 33(E) 34
|
||||||
|
Branch 29
|
||||||
|
29: Label
|
||||||
|
Store 35(F) 36
|
||||||
|
Branch 13
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@ -5,7 +5,7 @@ Linked fragment stage:
|
|||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80001
|
// Generated by (magic number): 80001
|
||||||
// Id's are bound by 34
|
// Id's are bound by 35
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
@ -16,9 +16,9 @@ Linked fragment stage:
|
|||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 9 "color"
|
Name 9 "color"
|
||||||
Name 11 "BaseColor"
|
Name 11 "BaseColor"
|
||||||
Name 17 "bigColor"
|
Name 18 "bigColor"
|
||||||
Name 27 "d"
|
Name 28 "d"
|
||||||
Name 32 "gl_FragColor"
|
Name 33 "gl_FragColor"
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
6: TypeFloat 32
|
6: TypeFloat 32
|
||||||
@ -26,16 +26,16 @@ Linked fragment stage:
|
|||||||
8: TypePointer Function 7(fvec4)
|
8: TypePointer Function 7(fvec4)
|
||||||
10: TypePointer Input 7(fvec4)
|
10: TypePointer Input 7(fvec4)
|
||||||
11(BaseColor): 10(ptr) Variable Input
|
11(BaseColor): 10(ptr) Variable Input
|
||||||
16: TypePointer UniformConstant 7(fvec4)
|
17: TypePointer UniformConstant 7(fvec4)
|
||||||
17(bigColor): 16(ptr) Variable UniformConstant
|
18(bigColor): 17(ptr) Variable UniformConstant
|
||||||
21: TypeInt 32 0
|
22: TypeInt 32 0
|
||||||
22: 21(int) Constant 0
|
23: 22(int) Constant 0
|
||||||
23: TypePointer Function 6(float)
|
24: TypePointer Function 6(float)
|
||||||
26: TypePointer UniformConstant 6(float)
|
27: TypePointer UniformConstant 6(float)
|
||||||
27(d): 26(ptr) Variable UniformConstant
|
28(d): 27(ptr) Variable UniformConstant
|
||||||
29: TypeBool
|
30: TypeBool
|
||||||
31: TypePointer Output 7(fvec4)
|
32: TypePointer Output 7(fvec4)
|
||||||
32(gl_FragColor): 31(ptr) Variable Output
|
33(gl_FragColor): 32(ptr) Variable Output
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
9(color): 8(ptr) Variable Function
|
9(color): 8(ptr) Variable Function
|
||||||
@ -43,20 +43,22 @@ Linked fragment stage:
|
|||||||
Store 9(color) 12
|
Store 9(color) 12
|
||||||
Branch 13
|
Branch 13
|
||||||
13: Label
|
13: Label
|
||||||
18: 7(fvec4) Load 17(bigColor)
|
LoopMerge 15 16 None
|
||||||
19: 7(fvec4) Load 9(color)
|
Branch 14
|
||||||
20: 7(fvec4) FAdd 19 18
|
|
||||||
Store 9(color) 20
|
|
||||||
Branch 15
|
|
||||||
14: Label
|
14: Label
|
||||||
33: 7(fvec4) Load 9(color)
|
19: 7(fvec4) Load 18(bigColor)
|
||||||
Store 32(gl_FragColor) 33
|
20: 7(fvec4) Load 9(color)
|
||||||
Return
|
21: 7(fvec4) FAdd 20 19
|
||||||
|
Store 9(color) 21
|
||||||
|
Branch 16
|
||||||
15: Label
|
15: Label
|
||||||
24: 23(ptr) AccessChain 9(color) 22
|
34: 7(fvec4) Load 9(color)
|
||||||
25: 6(float) Load 24
|
Store 33(gl_FragColor) 34
|
||||||
28: 6(float) Load 27(d)
|
Return
|
||||||
30: 29(bool) FOrdLessThan 25 28
|
16: Label
|
||||||
LoopMerge 14 15 None
|
25: 24(ptr) AccessChain 9(color) 23
|
||||||
BranchConditional 30 13 14
|
26: 6(float) Load 25
|
||||||
|
29: 6(float) Load 28(d)
|
||||||
|
31: 30(bool) FOrdLessThan 26 29
|
||||||
|
BranchConditional 31 13 15
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@ -51,30 +51,30 @@ Linked vertex stage:
|
|||||||
38(F): 7(ptr) Variable Function
|
38(F): 7(ptr) Variable Function
|
||||||
42(G): 7(ptr) Variable Function
|
42(G): 7(ptr) Variable Function
|
||||||
Store 8(i) 9
|
Store 8(i) 9
|
||||||
Branch 13
|
Branch 10
|
||||||
10: Label
|
10: Label
|
||||||
|
14: 6(int) Load 8(i)
|
||||||
|
17: 16(bool) SLessThan 14 15
|
||||||
|
LoopMerge 12 13 None
|
||||||
|
BranchConditional 17 11 12
|
||||||
|
11: Label
|
||||||
Store 18(A) 19
|
Store 18(A) 19
|
||||||
20: 6(int) Load 8(i)
|
20: 6(int) Load 8(i)
|
||||||
22: 6(int) SMod 20 21
|
22: 6(int) SMod 20 21
|
||||||
23: 16(bool) IEqual 22 9
|
23: 16(bool) IEqual 22 9
|
||||||
SelectionMerge 25 None
|
SelectionMerge 25 None
|
||||||
BranchConditional 23 24 25
|
BranchConditional 23 24 25
|
||||||
11: Label
|
12: Label
|
||||||
Store 42(G) 43
|
Store 42(G) 43
|
||||||
Return
|
Return
|
||||||
12: Label
|
13: Label
|
||||||
40: 6(int) Load 8(i)
|
40: 6(int) Load 8(i)
|
||||||
41: 6(int) IAdd 40 19
|
41: 6(int) IAdd 40 19
|
||||||
Store 8(i) 41
|
Store 8(i) 41
|
||||||
Branch 13
|
Branch 10
|
||||||
13: Label
|
|
||||||
14: 6(int) Load 8(i)
|
|
||||||
17: 16(bool) SLessThan 14 15
|
|
||||||
LoopMerge 11 12 None
|
|
||||||
BranchConditional 17 10 11
|
|
||||||
24: Label
|
24: Label
|
||||||
Store 26(B) 19
|
Store 26(B) 19
|
||||||
Branch 12
|
Branch 13
|
||||||
27: Label
|
27: Label
|
||||||
Store 28(C) 19
|
Store 28(C) 19
|
||||||
Branch 25
|
Branch 25
|
||||||
@ -86,11 +86,11 @@ Linked vertex stage:
|
|||||||
BranchConditional 32 33 34
|
BranchConditional 32 33 34
|
||||||
33: Label
|
33: Label
|
||||||
Store 35(D) 19
|
Store 35(D) 19
|
||||||
Branch 11
|
Branch 12
|
||||||
36: Label
|
36: Label
|
||||||
Store 37(E) 19
|
Store 37(E) 19
|
||||||
Branch 34
|
Branch 34
|
||||||
34: Label
|
34: Label
|
||||||
Store 38(F) 39
|
Store 38(F) 39
|
||||||
Branch 12
|
Branch 13
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@ -39,21 +39,21 @@ Linked vertex stage:
|
|||||||
5: Label
|
5: Label
|
||||||
8(i): 7(ptr) Variable Function
|
8(i): 7(ptr) Variable Function
|
||||||
Store 8(i) 9
|
Store 8(i) 9
|
||||||
Branch 13
|
Branch 10
|
||||||
10: Label
|
10: Label
|
||||||
Branch 12
|
14: 6(int) Load 8(i)
|
||||||
|
17: 16(bool) SLessThan 14 15
|
||||||
|
LoopMerge 12 13 None
|
||||||
|
BranchConditional 17 11 12
|
||||||
11: Label
|
11: Label
|
||||||
|
Branch 13
|
||||||
|
12: Label
|
||||||
23: 6(int) Load 8(i)
|
23: 6(int) Load 8(i)
|
||||||
Store 22(r) 23
|
Store 22(r) 23
|
||||||
Return
|
Return
|
||||||
12: Label
|
13: Label
|
||||||
18: 6(int) Load 8(i)
|
18: 6(int) Load 8(i)
|
||||||
20: 6(int) IAdd 18 19
|
20: 6(int) IAdd 18 19
|
||||||
Store 8(i) 20
|
Store 8(i) 20
|
||||||
Branch 13
|
Branch 10
|
||||||
13: Label
|
|
||||||
14: 6(int) Load 8(i)
|
|
||||||
17: 16(bool) SLessThan 14 15
|
|
||||||
LoopMerge 11 12 None
|
|
||||||
BranchConditional 17 10 11
|
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@ -7,44 +7,47 @@ Linked vertex stage:
|
|||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80001
|
// Generated by (magic number): 80001
|
||||||
// Id's are bound by 22
|
// Id's are bound by 23
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Vertex 4 "main" 14 20 21
|
EntryPoint Vertex 4 "main" 15 21 22
|
||||||
Source GLSL 450
|
Source GLSL 450
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 8 "i"
|
Name 8 "i"
|
||||||
Name 14 "r"
|
Name 15 "r"
|
||||||
Name 20 "gl_VertexID"
|
Name 21 "gl_VertexID"
|
||||||
Name 21 "gl_InstanceID"
|
Name 22 "gl_InstanceID"
|
||||||
Decorate 14(r) Location 0
|
Decorate 15(r) Location 0
|
||||||
Decorate 20(gl_VertexID) BuiltIn VertexId
|
Decorate 21(gl_VertexID) BuiltIn VertexId
|
||||||
Decorate 21(gl_InstanceID) BuiltIn InstanceId
|
Decorate 22(gl_InstanceID) BuiltIn InstanceId
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
6: TypeInt 32 1
|
6: TypeInt 32 1
|
||||||
7: TypePointer Function 6(int)
|
7: TypePointer Function 6(int)
|
||||||
9: 6(int) Constant 0
|
9: 6(int) Constant 0
|
||||||
13: TypePointer Output 6(int)
|
14: TypePointer Output 6(int)
|
||||||
14(r): 13(ptr) Variable Output
|
15(r): 14(ptr) Variable Output
|
||||||
17: 6(int) Constant 1
|
18: 6(int) Constant 1
|
||||||
19: TypePointer Input 6(int)
|
20: TypePointer Input 6(int)
|
||||||
20(gl_VertexID): 19(ptr) Variable Input
|
21(gl_VertexID): 20(ptr) Variable Input
|
||||||
21(gl_InstanceID): 19(ptr) Variable Input
|
22(gl_InstanceID): 20(ptr) Variable Input
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
8(i): 7(ptr) Variable Function
|
8(i): 7(ptr) Variable Function
|
||||||
Store 8(i) 9
|
Store 8(i) 9
|
||||||
Branch 10
|
Branch 10
|
||||||
10: Label
|
10: Label
|
||||||
15: 6(int) Load 8(i)
|
LoopMerge 12 13 None
|
||||||
Store 14(r) 15
|
Branch 11
|
||||||
Branch 12
|
11: Label
|
||||||
12: Label
|
|
||||||
16: 6(int) Load 8(i)
|
16: 6(int) Load 8(i)
|
||||||
18: 6(int) IAdd 16 17
|
Store 15(r) 16
|
||||||
Store 8(i) 18
|
Branch 13
|
||||||
|
13: Label
|
||||||
|
17: 6(int) Load 8(i)
|
||||||
|
19: 6(int) IAdd 17 18
|
||||||
|
Store 8(i) 19
|
||||||
Branch 10
|
Branch 10
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@ -36,20 +36,20 @@ Linked vertex stage:
|
|||||||
8(i): 7(ptr) Variable Function
|
8(i): 7(ptr) Variable Function
|
||||||
18(j): 7(ptr) Variable Function
|
18(j): 7(ptr) Variable Function
|
||||||
Store 8(i) 9
|
Store 8(i) 9
|
||||||
Branch 13
|
Branch 10
|
||||||
10: Label
|
10: Label
|
||||||
Store 18(j) 19
|
14: 6(int) Load 8(i)
|
||||||
Branch 12
|
17: 16(bool) SLessThan 14 15
|
||||||
|
LoopMerge 12 13 None
|
||||||
|
BranchConditional 17 11 12
|
||||||
11: Label
|
11: Label
|
||||||
Return
|
Store 18(j) 19
|
||||||
|
Branch 13
|
||||||
12: Label
|
12: Label
|
||||||
|
Return
|
||||||
|
13: Label
|
||||||
20: 6(int) Load 8(i)
|
20: 6(int) Load 8(i)
|
||||||
22: 6(int) IAdd 20 21
|
22: 6(int) IAdd 20 21
|
||||||
Store 8(i) 22
|
Store 8(i) 22
|
||||||
Branch 13
|
Branch 10
|
||||||
13: Label
|
|
||||||
14: 6(int) Load 8(i)
|
|
||||||
17: 16(bool) SLessThan 14 15
|
|
||||||
LoopMerge 11 12 None
|
|
||||||
BranchConditional 17 10 11
|
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@ -75,31 +75,36 @@ Linked fragment stage:
|
|||||||
12: 7(fvec4) Load 11(BaseColor)
|
12: 7(fvec4) Load 11(BaseColor)
|
||||||
Store 9(color) 12
|
Store 9(color) 12
|
||||||
Store 15(i) 16
|
Store 15(i) 16
|
||||||
Branch 20
|
Branch 17
|
||||||
17: Label
|
17: Label
|
||||||
|
21: 13(int) Load 15(i)
|
||||||
|
24: 13(int) Load 23(Count)
|
||||||
|
26: 25(bool) SLessThan 21 24
|
||||||
|
LoopMerge 19 20 None
|
||||||
|
BranchConditional 26 18 19
|
||||||
|
18: Label
|
||||||
29: 7(fvec4) Load 28(bigColor)
|
29: 7(fvec4) Load 28(bigColor)
|
||||||
30: 7(fvec4) Load 9(color)
|
30: 7(fvec4) Load 9(color)
|
||||||
31: 7(fvec4) FAdd 30 29
|
31: 7(fvec4) FAdd 30 29
|
||||||
Store 9(color) 31
|
Store 9(color) 31
|
||||||
Branch 19
|
Branch 20
|
||||||
18: Label
|
19: Label
|
||||||
37: 7(fvec4) Load 9(color)
|
37: 7(fvec4) Load 9(color)
|
||||||
Store 36(gl_FragColor) 37
|
Store 36(gl_FragColor) 37
|
||||||
Store 39(sum) 40
|
Store 39(sum) 40
|
||||||
Store 41(i) 16
|
Store 41(i) 16
|
||||||
Branch 45
|
Branch 42
|
||||||
19: Label
|
20: Label
|
||||||
32: 13(int) Load 15(i)
|
32: 13(int) Load 15(i)
|
||||||
34: 13(int) IAdd 32 33
|
34: 13(int) IAdd 32 33
|
||||||
Store 15(i) 34
|
Store 15(i) 34
|
||||||
Branch 20
|
Branch 17
|
||||||
20: Label
|
|
||||||
21: 13(int) Load 15(i)
|
|
||||||
24: 13(int) Load 23(Count)
|
|
||||||
26: 25(bool) SLessThan 21 24
|
|
||||||
LoopMerge 18 19 None
|
|
||||||
BranchConditional 26 17 18
|
|
||||||
42: Label
|
42: Label
|
||||||
|
46: 13(int) Load 41(i)
|
||||||
|
48: 25(bool) SLessThan 46 47
|
||||||
|
LoopMerge 44 45 None
|
||||||
|
BranchConditional 48 43 44
|
||||||
|
43: Label
|
||||||
53: 13(int) Load 41(i)
|
53: 13(int) Load 41(i)
|
||||||
55: 54(ptr) AccessChain 52(v4) 53
|
55: 54(ptr) AccessChain 52(v4) 53
|
||||||
56: 49(int) Load 55
|
56: 49(int) Load 55
|
||||||
@ -107,21 +112,21 @@ Linked fragment stage:
|
|||||||
58: 6(float) Load 39(sum)
|
58: 6(float) Load 39(sum)
|
||||||
59: 6(float) FAdd 58 57
|
59: 6(float) FAdd 58 57
|
||||||
Store 39(sum) 59
|
Store 39(sum) 59
|
||||||
Branch 44
|
Branch 45
|
||||||
43: Label
|
|
||||||
Store 62(i) 16
|
|
||||||
Branch 66
|
|
||||||
44: Label
|
44: Label
|
||||||
|
Store 62(i) 16
|
||||||
|
Branch 63
|
||||||
|
45: Label
|
||||||
60: 13(int) Load 41(i)
|
60: 13(int) Load 41(i)
|
||||||
61: 13(int) IAdd 60 33
|
61: 13(int) IAdd 60 33
|
||||||
Store 41(i) 61
|
Store 41(i) 61
|
||||||
Branch 45
|
Branch 42
|
||||||
45: Label
|
|
||||||
46: 13(int) Load 41(i)
|
|
||||||
48: 25(bool) SLessThan 46 47
|
|
||||||
LoopMerge 43 44 None
|
|
||||||
BranchConditional 48 42 43
|
|
||||||
63: Label
|
63: Label
|
||||||
|
67: 13(int) Load 62(i)
|
||||||
|
68: 25(bool) SLessThan 67 47
|
||||||
|
LoopMerge 65 66 None
|
||||||
|
BranchConditional 68 64 65
|
||||||
|
64: Label
|
||||||
70: 13(int) Load 62(i)
|
70: 13(int) Load 62(i)
|
||||||
71: 13(int) Load 62(i)
|
71: 13(int) Load 62(i)
|
||||||
72: 54(ptr) AccessChain 52(v4) 71
|
72: 54(ptr) AccessChain 52(v4) 71
|
||||||
@ -130,8 +135,8 @@ Linked fragment stage:
|
|||||||
76: 6(float) ConvertUToF 75
|
76: 6(float) ConvertUToF 75
|
||||||
77: 38(ptr) AccessChain 69(tv4) 70
|
77: 38(ptr) AccessChain 69(tv4) 70
|
||||||
Store 77 76
|
Store 77 76
|
||||||
Branch 65
|
Branch 66
|
||||||
64: Label
|
65: Label
|
||||||
80: 6(float) Load 39(sum)
|
80: 6(float) Load 39(sum)
|
||||||
81: 7(fvec4) CompositeConstruct 80 80 80 80
|
81: 7(fvec4) CompositeConstruct 80 80 80 80
|
||||||
82: 7(fvec4) Load 69(tv4)
|
82: 7(fvec4) Load 69(tv4)
|
||||||
@ -145,23 +150,24 @@ Linked fragment stage:
|
|||||||
91: 7(fvec4) VectorShuffle 90 89 4 5 6 3
|
91: 7(fvec4) VectorShuffle 90 89 4 5 6 3
|
||||||
Store 86(r) 91
|
Store 86(r) 91
|
||||||
Store 92(i) 16
|
Store 92(i) 16
|
||||||
Branch 96
|
Branch 93
|
||||||
65: Label
|
66: Label
|
||||||
78: 13(int) Load 62(i)
|
78: 13(int) Load 62(i)
|
||||||
79: 13(int) IAdd 78 33
|
79: 13(int) IAdd 78 33
|
||||||
Store 62(i) 79
|
Store 62(i) 79
|
||||||
Branch 66
|
Branch 63
|
||||||
66: Label
|
|
||||||
67: 13(int) Load 62(i)
|
|
||||||
68: 25(bool) SLessThan 67 47
|
|
||||||
LoopMerge 64 65 None
|
|
||||||
BranchConditional 68 63 64
|
|
||||||
93: Label
|
93: Label
|
||||||
|
97: 13(int) Load 92(i)
|
||||||
|
98: 13(int) Load 23(Count)
|
||||||
|
99: 25(bool) SLessThan 97 98
|
||||||
|
LoopMerge 95 96 None
|
||||||
|
BranchConditional 99 94 95
|
||||||
|
94: Label
|
||||||
102: 6(float) Load 101(f)
|
102: 6(float) Load 101(f)
|
||||||
104: 38(ptr) AccessChain 86(r) 103
|
104: 38(ptr) AccessChain 86(r) 103
|
||||||
Store 104 102
|
Store 104 102
|
||||||
Branch 95
|
Branch 96
|
||||||
94: Label
|
95: Label
|
||||||
107: 7(fvec4) Load 86(r)
|
107: 7(fvec4) Load 86(r)
|
||||||
108: 87(fvec3) VectorShuffle 107 107 0 1 2
|
108: 87(fvec3) VectorShuffle 107 107 0 1 2
|
||||||
109: 7(fvec4) Load 36(gl_FragColor)
|
109: 7(fvec4) Load 36(gl_FragColor)
|
||||||
@ -171,34 +177,28 @@ Linked fragment stage:
|
|||||||
113: 7(fvec4) VectorShuffle 112 111 4 5 6 3
|
113: 7(fvec4) VectorShuffle 112 111 4 5 6 3
|
||||||
Store 36(gl_FragColor) 113
|
Store 36(gl_FragColor) 113
|
||||||
Store 114(i) 16
|
Store 114(i) 16
|
||||||
Branch 118
|
Branch 115
|
||||||
95: Label
|
96: Label
|
||||||
105: 13(int) Load 92(i)
|
105: 13(int) Load 92(i)
|
||||||
106: 13(int) IAdd 105 33
|
106: 13(int) IAdd 105 33
|
||||||
Store 92(i) 106
|
Store 92(i) 106
|
||||||
Branch 96
|
Branch 93
|
||||||
96: Label
|
|
||||||
97: 13(int) Load 92(i)
|
|
||||||
98: 13(int) Load 23(Count)
|
|
||||||
99: 25(bool) SLessThan 97 98
|
|
||||||
LoopMerge 94 95 None
|
|
||||||
BranchConditional 99 93 94
|
|
||||||
115: Label
|
115: Label
|
||||||
|
119: 13(int) Load 114(i)
|
||||||
|
121: 25(bool) SLessThan 119 120
|
||||||
|
LoopMerge 117 118 None
|
||||||
|
BranchConditional 121 116 117
|
||||||
|
116: Label
|
||||||
122: 6(float) Load 101(f)
|
122: 6(float) Load 101(f)
|
||||||
123: 7(fvec4) Load 36(gl_FragColor)
|
123: 7(fvec4) Load 36(gl_FragColor)
|
||||||
124: 7(fvec4) VectorTimesScalar 123 122
|
124: 7(fvec4) VectorTimesScalar 123 122
|
||||||
Store 36(gl_FragColor) 124
|
Store 36(gl_FragColor) 124
|
||||||
Branch 117
|
Branch 118
|
||||||
116: Label
|
|
||||||
Return
|
|
||||||
117: Label
|
117: Label
|
||||||
|
Return
|
||||||
|
118: Label
|
||||||
125: 13(int) Load 114(i)
|
125: 13(int) Load 114(i)
|
||||||
126: 13(int) IAdd 125 47
|
126: 13(int) IAdd 125 47
|
||||||
Store 114(i) 126
|
Store 114(i) 126
|
||||||
Branch 118
|
Branch 115
|
||||||
118: Label
|
|
||||||
119: 13(int) Load 114(i)
|
|
||||||
121: 25(bool) SLessThan 119 120
|
|
||||||
LoopMerge 116 117 None
|
|
||||||
BranchConditional 121 115 116
|
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@ -159,27 +159,27 @@ Linked fragment stage:
|
|||||||
74: 30(ptr) AccessChain 70(localArray) 71
|
74: 30(ptr) AccessChain 70(localArray) 71
|
||||||
Store 74 73
|
Store 74 73
|
||||||
Store 75(i) 16
|
Store 75(i) 16
|
||||||
Branch 79
|
Branch 76
|
||||||
76: Label
|
76: Label
|
||||||
|
80: 6(int) Load 75(i)
|
||||||
|
82: 23(bool) SLessThan 80 81
|
||||||
|
LoopMerge 78 79 None
|
||||||
|
BranchConditional 82 77 78
|
||||||
|
77: Label
|
||||||
84: 6(int) Load 75(i)
|
84: 6(int) Load 75(i)
|
||||||
86: 30(ptr) AccessChain 83(a) 84
|
86: 30(ptr) AccessChain 83(a) 84
|
||||||
Store 86 85
|
Store 86 85
|
||||||
Branch 78
|
Branch 79
|
||||||
77: Label
|
78: Label
|
||||||
90: 6(int) Load 89(condition)
|
90: 6(int) Load 89(condition)
|
||||||
91: 23(bool) IEqual 90 28
|
91: 23(bool) IEqual 90 28
|
||||||
SelectionMerge 93 None
|
SelectionMerge 93 None
|
||||||
BranchConditional 91 92 93
|
BranchConditional 91 92 93
|
||||||
78: Label
|
79: Label
|
||||||
87: 6(int) Load 75(i)
|
87: 6(int) Load 75(i)
|
||||||
88: 6(int) IAdd 87 28
|
88: 6(int) IAdd 87 28
|
||||||
Store 75(i) 88
|
Store 75(i) 88
|
||||||
Branch 79
|
Branch 76
|
||||||
79: Label
|
|
||||||
80: 6(int) Load 75(i)
|
|
||||||
82: 23(bool) SLessThan 80 81
|
|
||||||
LoopMerge 77 78 None
|
|
||||||
BranchConditional 82 76 77
|
|
||||||
92: Label
|
92: Label
|
||||||
94: 34 Load 70(localArray)
|
94: 34 Load 70(localArray)
|
||||||
Store 83(a) 94
|
Store 83(a) 94
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -7,7 +7,7 @@ Linked fragment stage:
|
|||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80001
|
// Generated by (magic number): 80001
|
||||||
// Id's are bound by 186
|
// Id's are bound by 187
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
@ -18,53 +18,53 @@ Linked fragment stage:
|
|||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 9 "color"
|
Name 9 "color"
|
||||||
Name 11 "BaseColor"
|
Name 11 "BaseColor"
|
||||||
Name 17 "bigColor4"
|
Name 18 "bigColor4"
|
||||||
Name 27 "d4"
|
Name 28 "d4"
|
||||||
Name 79 "d13"
|
Name 80 "d13"
|
||||||
Name 139 "gl_FragColor"
|
Name 140 "gl_FragColor"
|
||||||
Name 141 "bigColor"
|
Name 142 "bigColor"
|
||||||
Name 142 "bigColor1_1"
|
Name 143 "bigColor1_1"
|
||||||
Name 143 "bigColor1_2"
|
Name 144 "bigColor1_2"
|
||||||
Name 144 "bigColor1_3"
|
Name 145 "bigColor1_3"
|
||||||
Name 145 "bigColor2"
|
Name 146 "bigColor2"
|
||||||
Name 146 "bigColor3"
|
Name 147 "bigColor3"
|
||||||
Name 147 "bigColor5"
|
Name 148 "bigColor5"
|
||||||
Name 148 "bigColor6"
|
Name 149 "bigColor6"
|
||||||
Name 149 "bigColor7"
|
Name 150 "bigColor7"
|
||||||
Name 150 "bigColor8"
|
Name 151 "bigColor8"
|
||||||
Name 151 "d"
|
Name 152 "d"
|
||||||
Name 152 "d2"
|
Name 153 "d2"
|
||||||
Name 153 "d3"
|
Name 154 "d3"
|
||||||
Name 154 "d5"
|
Name 155 "d5"
|
||||||
Name 155 "d6"
|
Name 156 "d6"
|
||||||
Name 156 "d7"
|
Name 157 "d7"
|
||||||
Name 157 "d8"
|
Name 158 "d8"
|
||||||
Name 158 "d9"
|
Name 159 "d9"
|
||||||
Name 159 "d10"
|
Name 160 "d10"
|
||||||
Name 160 "d11"
|
Name 161 "d11"
|
||||||
Name 161 "d12"
|
Name 162 "d12"
|
||||||
Name 162 "d14"
|
Name 163 "d14"
|
||||||
Name 163 "d15"
|
Name 164 "d15"
|
||||||
Name 164 "d16"
|
Name 165 "d16"
|
||||||
Name 165 "d17"
|
Name 166 "d17"
|
||||||
Name 166 "d18"
|
Name 167 "d18"
|
||||||
Name 167 "d19"
|
Name 168 "d19"
|
||||||
Name 168 "d20"
|
Name 169 "d20"
|
||||||
Name 169 "d21"
|
Name 170 "d21"
|
||||||
Name 170 "d22"
|
Name 171 "d22"
|
||||||
Name 171 "d23"
|
Name 172 "d23"
|
||||||
Name 172 "d24"
|
Name 173 "d24"
|
||||||
Name 173 "d25"
|
Name 174 "d25"
|
||||||
Name 174 "d26"
|
Name 175 "d26"
|
||||||
Name 175 "d27"
|
Name 176 "d27"
|
||||||
Name 176 "d28"
|
Name 177 "d28"
|
||||||
Name 177 "d29"
|
Name 178 "d29"
|
||||||
Name 178 "d30"
|
Name 179 "d30"
|
||||||
Name 179 "d31"
|
Name 180 "d31"
|
||||||
Name 180 "d32"
|
Name 181 "d32"
|
||||||
Name 181 "d33"
|
Name 182 "d33"
|
||||||
Name 182 "d34"
|
Name 183 "d34"
|
||||||
Name 185 "Count"
|
Name 186 "Count"
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
6: TypeFloat 32
|
6: TypeFloat 32
|
||||||
@ -72,67 +72,67 @@ Linked fragment stage:
|
|||||||
8: TypePointer Function 7(fvec4)
|
8: TypePointer Function 7(fvec4)
|
||||||
10: TypePointer Input 7(fvec4)
|
10: TypePointer Input 7(fvec4)
|
||||||
11(BaseColor): 10(ptr) Variable Input
|
11(BaseColor): 10(ptr) Variable Input
|
||||||
16: TypePointer UniformConstant 7(fvec4)
|
17: TypePointer UniformConstant 7(fvec4)
|
||||||
17(bigColor4): 16(ptr) Variable UniformConstant
|
18(bigColor4): 17(ptr) Variable UniformConstant
|
||||||
21: TypeInt 32 0
|
22: TypeInt 32 0
|
||||||
22: 21(int) Constant 0
|
23: 22(int) Constant 0
|
||||||
23: TypePointer Function 6(float)
|
24: TypePointer Function 6(float)
|
||||||
26: TypePointer UniformConstant 6(float)
|
27: TypePointer UniformConstant 6(float)
|
||||||
27(d4): 26(ptr) Variable UniformConstant
|
28(d4): 27(ptr) Variable UniformConstant
|
||||||
29: TypeBool
|
30: TypeBool
|
||||||
33: 6(float) Constant 1073741824
|
34: 6(float) Constant 1073741824
|
||||||
34: 21(int) Constant 2
|
35: 22(int) Constant 2
|
||||||
47: 6(float) Constant 1065353216
|
48: 6(float) Constant 1065353216
|
||||||
50: 21(int) Constant 1
|
51: 22(int) Constant 1
|
||||||
76: 21(int) Constant 3
|
77: 22(int) Constant 3
|
||||||
79(d13): 26(ptr) Variable UniformConstant
|
80(d13): 27(ptr) Variable UniformConstant
|
||||||
138: TypePointer Output 7(fvec4)
|
139: TypePointer Output 7(fvec4)
|
||||||
139(gl_FragColor): 138(ptr) Variable Output
|
140(gl_FragColor): 139(ptr) Variable Output
|
||||||
141(bigColor): 16(ptr) Variable UniformConstant
|
142(bigColor): 17(ptr) Variable UniformConstant
|
||||||
142(bigColor1_1): 16(ptr) Variable UniformConstant
|
143(bigColor1_1): 17(ptr) Variable UniformConstant
|
||||||
143(bigColor1_2): 16(ptr) Variable UniformConstant
|
144(bigColor1_2): 17(ptr) Variable UniformConstant
|
||||||
144(bigColor1_3): 16(ptr) Variable UniformConstant
|
145(bigColor1_3): 17(ptr) Variable UniformConstant
|
||||||
145(bigColor2): 16(ptr) Variable UniformConstant
|
146(bigColor2): 17(ptr) Variable UniformConstant
|
||||||
146(bigColor3): 16(ptr) Variable UniformConstant
|
147(bigColor3): 17(ptr) Variable UniformConstant
|
||||||
147(bigColor5): 16(ptr) Variable UniformConstant
|
148(bigColor5): 17(ptr) Variable UniformConstant
|
||||||
148(bigColor6): 16(ptr) Variable UniformConstant
|
149(bigColor6): 17(ptr) Variable UniformConstant
|
||||||
149(bigColor7): 16(ptr) Variable UniformConstant
|
150(bigColor7): 17(ptr) Variable UniformConstant
|
||||||
150(bigColor8): 16(ptr) Variable UniformConstant
|
151(bigColor8): 17(ptr) Variable UniformConstant
|
||||||
151(d): 26(ptr) Variable UniformConstant
|
152(d): 27(ptr) Variable UniformConstant
|
||||||
152(d2): 26(ptr) Variable UniformConstant
|
153(d2): 27(ptr) Variable UniformConstant
|
||||||
153(d3): 26(ptr) Variable UniformConstant
|
154(d3): 27(ptr) Variable UniformConstant
|
||||||
154(d5): 26(ptr) Variable UniformConstant
|
155(d5): 27(ptr) Variable UniformConstant
|
||||||
155(d6): 26(ptr) Variable UniformConstant
|
156(d6): 27(ptr) Variable UniformConstant
|
||||||
156(d7): 26(ptr) Variable UniformConstant
|
157(d7): 27(ptr) Variable UniformConstant
|
||||||
157(d8): 26(ptr) Variable UniformConstant
|
158(d8): 27(ptr) Variable UniformConstant
|
||||||
158(d9): 26(ptr) Variable UniformConstant
|
159(d9): 27(ptr) Variable UniformConstant
|
||||||
159(d10): 26(ptr) Variable UniformConstant
|
160(d10): 27(ptr) Variable UniformConstant
|
||||||
160(d11): 26(ptr) Variable UniformConstant
|
161(d11): 27(ptr) Variable UniformConstant
|
||||||
161(d12): 26(ptr) Variable UniformConstant
|
162(d12): 27(ptr) Variable UniformConstant
|
||||||
162(d14): 26(ptr) Variable UniformConstant
|
163(d14): 27(ptr) Variable UniformConstant
|
||||||
163(d15): 26(ptr) Variable UniformConstant
|
164(d15): 27(ptr) Variable UniformConstant
|
||||||
164(d16): 26(ptr) Variable UniformConstant
|
165(d16): 27(ptr) Variable UniformConstant
|
||||||
165(d17): 26(ptr) Variable UniformConstant
|
166(d17): 27(ptr) Variable UniformConstant
|
||||||
166(d18): 26(ptr) Variable UniformConstant
|
167(d18): 27(ptr) Variable UniformConstant
|
||||||
167(d19): 26(ptr) Variable UniformConstant
|
168(d19): 27(ptr) Variable UniformConstant
|
||||||
168(d20): 26(ptr) Variable UniformConstant
|
169(d20): 27(ptr) Variable UniformConstant
|
||||||
169(d21): 26(ptr) Variable UniformConstant
|
170(d21): 27(ptr) Variable UniformConstant
|
||||||
170(d22): 26(ptr) Variable UniformConstant
|
171(d22): 27(ptr) Variable UniformConstant
|
||||||
171(d23): 26(ptr) Variable UniformConstant
|
172(d23): 27(ptr) Variable UniformConstant
|
||||||
172(d24): 26(ptr) Variable UniformConstant
|
173(d24): 27(ptr) Variable UniformConstant
|
||||||
173(d25): 26(ptr) Variable UniformConstant
|
174(d25): 27(ptr) Variable UniformConstant
|
||||||
174(d26): 26(ptr) Variable UniformConstant
|
175(d26): 27(ptr) Variable UniformConstant
|
||||||
175(d27): 26(ptr) Variable UniformConstant
|
176(d27): 27(ptr) Variable UniformConstant
|
||||||
176(d28): 26(ptr) Variable UniformConstant
|
177(d28): 27(ptr) Variable UniformConstant
|
||||||
177(d29): 26(ptr) Variable UniformConstant
|
178(d29): 27(ptr) Variable UniformConstant
|
||||||
178(d30): 26(ptr) Variable UniformConstant
|
179(d30): 27(ptr) Variable UniformConstant
|
||||||
179(d31): 26(ptr) Variable UniformConstant
|
180(d31): 27(ptr) Variable UniformConstant
|
||||||
180(d32): 26(ptr) Variable UniformConstant
|
181(d32): 27(ptr) Variable UniformConstant
|
||||||
181(d33): 26(ptr) Variable UniformConstant
|
182(d33): 27(ptr) Variable UniformConstant
|
||||||
182(d34): 26(ptr) Variable UniformConstant
|
183(d34): 27(ptr) Variable UniformConstant
|
||||||
183: TypeInt 32 1
|
184: TypeInt 32 1
|
||||||
184: TypePointer UniformConstant 183(int)
|
185: TypePointer UniformConstant 184(int)
|
||||||
185(Count): 184(ptr) Variable UniformConstant
|
186(Count): 185(ptr) Variable UniformConstant
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
9(color): 8(ptr) Variable Function
|
9(color): 8(ptr) Variable Function
|
||||||
@ -140,160 +140,162 @@ Linked fragment stage:
|
|||||||
Store 9(color) 12
|
Store 9(color) 12
|
||||||
Branch 13
|
Branch 13
|
||||||
13: Label
|
13: Label
|
||||||
18: 7(fvec4) Load 17(bigColor4)
|
LoopMerge 15 16 None
|
||||||
19: 7(fvec4) Load 9(color)
|
Branch 14
|
||||||
20: 7(fvec4) FAdd 19 18
|
|
||||||
Store 9(color) 20
|
|
||||||
24: 23(ptr) AccessChain 9(color) 22
|
|
||||||
25: 6(float) Load 24
|
|
||||||
28: 6(float) Load 27(d4)
|
|
||||||
30: 29(bool) FOrdLessThan 25 28
|
|
||||||
SelectionMerge 32 None
|
|
||||||
BranchConditional 30 31 32
|
|
||||||
14: Label
|
14: Label
|
||||||
Branch 75
|
19: 7(fvec4) Load 18(bigColor4)
|
||||||
|
20: 7(fvec4) Load 9(color)
|
||||||
|
21: 7(fvec4) FAdd 20 19
|
||||||
|
Store 9(color) 21
|
||||||
|
25: 24(ptr) AccessChain 9(color) 23
|
||||||
|
26: 6(float) Load 25
|
||||||
|
29: 6(float) Load 28(d4)
|
||||||
|
31: 30(bool) FOrdLessThan 26 29
|
||||||
|
SelectionMerge 33 None
|
||||||
|
BranchConditional 31 32 33
|
||||||
15: Label
|
15: Label
|
||||||
68: 23(ptr) AccessChain 9(color) 34
|
Branch 73
|
||||||
69: 6(float) Load 68
|
16: Label
|
||||||
70: 6(float) Load 27(d4)
|
69: 24(ptr) AccessChain 9(color) 35
|
||||||
71: 29(bool) FOrdLessThan 69 70
|
70: 6(float) Load 69
|
||||||
LoopMerge 14 15 None
|
71: 6(float) Load 28(d4)
|
||||||
BranchConditional 71 13 14
|
72: 30(bool) FOrdLessThan 70 71
|
||||||
31: Label
|
BranchConditional 72 13 15
|
||||||
35: 23(ptr) AccessChain 9(color) 34
|
|
||||||
36: 6(float) Load 35
|
|
||||||
37: 6(float) FAdd 36 33
|
|
||||||
38: 23(ptr) AccessChain 9(color) 34
|
|
||||||
Store 38 37
|
|
||||||
39: 23(ptr) AccessChain 9(color) 34
|
|
||||||
40: 6(float) Load 39
|
|
||||||
41: 6(float) Load 27(d4)
|
|
||||||
42: 29(bool) FOrdLessThan 40 41
|
|
||||||
SelectionMerge 44 None
|
|
||||||
BranchConditional 42 43 44
|
|
||||||
43: Label
|
|
||||||
45: 23(ptr) AccessChain 9(color) 22
|
|
||||||
46: 6(float) Load 45
|
|
||||||
48: 6(float) FAdd 46 47
|
|
||||||
Store 45 48
|
|
||||||
Branch 15
|
|
||||||
44: Label
|
|
||||||
Branch 32
|
|
||||||
32: Label
|
32: Label
|
||||||
51: 23(ptr) AccessChain 9(color) 50
|
36: 24(ptr) AccessChain 9(color) 35
|
||||||
52: 6(float) Load 51
|
37: 6(float) Load 36
|
||||||
53: 6(float) Load 27(d4)
|
38: 6(float) FAdd 37 34
|
||||||
54: 29(bool) FOrdLessThan 52 53
|
39: 24(ptr) AccessChain 9(color) 35
|
||||||
SelectionMerge 56 None
|
Store 39 38
|
||||||
BranchConditional 54 55 62
|
40: 24(ptr) AccessChain 9(color) 35
|
||||||
55: Label
|
41: 6(float) Load 40
|
||||||
57: 6(float) Load 27(d4)
|
42: 6(float) Load 28(d4)
|
||||||
58: 23(ptr) AccessChain 9(color) 50
|
43: 30(bool) FOrdLessThan 41 42
|
||||||
59: 6(float) Load 58
|
SelectionMerge 45 None
|
||||||
60: 6(float) FAdd 59 57
|
BranchConditional 43 44 45
|
||||||
61: 23(ptr) AccessChain 9(color) 50
|
44: Label
|
||||||
Store 61 60
|
46: 24(ptr) AccessChain 9(color) 23
|
||||||
Branch 56
|
47: 6(float) Load 46
|
||||||
62: Label
|
49: 6(float) FAdd 47 48
|
||||||
63: 6(float) Load 27(d4)
|
Store 46 49
|
||||||
64: 23(ptr) AccessChain 9(color) 22
|
Branch 16
|
||||||
65: 6(float) Load 64
|
45: Label
|
||||||
66: 6(float) FAdd 65 63
|
Branch 33
|
||||||
67: 23(ptr) AccessChain 9(color) 22
|
33: Label
|
||||||
Store 67 66
|
52: 24(ptr) AccessChain 9(color) 51
|
||||||
Branch 56
|
53: 6(float) Load 52
|
||||||
|
54: 6(float) Load 28(d4)
|
||||||
|
55: 30(bool) FOrdLessThan 53 54
|
||||||
|
SelectionMerge 57 None
|
||||||
|
BranchConditional 55 56 63
|
||||||
56: Label
|
56: Label
|
||||||
Branch 15
|
58: 6(float) Load 28(d4)
|
||||||
72: Label
|
59: 24(ptr) AccessChain 9(color) 51
|
||||||
82: 23(ptr) AccessChain 9(color) 34
|
60: 6(float) Load 59
|
||||||
83: 6(float) Load 82
|
61: 6(float) FAdd 60 58
|
||||||
84: 6(float) Load 79(d13)
|
62: 24(ptr) AccessChain 9(color) 51
|
||||||
85: 29(bool) FOrdLessThan 83 84
|
Store 62 61
|
||||||
SelectionMerge 87 None
|
Branch 57
|
||||||
BranchConditional 85 86 91
|
63: Label
|
||||||
|
64: 6(float) Load 28(d4)
|
||||||
|
65: 24(ptr) AccessChain 9(color) 23
|
||||||
|
66: 6(float) Load 65
|
||||||
|
67: 6(float) FAdd 66 64
|
||||||
|
68: 24(ptr) AccessChain 9(color) 23
|
||||||
|
Store 68 67
|
||||||
|
Branch 57
|
||||||
|
57: Label
|
||||||
|
Branch 16
|
||||||
73: Label
|
73: Label
|
||||||
135: 7(fvec4) Load 9(color)
|
78: 24(ptr) AccessChain 9(color) 77
|
||||||
136: 7(fvec4) CompositeConstruct 47 47 47 47
|
79: 6(float) Load 78
|
||||||
137: 7(fvec4) FAdd 135 136
|
81: 6(float) Load 80(d13)
|
||||||
Store 9(color) 137
|
82: 30(bool) FOrdLessThan 79 81
|
||||||
140: 7(fvec4) Load 9(color)
|
LoopMerge 75 76 None
|
||||||
Store 139(gl_FragColor) 140
|
BranchConditional 82 74 75
|
||||||
Return
|
|
||||||
74: Label
|
74: Label
|
||||||
Branch 75
|
83: 24(ptr) AccessChain 9(color) 35
|
||||||
|
84: 6(float) Load 83
|
||||||
|
85: 6(float) Load 80(d13)
|
||||||
|
86: 30(bool) FOrdLessThan 84 85
|
||||||
|
SelectionMerge 88 None
|
||||||
|
BranchConditional 86 87 92
|
||||||
75: Label
|
75: Label
|
||||||
77: 23(ptr) AccessChain 9(color) 76
|
136: 7(fvec4) Load 9(color)
|
||||||
78: 6(float) Load 77
|
137: 7(fvec4) CompositeConstruct 48 48 48 48
|
||||||
80: 6(float) Load 79(d13)
|
138: 7(fvec4) FAdd 136 137
|
||||||
81: 29(bool) FOrdLessThan 78 80
|
Store 9(color) 138
|
||||||
LoopMerge 73 74 None
|
141: 7(fvec4) Load 9(color)
|
||||||
BranchConditional 81 72 73
|
Store 140(gl_FragColor) 141
|
||||||
86: Label
|
Return
|
||||||
88: 7(fvec4) Load 9(color)
|
76: Label
|
||||||
89: 7(fvec4) CompositeConstruct 47 47 47 47
|
Branch 73
|
||||||
90: 7(fvec4) FAdd 88 89
|
|
||||||
Store 9(color) 90
|
|
||||||
Branch 87
|
|
||||||
91: Label
|
|
||||||
92: 7(fvec4) Load 9(color)
|
|
||||||
93: 7(fvec4) CompositeConstruct 47 47 47 47
|
|
||||||
94: 7(fvec4) FSub 92 93
|
|
||||||
Store 9(color) 94
|
|
||||||
Branch 87
|
|
||||||
87: Label
|
87: Label
|
||||||
95: 7(fvec4) Load 17(bigColor4)
|
89: 7(fvec4) Load 9(color)
|
||||||
96: 7(fvec4) Load 9(color)
|
90: 7(fvec4) CompositeConstruct 48 48 48 48
|
||||||
97: 7(fvec4) FAdd 96 95
|
91: 7(fvec4) FAdd 89 90
|
||||||
Store 9(color) 97
|
Store 9(color) 91
|
||||||
98: 23(ptr) AccessChain 9(color) 22
|
Branch 88
|
||||||
99: 6(float) Load 98
|
92: Label
|
||||||
100: 6(float) Load 27(d4)
|
93: 7(fvec4) Load 9(color)
|
||||||
101: 29(bool) FOrdLessThan 99 100
|
94: 7(fvec4) CompositeConstruct 48 48 48 48
|
||||||
SelectionMerge 103 None
|
95: 7(fvec4) FSub 93 94
|
||||||
BranchConditional 101 102 103
|
Store 9(color) 95
|
||||||
102: Label
|
Branch 88
|
||||||
104: 23(ptr) AccessChain 9(color) 34
|
88: Label
|
||||||
105: 6(float) Load 104
|
96: 7(fvec4) Load 18(bigColor4)
|
||||||
106: 6(float) FAdd 105 33
|
97: 7(fvec4) Load 9(color)
|
||||||
107: 23(ptr) AccessChain 9(color) 34
|
98: 7(fvec4) FAdd 97 96
|
||||||
Store 107 106
|
Store 9(color) 98
|
||||||
108: 23(ptr) AccessChain 9(color) 34
|
99: 24(ptr) AccessChain 9(color) 23
|
||||||
109: 6(float) Load 108
|
100: 6(float) Load 99
|
||||||
110: 6(float) Load 27(d4)
|
101: 6(float) Load 28(d4)
|
||||||
111: 29(bool) FOrdLessThan 109 110
|
102: 30(bool) FOrdLessThan 100 101
|
||||||
SelectionMerge 113 None
|
SelectionMerge 104 None
|
||||||
BranchConditional 111 112 113
|
BranchConditional 102 103 104
|
||||||
112: Label
|
|
||||||
114: 23(ptr) AccessChain 9(color) 22
|
|
||||||
115: 6(float) Load 114
|
|
||||||
116: 6(float) FAdd 115 47
|
|
||||||
Store 114 116
|
|
||||||
Branch 74
|
|
||||||
113: Label
|
|
||||||
Branch 103
|
|
||||||
103: Label
|
103: Label
|
||||||
118: 23(ptr) AccessChain 9(color) 50
|
105: 24(ptr) AccessChain 9(color) 35
|
||||||
119: 6(float) Load 118
|
106: 6(float) Load 105
|
||||||
120: 6(float) Load 27(d4)
|
107: 6(float) FAdd 106 34
|
||||||
121: 29(bool) FOrdLessThan 119 120
|
108: 24(ptr) AccessChain 9(color) 35
|
||||||
SelectionMerge 123 None
|
Store 108 107
|
||||||
BranchConditional 121 122 129
|
109: 24(ptr) AccessChain 9(color) 35
|
||||||
122: Label
|
110: 6(float) Load 109
|
||||||
124: 6(float) Load 27(d4)
|
111: 6(float) Load 28(d4)
|
||||||
125: 23(ptr) AccessChain 9(color) 50
|
112: 30(bool) FOrdLessThan 110 111
|
||||||
126: 6(float) Load 125
|
SelectionMerge 114 None
|
||||||
127: 6(float) FAdd 126 124
|
BranchConditional 112 113 114
|
||||||
128: 23(ptr) AccessChain 9(color) 50
|
113: Label
|
||||||
Store 128 127
|
115: 24(ptr) AccessChain 9(color) 23
|
||||||
Branch 123
|
116: 6(float) Load 115
|
||||||
129: Label
|
117: 6(float) FAdd 116 48
|
||||||
130: 6(float) Load 27(d4)
|
Store 115 117
|
||||||
131: 23(ptr) AccessChain 9(color) 22
|
Branch 76
|
||||||
132: 6(float) Load 131
|
114: Label
|
||||||
133: 6(float) FAdd 132 130
|
Branch 104
|
||||||
134: 23(ptr) AccessChain 9(color) 22
|
104: Label
|
||||||
Store 134 133
|
119: 24(ptr) AccessChain 9(color) 51
|
||||||
Branch 123
|
120: 6(float) Load 119
|
||||||
|
121: 6(float) Load 28(d4)
|
||||||
|
122: 30(bool) FOrdLessThan 120 121
|
||||||
|
SelectionMerge 124 None
|
||||||
|
BranchConditional 122 123 130
|
||||||
123: Label
|
123: Label
|
||||||
Branch 74
|
125: 6(float) Load 28(d4)
|
||||||
|
126: 24(ptr) AccessChain 9(color) 51
|
||||||
|
127: 6(float) Load 126
|
||||||
|
128: 6(float) FAdd 127 125
|
||||||
|
129: 24(ptr) AccessChain 9(color) 51
|
||||||
|
Store 129 128
|
||||||
|
Branch 124
|
||||||
|
130: Label
|
||||||
|
131: 6(float) Load 28(d4)
|
||||||
|
132: 24(ptr) AccessChain 9(color) 23
|
||||||
|
133: 6(float) Load 132
|
||||||
|
134: 6(float) FAdd 133 131
|
||||||
|
135: 24(ptr) AccessChain 9(color) 23
|
||||||
|
Store 135 134
|
||||||
|
Branch 124
|
||||||
|
124: Label
|
||||||
|
Branch 76
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@ -216,29 +216,29 @@ Linked fragment stage:
|
|||||||
Branch 121
|
Branch 121
|
||||||
121: Label
|
121: Label
|
||||||
Store 153(i) 154
|
Store 153(i) 154
|
||||||
Branch 158
|
Branch 155
|
||||||
155: Label
|
155: Label
|
||||||
|
159: 9(int) Load 153(i)
|
||||||
|
162: 161(bool) SLessThan 159 160
|
||||||
|
LoopMerge 157 158 None
|
||||||
|
BranchConditional 162 156 157
|
||||||
|
156: Label
|
||||||
163: 9(int) Load 60(c)
|
163: 9(int) Load 60(c)
|
||||||
SelectionMerge 167 None
|
SelectionMerge 167 None
|
||||||
Switch 163 166
|
Switch 163 166
|
||||||
case 1: 164
|
case 1: 164
|
||||||
case 2: 165
|
case 2: 165
|
||||||
156: Label
|
157: Label
|
||||||
211: 9(int) Load 60(c)
|
211: 9(int) Load 60(c)
|
||||||
SelectionMerge 214 None
|
SelectionMerge 214 None
|
||||||
Switch 211 214
|
Switch 211 214
|
||||||
case 1: 212
|
case 1: 212
|
||||||
case 2: 213
|
case 2: 213
|
||||||
157: Label
|
158: Label
|
||||||
209: 9(int) Load 153(i)
|
209: 9(int) Load 153(i)
|
||||||
210: 9(int) IAdd 209 63
|
210: 9(int) IAdd 209 63
|
||||||
Store 153(i) 210
|
Store 153(i) 210
|
||||||
Branch 158
|
Branch 155
|
||||||
158: Label
|
|
||||||
159: 9(int) Load 153(i)
|
|
||||||
162: 161(bool) SLessThan 159 160
|
|
||||||
LoopMerge 156 157 None
|
|
||||||
BranchConditional 162 155 156
|
|
||||||
164: Label
|
164: Label
|
||||||
168: 6(float) Load 73(x)
|
168: 6(float) Load 73(x)
|
||||||
169: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 168
|
169: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 168
|
||||||
@ -246,8 +246,13 @@ Linked fragment stage:
|
|||||||
171: 6(float) FAdd 170 169
|
171: 6(float) FAdd 170 169
|
||||||
Store 71(f) 171
|
Store 71(f) 171
|
||||||
Store 172(j) 173
|
Store 172(j) 173
|
||||||
Branch 177
|
Branch 174
|
||||||
174: Label
|
174: Label
|
||||||
|
178: 9(int) Load 172(j)
|
||||||
|
180: 161(bool) SLessThan 178 179
|
||||||
|
LoopMerge 176 177 None
|
||||||
|
BranchConditional 180 175 176
|
||||||
|
175: Label
|
||||||
181: 6(float) Load 71(f)
|
181: 6(float) Load 71(f)
|
||||||
182: 6(float) FAdd 181 47
|
182: 6(float) FAdd 181 47
|
||||||
Store 71(f) 182
|
Store 71(f) 182
|
||||||
@ -255,22 +260,17 @@ Linked fragment stage:
|
|||||||
185: 161(bool) FOrdLessThan 183 184
|
185: 161(bool) FOrdLessThan 183 184
|
||||||
SelectionMerge 187 None
|
SelectionMerge 187 None
|
||||||
BranchConditional 185 186 187
|
BranchConditional 185 186 187
|
||||||
175: Label
|
|
||||||
Branch 167
|
|
||||||
176: Label
|
176: Label
|
||||||
|
Branch 167
|
||||||
|
177: Label
|
||||||
189: 9(int) Load 172(j)
|
189: 9(int) Load 172(j)
|
||||||
190: 9(int) IAdd 189 63
|
190: 9(int) IAdd 189 63
|
||||||
Store 172(j) 190
|
Store 172(j) 190
|
||||||
Branch 177
|
Branch 174
|
||||||
177: Label
|
|
||||||
178: 9(int) Load 172(j)
|
|
||||||
180: 161(bool) SLessThan 178 179
|
|
||||||
LoopMerge 175 176 None
|
|
||||||
BranchConditional 180 174 175
|
|
||||||
186: Label
|
186: Label
|
||||||
Branch 175
|
|
||||||
187: Label
|
|
||||||
Branch 176
|
Branch 176
|
||||||
|
187: Label
|
||||||
|
Branch 177
|
||||||
165: Label
|
165: Label
|
||||||
192: 6(float) Load 73(x)
|
192: 6(float) Load 73(x)
|
||||||
193: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 192
|
193: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 192
|
||||||
@ -291,9 +291,9 @@ Linked fragment stage:
|
|||||||
SelectionMerge 207 None
|
SelectionMerge 207 None
|
||||||
BranchConditional 205 206 207
|
BranchConditional 205 206 207
|
||||||
206: Label
|
206: Label
|
||||||
Branch 156
|
|
||||||
207: Label
|
|
||||||
Branch 157
|
Branch 157
|
||||||
|
207: Label
|
||||||
|
Branch 158
|
||||||
212: Label
|
212: Label
|
||||||
215: 6(float) Load 73(x)
|
215: 6(float) Load 73(x)
|
||||||
216: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 215
|
216: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 215
|
||||||
|
|||||||
@ -44,27 +44,27 @@ Linked vertex stage:
|
|||||||
28(C): 7(ptr) Variable Function
|
28(C): 7(ptr) Variable Function
|
||||||
38(D): 7(ptr) Variable Function
|
38(D): 7(ptr) Variable Function
|
||||||
Store 8(i) 9
|
Store 8(i) 9
|
||||||
Branch 13
|
Branch 10
|
||||||
10: Label
|
10: Label
|
||||||
|
14: 6(int) Load 8(i)
|
||||||
|
17: 16(bool) SLessThan 14 15
|
||||||
|
LoopMerge 12 13 None
|
||||||
|
BranchConditional 17 11 12
|
||||||
|
11: Label
|
||||||
Store 18(A) 19
|
Store 18(A) 19
|
||||||
20: 6(int) Load 8(i)
|
20: 6(int) Load 8(i)
|
||||||
22: 6(int) SMod 20 21
|
22: 6(int) SMod 20 21
|
||||||
23: 16(bool) IEqual 22 9
|
23: 16(bool) IEqual 22 9
|
||||||
SelectionMerge 25 None
|
SelectionMerge 25 None
|
||||||
BranchConditional 23 24 25
|
BranchConditional 23 24 25
|
||||||
11: Label
|
12: Label
|
||||||
Store 38(D) 39
|
Store 38(D) 39
|
||||||
Return
|
Return
|
||||||
12: Label
|
|
||||||
Branch 13
|
|
||||||
13: Label
|
13: Label
|
||||||
14: 6(int) Load 8(i)
|
Branch 10
|
||||||
17: 16(bool) SLessThan 14 15
|
|
||||||
LoopMerge 11 12 None
|
|
||||||
BranchConditional 17 10 11
|
|
||||||
24: Label
|
24: Label
|
||||||
Store 26(B) 21
|
Store 26(B) 21
|
||||||
Branch 12
|
Branch 13
|
||||||
27: Label
|
27: Label
|
||||||
Store 28(C) 21
|
Store 28(C) 21
|
||||||
Branch 25
|
Branch 25
|
||||||
@ -76,7 +76,7 @@ Linked vertex stage:
|
|||||||
BranchConditional 32 33 34
|
BranchConditional 32 33 34
|
||||||
33: Label
|
33: Label
|
||||||
Store 26(B) 21
|
Store 26(B) 21
|
||||||
Branch 11
|
Branch 12
|
||||||
35: Label
|
35: Label
|
||||||
Store 28(C) 21
|
Store 28(C) 21
|
||||||
Branch 34
|
Branch 34
|
||||||
@ -84,5 +84,5 @@ Linked vertex stage:
|
|||||||
36: 6(int) Load 8(i)
|
36: 6(int) Load 8(i)
|
||||||
37: 6(int) IAdd 36 19
|
37: 6(int) IAdd 36 19
|
||||||
Store 8(i) 37
|
Store 8(i) 37
|
||||||
Branch 12
|
Branch 13
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@ -33,19 +33,19 @@ Linked vertex stage:
|
|||||||
5: Label
|
5: Label
|
||||||
8(i): 7(ptr) Variable Function
|
8(i): 7(ptr) Variable Function
|
||||||
Store 8(i) 9
|
Store 8(i) 9
|
||||||
Branch 13
|
Branch 10
|
||||||
10: Label
|
10: Label
|
||||||
|
14: 6(int) Load 8(i)
|
||||||
|
17: 16(bool) SLessThan 14 15
|
||||||
|
LoopMerge 12 13 None
|
||||||
|
BranchConditional 17 11 12
|
||||||
|
11: Label
|
||||||
18: 6(int) Load 8(i)
|
18: 6(int) Load 8(i)
|
||||||
20: 6(int) IAdd 18 19
|
20: 6(int) IAdd 18 19
|
||||||
Store 8(i) 20
|
Store 8(i) 20
|
||||||
Branch 12
|
|
||||||
11: Label
|
|
||||||
Return
|
|
||||||
12: Label
|
|
||||||
Branch 13
|
Branch 13
|
||||||
|
12: Label
|
||||||
|
Return
|
||||||
13: Label
|
13: Label
|
||||||
14: 6(int) Load 8(i)
|
Branch 10
|
||||||
17: 16(bool) SLessThan 14 15
|
|
||||||
LoopMerge 11 12 None
|
|
||||||
BranchConditional 17 10 11
|
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@ -41,24 +41,24 @@ Linked fragment stage:
|
|||||||
9(color): 8(ptr) Variable Function
|
9(color): 8(ptr) Variable Function
|
||||||
12: 7(fvec4) Load 11(BaseColor)
|
12: 7(fvec4) Load 11(BaseColor)
|
||||||
Store 9(color) 12
|
Store 9(color) 12
|
||||||
Branch 16
|
Branch 13
|
||||||
13: Label
|
13: Label
|
||||||
29: 7(fvec4) Load 28(bigColor)
|
|
||||||
30: 7(fvec4) Load 9(color)
|
|
||||||
31: 7(fvec4) FAdd 30 29
|
|
||||||
Store 9(color) 31
|
|
||||||
Branch 15
|
|
||||||
14: Label
|
|
||||||
34: 7(fvec4) Load 9(color)
|
|
||||||
Store 33(gl_FragColor) 34
|
|
||||||
Return
|
|
||||||
15: Label
|
|
||||||
Branch 16
|
|
||||||
16: Label
|
|
||||||
20: 19(ptr) AccessChain 9(color) 18
|
20: 19(ptr) AccessChain 9(color) 18
|
||||||
21: 6(float) Load 20
|
21: 6(float) Load 20
|
||||||
24: 6(float) Load 23(d)
|
24: 6(float) Load 23(d)
|
||||||
26: 25(bool) FOrdLessThan 21 24
|
26: 25(bool) FOrdLessThan 21 24
|
||||||
LoopMerge 14 15 None
|
LoopMerge 15 16 None
|
||||||
BranchConditional 26 13 14
|
BranchConditional 26 14 15
|
||||||
|
14: Label
|
||||||
|
29: 7(fvec4) Load 28(bigColor)
|
||||||
|
30: 7(fvec4) Load 9(color)
|
||||||
|
31: 7(fvec4) FAdd 30 29
|
||||||
|
Store 9(color) 31
|
||||||
|
Branch 16
|
||||||
|
15: Label
|
||||||
|
34: 7(fvec4) Load 9(color)
|
||||||
|
Store 33(gl_FragColor) 34
|
||||||
|
Return
|
||||||
|
16: Label
|
||||||
|
Branch 13
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|||||||
@ -2,5 +2,8 @@
|
|||||||
layout(location=0) out highp int r;
|
layout(location=0) out highp int r;
|
||||||
void main() {
|
void main() {
|
||||||
int i;
|
int i;
|
||||||
|
// This infinite loop results in bad SPIR-V generated, since the merge block
|
||||||
|
// is dropped as unreachable. It is still useful for testing the rest of the
|
||||||
|
// code generation.
|
||||||
for (i=0; ; i++) { r = i; }
|
for (i=0; ; i++) { r = i; }
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user