Merge pull request #624 from steve-lunarg/remapper-strip-removed
WIP: Remapper: remove debug info for IDs stripped in other passes
This commit is contained in:
commit
e6cbc5b19d
@ -327,12 +327,10 @@ namespace spv {
|
||||
bound(maxBound); // reset header ID bound to as big as it now needs to be
|
||||
}
|
||||
|
||||
// Mark debug instructions for stripping
|
||||
void spirvbin_t::stripDebug()
|
||||
{
|
||||
if ((options & STRIP) == 0)
|
||||
return;
|
||||
|
||||
// build local Id and name maps
|
||||
// Strip instructions in the stripOp set: debug info.
|
||||
process(
|
||||
[&](spv::Op opCode, unsigned start) {
|
||||
// remember opcodes we want to strip later
|
||||
@ -343,6 +341,32 @@ namespace spv {
|
||||
op_fn_nop);
|
||||
}
|
||||
|
||||
// Mark instructions that refer to now-removed IDs for stripping
|
||||
void spirvbin_t::stripDeadRefs()
|
||||
{
|
||||
process(
|
||||
[&](spv::Op opCode, unsigned start) {
|
||||
// strip opcodes pointing to removed data
|
||||
switch (opCode) {
|
||||
case spv::OpName:
|
||||
case spv::OpMemberName:
|
||||
case spv::OpDecorate:
|
||||
case spv::OpMemberDecorate:
|
||||
if (idPosR.find(asId(start+1)) == idPosR.end())
|
||||
stripInst(start);
|
||||
break;
|
||||
default:
|
||||
break; // leave it alone
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
op_fn_nop);
|
||||
|
||||
strip();
|
||||
}
|
||||
|
||||
// Update local maps of ID, type, etc positions
|
||||
void spirvbin_t::buildLocalMaps()
|
||||
{
|
||||
msg(2, 2, std::string("build local maps: "));
|
||||
@ -351,7 +375,6 @@ namespace spv {
|
||||
idMapL.clear();
|
||||
// preserve nameMap, so we don't clear that.
|
||||
fnPos.clear();
|
||||
fnPosDCE.clear();
|
||||
fnCalls.clear();
|
||||
typeConstPos.clear();
|
||||
idPosR.clear();
|
||||
@ -366,10 +389,6 @@ namespace spv {
|
||||
// build local Id and name maps
|
||||
process(
|
||||
[&](spv::Op opCode, unsigned start) {
|
||||
// remember opcodes we want to strip later
|
||||
if ((options & STRIP) && isStripOp(opCode))
|
||||
stripInst(start);
|
||||
|
||||
unsigned word = start+1;
|
||||
spv::Id typeId = spv::NoResult;
|
||||
|
||||
@ -957,7 +976,6 @@ namespace spv {
|
||||
if (call_it == fnCalls.end() || call_it->second == 0) {
|
||||
changed = true;
|
||||
stripRange.push_back(fn->second);
|
||||
fnPosDCE.insert(*fn);
|
||||
|
||||
// decrease counts of called functions
|
||||
process(
|
||||
@ -1011,11 +1029,15 @@ namespace spv {
|
||||
// Remove single-use function variables + associated decorations and names
|
||||
process(
|
||||
[&](spv::Op opCode, unsigned start) {
|
||||
if ((opCode == spv::OpVariable && varUseCount[asId(start+2)] == 1) ||
|
||||
(opCode == spv::OpDecorate && varUseCount[asId(start+1)] == 1) ||
|
||||
(opCode == spv::OpName && varUseCount[asId(start+1)] == 1)) {
|
||||
stripInst(start);
|
||||
}
|
||||
spv::Id id = spv::NoResult;
|
||||
if (opCode == spv::OpVariable)
|
||||
id = asId(start+2);
|
||||
if (opCode == spv::OpDecorate || opCode == spv::OpName)
|
||||
id = asId(start+1);
|
||||
|
||||
if (id != spv::NoResult && varUseCount[id] == 1)
|
||||
stripInst(start);
|
||||
|
||||
return true;
|
||||
},
|
||||
op_fn_nop);
|
||||
@ -1276,25 +1298,31 @@ namespace spv {
|
||||
// Set up opcode tables from SpvDoc
|
||||
spv::Parameterize();
|
||||
|
||||
validate(); // validate header
|
||||
buildLocalMaps();
|
||||
validate(); // validate header
|
||||
buildLocalMaps(); // build ID maps
|
||||
|
||||
msg(3, 4, std::string("ID bound: ") + std::to_string(bound()));
|
||||
|
||||
if (options & STRIP) stripDebug();
|
||||
strip(); // strip out data we decided to eliminate
|
||||
if (options & OPT_LOADSTORE) optLoadStore();
|
||||
if (options & OPT_FWD_LS) forwardLoadStores();
|
||||
if (options & DCE_FUNCS) dceFuncs();
|
||||
if (options & DCE_VARS) dceVars();
|
||||
if (options & DCE_TYPES) dceTypes();
|
||||
strip(); // strip out data we decided to eliminate
|
||||
|
||||
strip(); // strip out data we decided to eliminate
|
||||
stripDeadRefs(); // remove references to things we DCEed
|
||||
// after the last strip, we must clean any debug info referring to now-deleted data
|
||||
|
||||
if (options & MAP_TYPES) mapTypeConst();
|
||||
if (options & MAP_NAMES) mapNames();
|
||||
if (options & MAP_FUNCS) mapFnBodies();
|
||||
|
||||
mapRemainder(); // map any unmapped IDs
|
||||
applyMap(); // Now remap each shader to the new IDs we've come up with
|
||||
if (options & MAP_ALL) {
|
||||
mapRemainder(); // map any unmapped IDs
|
||||
applyMap(); // Now remap each shader to the new IDs we've come up with
|
||||
}
|
||||
}
|
||||
|
||||
// remap from a memory image
|
||||
|
@ -239,7 +239,8 @@ private:
|
||||
|
||||
void applyMap(); // remap per local name map
|
||||
void mapRemainder(); // map any IDs we haven't touched yet
|
||||
void stripDebug(); // strip debug info
|
||||
void stripDebug(); // strip all debug info
|
||||
void stripDeadRefs(); // strips debug info for now-dead references after DCE
|
||||
void strip(); // remove debug symbols
|
||||
|
||||
std::vector<spirword_t> spv; // SPIR words
|
||||
@ -264,7 +265,6 @@ private:
|
||||
// Function start and end. use unordered_map because we'll have
|
||||
// many fewer functions than IDs.
|
||||
std::unordered_map<spv::Id, range_t> fnPos;
|
||||
std::unordered_map<spv::Id, range_t> fnPosDCE; // deleted functions
|
||||
|
||||
// Which functions are called, anywhere in the module, with a call count
|
||||
std::unordered_map<spv::Id, int> fnCalls;
|
||||
|
@ -3,34 +3,33 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 19
|
||||
// Id's are bound by 22
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 14 16
|
||||
EntryPoint Fragment 4 "main" 17 19
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
Name 4 "main"
|
||||
Name 9 "dead_fn("
|
||||
Name 14 "outf4"
|
||||
Name 16 "inf"
|
||||
Name 17 "outf4"
|
||||
Name 19 "inf"
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 3
|
||||
8: TypeFunction 7(fvec3)
|
||||
10: 6(float) Constant 0
|
||||
11: 7(fvec3) ConstantComposite 10 10 10
|
||||
12: TypeVector 6(float) 4
|
||||
13: TypePointer Output 12(fvec4)
|
||||
14(outf4): 13(ptr) Variable Output
|
||||
15: TypePointer Input 6(float)
|
||||
16(inf): 15(ptr) Variable Input
|
||||
11: 6(float) Constant 0
|
||||
12: 7(fvec3) ConstantComposite 11 11 11
|
||||
15: TypeVector 6(float) 4
|
||||
16: TypePointer Output 15(fvec4)
|
||||
17(outf4): 16(ptr) Variable Output
|
||||
18: TypePointer Input 6(float)
|
||||
19(inf): 18(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
17: 6(float) Load 16(inf)
|
||||
18: 12(fvec4) CompositeConstruct 17 17 17 17
|
||||
Store 14(outf4) 18
|
||||
20: 6(float) Load 19(inf)
|
||||
21: 15(fvec4) CompositeConstruct 20 20 20 20
|
||||
Store 17(outf4) 21
|
||||
Return
|
||||
FunctionEnd
|
||||
|
@ -3,18 +3,18 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 20
|
||||
// Id's are bound by 22
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 15 17
|
||||
EntryPoint Fragment 4 "main" 17 19
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
Name 4 "main"
|
||||
Name 9 "dead_fn("
|
||||
Name 15 "outf4"
|
||||
Name 17 "inf"
|
||||
Name 17 "outf4"
|
||||
Name 19 "inf"
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
@ -22,16 +22,16 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
8: TypeFunction 7(fvec3)
|
||||
11: 6(float) Constant 0
|
||||
12: 7(fvec3) ConstantComposite 11 11 11
|
||||
13: TypeVector 6(float) 4
|
||||
14: TypePointer Output 13(fvec4)
|
||||
15(outf4): 14(ptr) Variable Output
|
||||
16: TypePointer Input 6(float)
|
||||
17(inf): 16(ptr) Variable Input
|
||||
15: TypeVector 6(float) 4
|
||||
16: TypePointer Output 15(fvec4)
|
||||
17(outf4): 16(ptr) Variable Output
|
||||
18: TypePointer Input 6(float)
|
||||
19(inf): 18(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
18: 6(float) Load 17(inf)
|
||||
19: 13(fvec4) CompositeConstruct 18 18 18 18
|
||||
Store 15(outf4) 19
|
||||
20: 6(float) Load 19(inf)
|
||||
21: 15(fvec4) CompositeConstruct 20 20 20 20
|
||||
Store 17(outf4) 21
|
||||
Return
|
||||
FunctionEnd
|
||||
9(dead_fn(): 7(fvec3) Function None 8
|
||||
|
@ -3,12 +3,12 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 20
|
||||
// Id's are bound by 22
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 15 17
|
||||
EntryPoint Fragment 4 "main" 17 19
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
@ -17,16 +17,16 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
8: TypeFunction 7(fvec3)
|
||||
11: 6(float) Constant 0
|
||||
12: 7(fvec3) ConstantComposite 11 11 11
|
||||
13: TypeVector 6(float) 4
|
||||
14: TypePointer Output 13(fvec4)
|
||||
15: 14(ptr) Variable Output
|
||||
16: TypePointer Input 6(float)
|
||||
17: 16(ptr) Variable Input
|
||||
15: TypeVector 6(float) 4
|
||||
16: TypePointer Output 15(fvec4)
|
||||
17: 16(ptr) Variable Output
|
||||
18: TypePointer Input 6(float)
|
||||
19: 18(ptr) Variable Input
|
||||
4: 2 Function None 3
|
||||
5: Label
|
||||
18: 6(float) Load 17
|
||||
19: 13(fvec4) CompositeConstruct 18 18 18 18
|
||||
Store 15 19
|
||||
20: 6(float) Load 19
|
||||
21: 15(fvec4) CompositeConstruct 20 20 20 20
|
||||
Store 17 21
|
||||
Return
|
||||
FunctionEnd
|
||||
9: 7(fvec3) Function None 8
|
||||
|
@ -3,7 +3,7 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 190
|
||||
// Id's are bound by 191
|
||||
|
||||
Capability Shader
|
||||
Capability Sampled1D
|
||||
@ -57,9 +57,9 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented
|
||||
Name 173 "psout"
|
||||
Name 180 "Color"
|
||||
Name 184 "Depth"
|
||||
Name 187 "g_sSamp2d"
|
||||
Name 188 "g_sSamp2D_b"
|
||||
Name 189 "g_tTex1df4a"
|
||||
Name 188 "g_sSamp2d"
|
||||
Name 189 "g_sSamp2D_b"
|
||||
Name 190 "g_tTex1df4a"
|
||||
Decorate 41(g_tTex1df4) DescriptorSet 0
|
||||
Decorate 41(g_tTex1df4) Binding 0
|
||||
Decorate 45(g_sSamp) DescriptorSet 0
|
||||
@ -77,10 +77,10 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented
|
||||
Decorate 165(g_tTexcdu4) DescriptorSet 0
|
||||
Decorate 180(Color) Location 0
|
||||
Decorate 184(Depth) BuiltIn FragDepth
|
||||
Decorate 187(g_sSamp2d) DescriptorSet 0
|
||||
Decorate 188(g_sSamp2D_b) DescriptorSet 0
|
||||
Decorate 189(g_tTex1df4a) DescriptorSet 0
|
||||
Decorate 189(g_tTex1df4a) Binding 1
|
||||
Decorate 188(g_sSamp2d) DescriptorSet 0
|
||||
Decorate 189(g_sSamp2D_b) DescriptorSet 0
|
||||
Decorate 190(g_tTex1df4a) DescriptorSet 0
|
||||
Decorate 190(g_tTex1df4a) Binding 1
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 1
|
||||
@ -184,9 +184,9 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented
|
||||
180(Color): 179(ptr) Variable Output
|
||||
183: TypePointer Output 35(float)
|
||||
184(Depth): 183(ptr) Variable Output
|
||||
187(g_sSamp2d): 44(ptr) Variable UniformConstant
|
||||
188(g_sSamp2D_b): 44(ptr) Variable UniformConstant
|
||||
189(g_tTex1df4a): 40(ptr) Variable UniformConstant
|
||||
188(g_sSamp2d): 44(ptr) Variable UniformConstant
|
||||
189(g_sSamp2D_b): 44(ptr) Variable UniformConstant
|
||||
190(g_tTex1df4a): 40(ptr) Variable UniformConstant
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
9(mtest): 8(ptr) Variable Function
|
||||
|
@ -3,7 +3,7 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 190
|
||||
// Id's are bound by 191
|
||||
|
||||
Capability Shader
|
||||
Capability Sampled1D
|
||||
@ -28,10 +28,10 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented
|
||||
Decorate 165 DescriptorSet 0
|
||||
Decorate 180 Location 0
|
||||
Decorate 184 BuiltIn FragDepth
|
||||
Decorate 187 DescriptorSet 0
|
||||
Decorate 188 DescriptorSet 0
|
||||
Decorate 189 DescriptorSet 0
|
||||
Decorate 189 Binding 1
|
||||
Decorate 190 DescriptorSet 0
|
||||
Decorate 190 Binding 1
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 1
|
||||
@ -135,9 +135,9 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented
|
||||
180: 179(ptr) Variable Output
|
||||
183: TypePointer Output 35(float)
|
||||
184: 183(ptr) Variable Output
|
||||
187: 44(ptr) Variable UniformConstant
|
||||
188: 44(ptr) Variable UniformConstant
|
||||
189: 40(ptr) Variable UniformConstant
|
||||
189: 44(ptr) Variable UniformConstant
|
||||
190: 40(ptr) Variable UniformConstant
|
||||
4: 2 Function None 3
|
||||
5: Label
|
||||
9: 8(ptr) Variable Function
|
||||
|
@ -1,13 +1,13 @@
|
||||
remap.hlsl.templatetypes.none.frag
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 149
|
||||
// Id's are bound by 150
|
||||
|
||||
Capability Shader
|
||||
Capability Float64
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 146 148
|
||||
EntryPoint Fragment 4 "main" 146 149
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "main"
|
||||
Name 9 "r00"
|
||||
@ -39,9 +39,9 @@ remap.hlsl.templatetypes.none.frag
|
||||
Name 136 "r65"
|
||||
Name 141 "r66"
|
||||
Name 146 "@entryPointOutput"
|
||||
Name 148 "input"
|
||||
Name 149 "input"
|
||||
Decorate 146(@entryPointOutput) Location 0
|
||||
Decorate 148(input) Location 0
|
||||
Decorate 149(input) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
@ -157,8 +157,8 @@ remap.hlsl.templatetypes.none.frag
|
||||
144: 139 ConstantComposite 72 126 142 143
|
||||
145: TypePointer Output 6(float)
|
||||
146(@entryPointOutput): 145(ptr) Variable Output
|
||||
147: TypePointer Input 7(fvec4)
|
||||
148(input): 147(ptr) Variable Input
|
||||
148: TypePointer Input 7(fvec4)
|
||||
149(input): 148(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
9(r00): 8(ptr) Variable Function
|
||||
|
@ -3,12 +3,12 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 82
|
||||
// Id's are bound by 86
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 50 69 71
|
||||
EntryPoint Fragment 4 "main" 53 73 75
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
Name 4 "main"
|
||||
@ -18,13 +18,13 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
Name 13 "bound"
|
||||
Name 17 "r"
|
||||
Name 19 "x"
|
||||
Name 42 "param"
|
||||
Name 50 "ini4"
|
||||
Name 69 "outf4"
|
||||
Name 71 "inf"
|
||||
Name 74 "param"
|
||||
Name 44 "param"
|
||||
Name 53 "ini4"
|
||||
Name 73 "outf4"
|
||||
Name 75 "inf"
|
||||
Name 78 "param"
|
||||
Decorate 50(ini4) Flat
|
||||
Name 82 "param"
|
||||
Decorate 53(ini4) Flat
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 1
|
||||
@ -37,35 +37,35 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
28: TypeBool
|
||||
30: 8(float) Constant 1056964608
|
||||
34: 6(int) Constant 1
|
||||
38: 6(int) Constant 2
|
||||
48: TypeVector 6(int) 4
|
||||
49: TypePointer Input 48(ivec4)
|
||||
50(ini4): 49(ptr) Variable Input
|
||||
51: TypeInt 32 0
|
||||
52: 51(int) Constant 1
|
||||
53: TypePointer Input 6(int)
|
||||
56: 51(int) Constant 2
|
||||
61: 51(int) Constant 0
|
||||
67: TypeVector 8(float) 4
|
||||
68: TypePointer Output 67(fvec4)
|
||||
69(outf4): 68(ptr) Variable Output
|
||||
70: TypePointer Input 8(float)
|
||||
71(inf): 70(ptr) Variable Input
|
||||
40: 6(int) Constant 2
|
||||
51: TypeVector 6(int) 4
|
||||
52: TypePointer Input 51(ivec4)
|
||||
53(ini4): 52(ptr) Variable Input
|
||||
54: TypeInt 32 0
|
||||
55: 54(int) Constant 1
|
||||
56: TypePointer Input 6(int)
|
||||
59: 54(int) Constant 2
|
||||
64: 54(int) Constant 0
|
||||
71: TypeVector 8(float) 4
|
||||
72: TypePointer Output 71(fvec4)
|
||||
73(outf4): 72(ptr) Variable Output
|
||||
74: TypePointer Input 8(float)
|
||||
75(inf): 74(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
74(param): 7(ptr) Variable Function
|
||||
78(param): 7(ptr) Variable Function
|
||||
72: 8(float) Load 71(inf)
|
||||
73: 6(int) ConvertFToS 72
|
||||
Store 74(param) 73
|
||||
75: 8(float) FunctionCall 11(Test1(i1;) 74(param)
|
||||
76: 8(float) Load 71(inf)
|
||||
82(param): 7(ptr) Variable Function
|
||||
76: 8(float) Load 75(inf)
|
||||
77: 6(int) ConvertFToS 76
|
||||
Store 78(param) 77
|
||||
79: 8(float) FunctionCall 14(Test2(i1;) 78(param)
|
||||
80: 8(float) FAdd 75 79
|
||||
81: 67(fvec4) CompositeConstruct 80 80 80 80
|
||||
Store 69(outf4) 81
|
||||
79: 8(float) FunctionCall 11(Test1(i1;) 78(param)
|
||||
80: 8(float) Load 75(inf)
|
||||
81: 6(int) ConvertFToS 80
|
||||
Store 82(param) 81
|
||||
83: 8(float) FunctionCall 14(Test2(i1;) 82(param)
|
||||
84: 8(float) FAdd 79 83
|
||||
85: 71(fvec4) CompositeConstruct 84 84 84 84
|
||||
Store 73(outf4) 85
|
||||
Return
|
||||
FunctionEnd
|
||||
11(Test1(i1;): 8(float) Function None 9
|
||||
@ -101,31 +101,31 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
14(Test2(i1;): 8(float) Function None 9
|
||||
13(bound): 7(ptr) FunctionParameter
|
||||
15: Label
|
||||
42(param): 7(ptr) Variable Function
|
||||
37: 6(int) Load 13(bound)
|
||||
39: 28(bool) SGreaterThan 37 38
|
||||
SelectionMerge 41 None
|
||||
BranchConditional 39 40 45
|
||||
40: Label
|
||||
43: 6(int) Load 13(bound)
|
||||
Store 42(param) 43
|
||||
44: 8(float) FunctionCall 11(Test1(i1;) 42(param)
|
||||
ReturnValue 44
|
||||
45: Label
|
||||
46: 6(int) Load 13(bound)
|
||||
47: 6(int) IMul 46 38
|
||||
54: 53(ptr) AccessChain 50(ini4) 52
|
||||
55: 6(int) Load 54
|
||||
57: 53(ptr) AccessChain 50(ini4) 56
|
||||
44(param): 7(ptr) Variable Function
|
||||
39: 6(int) Load 13(bound)
|
||||
41: 28(bool) SGreaterThan 39 40
|
||||
SelectionMerge 43 None
|
||||
BranchConditional 41 42 48
|
||||
42: Label
|
||||
45: 6(int) Load 13(bound)
|
||||
Store 44(param) 45
|
||||
46: 8(float) FunctionCall 11(Test1(i1;) 44(param)
|
||||
ReturnValue 46
|
||||
48: Label
|
||||
49: 6(int) Load 13(bound)
|
||||
50: 6(int) IMul 49 40
|
||||
57: 56(ptr) AccessChain 53(ini4) 55
|
||||
58: 6(int) Load 57
|
||||
59: 6(int) IMul 55 58
|
||||
60: 6(int) IAdd 47 59
|
||||
62: 53(ptr) AccessChain 50(ini4) 61
|
||||
63: 6(int) Load 62
|
||||
64: 6(int) IAdd 60 63
|
||||
65: 8(float) ConvertSToF 64
|
||||
ReturnValue 65
|
||||
41: Label
|
||||
66: 8(float) Undef
|
||||
ReturnValue 66
|
||||
60: 56(ptr) AccessChain 53(ini4) 59
|
||||
61: 6(int) Load 60
|
||||
62: 6(int) IMul 58 61
|
||||
63: 6(int) IAdd 50 62
|
||||
65: 56(ptr) AccessChain 53(ini4) 64
|
||||
66: 6(int) Load 65
|
||||
67: 6(int) IAdd 63 66
|
||||
68: 8(float) ConvertSToF 67
|
||||
ReturnValue 68
|
||||
43: Label
|
||||
70: 8(float) Undef
|
||||
ReturnValue 70
|
||||
FunctionEnd
|
||||
|
@ -3,12 +3,12 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 87
|
||||
// Id's are bound by 91
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 55 74 76
|
||||
EntryPoint Fragment 4 "main" 58 78 80
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 450
|
||||
Name 4 "main"
|
||||
@ -18,13 +18,13 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
Name 13 "bound"
|
||||
Name 17 "r"
|
||||
Name 19 "x"
|
||||
Name 47 "param"
|
||||
Name 55 "ini4"
|
||||
Name 74 "outf4"
|
||||
Name 76 "inf"
|
||||
Name 79 "param"
|
||||
Name 49 "param"
|
||||
Name 58 "ini4"
|
||||
Name 78 "outf4"
|
||||
Name 80 "inf"
|
||||
Name 83 "param"
|
||||
Decorate 55(ini4) Flat
|
||||
Name 87 "param"
|
||||
Decorate 58(ini4) Flat
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 1
|
||||
@ -38,36 +38,36 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
30: 8(float) Constant 1056964608
|
||||
34: 6(int) Constant 1
|
||||
36: 8(float) Constant 1045220557
|
||||
41: 6(int) Constant 2
|
||||
51: 6(int) Constant 4
|
||||
53: TypeVector 6(int) 4
|
||||
54: TypePointer Input 53(ivec4)
|
||||
55(ini4): 54(ptr) Variable Input
|
||||
56: TypeInt 32 0
|
||||
57: 56(int) Constant 1
|
||||
58: TypePointer Input 6(int)
|
||||
61: 56(int) Constant 2
|
||||
66: 56(int) Constant 0
|
||||
72: TypeVector 8(float) 4
|
||||
73: TypePointer Output 72(fvec4)
|
||||
74(outf4): 73(ptr) Variable Output
|
||||
75: TypePointer Input 8(float)
|
||||
76(inf): 75(ptr) Variable Input
|
||||
43: 6(int) Constant 2
|
||||
54: 6(int) Constant 4
|
||||
56: TypeVector 6(int) 4
|
||||
57: TypePointer Input 56(ivec4)
|
||||
58(ini4): 57(ptr) Variable Input
|
||||
59: TypeInt 32 0
|
||||
60: 59(int) Constant 1
|
||||
61: TypePointer Input 6(int)
|
||||
64: 59(int) Constant 2
|
||||
69: 59(int) Constant 0
|
||||
76: TypeVector 8(float) 4
|
||||
77: TypePointer Output 76(fvec4)
|
||||
78(outf4): 77(ptr) Variable Output
|
||||
79: TypePointer Input 8(float)
|
||||
80(inf): 79(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
79(param): 7(ptr) Variable Function
|
||||
83(param): 7(ptr) Variable Function
|
||||
77: 8(float) Load 76(inf)
|
||||
78: 6(int) ConvertFToS 77
|
||||
Store 79(param) 78
|
||||
80: 8(float) FunctionCall 11(Test1(i1;) 79(param)
|
||||
81: 8(float) Load 76(inf)
|
||||
87(param): 7(ptr) Variable Function
|
||||
81: 8(float) Load 80(inf)
|
||||
82: 6(int) ConvertFToS 81
|
||||
Store 83(param) 82
|
||||
84: 8(float) FunctionCall 14(Test2(i1;) 83(param)
|
||||
85: 8(float) FAdd 80 84
|
||||
86: 72(fvec4) CompositeConstruct 85 85 85 85
|
||||
Store 74(outf4) 86
|
||||
84: 8(float) FunctionCall 11(Test1(i1;) 83(param)
|
||||
85: 8(float) Load 80(inf)
|
||||
86: 6(int) ConvertFToS 85
|
||||
Store 87(param) 86
|
||||
88: 8(float) FunctionCall 14(Test2(i1;) 87(param)
|
||||
89: 8(float) FAdd 84 88
|
||||
90: 76(fvec4) CompositeConstruct 89 89 89 89
|
||||
Store 78(outf4) 90
|
||||
Return
|
||||
FunctionEnd
|
||||
11(Test1(i1;): 8(float) Function None 9
|
||||
@ -106,32 +106,32 @@ Warning, version 450 is not yet complete; most version-specific features are pre
|
||||
14(Test2(i1;): 8(float) Function None 9
|
||||
13(bound): 7(ptr) FunctionParameter
|
||||
15: Label
|
||||
47(param): 7(ptr) Variable Function
|
||||
40: 6(int) Load 13(bound)
|
||||
42: 28(bool) SGreaterThan 40 41
|
||||
SelectionMerge 44 None
|
||||
BranchConditional 42 43 49
|
||||
43: Label
|
||||
45: 6(int) Load 13(bound)
|
||||
46: 6(int) IMul 45 41
|
||||
Store 47(param) 46
|
||||
48: 8(float) FunctionCall 11(Test1(i1;) 47(param)
|
||||
ReturnValue 48
|
||||
49: Label
|
||||
50: 6(int) Load 13(bound)
|
||||
52: 6(int) IMul 50 51
|
||||
59: 58(ptr) AccessChain 55(ini4) 57
|
||||
60: 6(int) Load 59
|
||||
62: 58(ptr) AccessChain 55(ini4) 61
|
||||
49(param): 7(ptr) Variable Function
|
||||
42: 6(int) Load 13(bound)
|
||||
44: 28(bool) SGreaterThan 42 43
|
||||
SelectionMerge 46 None
|
||||
BranchConditional 44 45 52
|
||||
45: Label
|
||||
47: 6(int) Load 13(bound)
|
||||
48: 6(int) IMul 47 43
|
||||
Store 49(param) 48
|
||||
50: 8(float) FunctionCall 11(Test1(i1;) 49(param)
|
||||
ReturnValue 50
|
||||
52: Label
|
||||
53: 6(int) Load 13(bound)
|
||||
55: 6(int) IMul 53 54
|
||||
62: 61(ptr) AccessChain 58(ini4) 60
|
||||
63: 6(int) Load 62
|
||||
64: 6(int) IMul 60 63
|
||||
65: 6(int) IAdd 52 64
|
||||
67: 58(ptr) AccessChain 55(ini4) 66
|
||||
68: 6(int) Load 67
|
||||
69: 6(int) IAdd 65 68
|
||||
70: 8(float) ConvertSToF 69
|
||||
ReturnValue 70
|
||||
44: Label
|
||||
71: 8(float) Undef
|
||||
ReturnValue 71
|
||||
65: 61(ptr) AccessChain 58(ini4) 64
|
||||
66: 6(int) Load 65
|
||||
67: 6(int) IMul 63 66
|
||||
68: 6(int) IAdd 55 67
|
||||
70: 61(ptr) AccessChain 58(ini4) 69
|
||||
71: 6(int) Load 70
|
||||
72: 6(int) IAdd 68 71
|
||||
73: 8(float) ConvertSToF 72
|
||||
ReturnValue 73
|
||||
46: Label
|
||||
75: 8(float) Undef
|
||||
ReturnValue 75
|
||||
FunctionEnd
|
||||
|
@ -5,7 +5,7 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 44
|
||||
// Id's are bound by 48
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
@ -20,8 +20,8 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to
|
||||
Decorate 23(FragColor) RelaxedPrecision
|
||||
Decorate 23(FragColor) Location 0
|
||||
Decorate 29 RelaxedPrecision
|
||||
Decorate 35 RelaxedPrecision
|
||||
Decorate 41 RelaxedPrecision
|
||||
Decorate 36 RelaxedPrecision
|
||||
Decorate 43 RelaxedPrecision
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
@ -36,12 +36,12 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to
|
||||
23(FragColor): 22(ptr) Variable Output
|
||||
24: 10(int) Constant 0
|
||||
27: 6(float) Constant 0
|
||||
30: 10(int) Constant 1
|
||||
33: 6(float) Constant 1065353216
|
||||
36: 10(int) Constant 2
|
||||
39: 6(float) Constant 1073741824
|
||||
42: 6(float) Constant 3212836864
|
||||
43: 7(fvec4) ConstantComposite 42 42 42 42
|
||||
31: 10(int) Constant 1
|
||||
34: 6(float) Constant 1065353216
|
||||
38: 10(int) Constant 2
|
||||
41: 6(float) Constant 1073741824
|
||||
45: 6(float) Constant 3212836864
|
||||
46: 7(fvec4) ConstantComposite 45 45 45 45
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
13: 12(ptr) AccessChain 9(in0) 11
|
||||
@ -53,7 +53,7 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to
|
||||
case 1: 18
|
||||
case 2: 19
|
||||
20: Label
|
||||
Store 23(FragColor) 43
|
||||
Store 23(FragColor) 46
|
||||
Branch 21
|
||||
17: Label
|
||||
25: 12(ptr) AccessChain 9(in0) 24
|
||||
@ -63,18 +63,18 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to
|
||||
Store 23(FragColor) 29
|
||||
Branch 21
|
||||
18: Label
|
||||
31: 12(ptr) AccessChain 9(in0) 30
|
||||
32: 6(float) Load 31
|
||||
34: 6(float) FAdd 32 33
|
||||
35: 7(fvec4) CompositeConstruct 34 34 34 34
|
||||
Store 23(FragColor) 35
|
||||
32: 12(ptr) AccessChain 9(in0) 31
|
||||
33: 6(float) Load 32
|
||||
35: 6(float) FAdd 33 34
|
||||
36: 7(fvec4) CompositeConstruct 35 35 35 35
|
||||
Store 23(FragColor) 36
|
||||
Branch 21
|
||||
19: Label
|
||||
37: 12(ptr) AccessChain 9(in0) 36
|
||||
38: 6(float) Load 37
|
||||
40: 6(float) FAdd 38 39
|
||||
41: 7(fvec4) CompositeConstruct 40 40 40 40
|
||||
Store 23(FragColor) 41
|
||||
39: 12(ptr) AccessChain 9(in0) 38
|
||||
40: 6(float) Load 39
|
||||
42: 6(float) FAdd 40 41
|
||||
43: 7(fvec4) CompositeConstruct 42 42 42 42
|
||||
Store 23(FragColor) 43
|
||||
Branch 21
|
||||
21: Label
|
||||
Return
|
||||
|
Loading…
x
Reference in New Issue
Block a user