Emit debug info for buffer references
Using OpExtInstWithForwardRefs, the debug type information for buffer reference types can be emitted alongside the OpFowardPointer opcode.
This commit is contained in:
parent
996c5d3123
commit
81f7045aa0
3 changed files with 188 additions and 146 deletions
|
|
@ -182,6 +182,10 @@ Id Builder::makeForwardPointer(StorageClass storageClass)
|
||||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
module.mapInstruction(type);
|
module.mapInstruction(type);
|
||||||
|
|
||||||
|
if (emitNonSemanticShaderDebugInfo) {
|
||||||
|
const Id debugResultId = makeForwardPointerDebugType(storageClass);
|
||||||
|
debugId[type->getResultId()] = debugResultId;
|
||||||
|
}
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -204,6 +208,15 @@ Id Builder::makePointerFromForwardPointer(StorageClass storageClass, Id forwardP
|
||||||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
module.mapInstruction(type);
|
module.mapInstruction(type);
|
||||||
|
|
||||||
|
// If we are emitting nonsemantic debuginfo, we need to patch the debug pointer type
|
||||||
|
// that was emitted alongside the forward pointer, now that we have a pointee debug
|
||||||
|
// type for it to point to.
|
||||||
|
if (emitNonSemanticShaderDebugInfo) {
|
||||||
|
Instruction *debugForwardPointer = module.getInstruction(debugId[forwardPointerType]);
|
||||||
|
assert(debugId[pointee]);
|
||||||
|
debugForwardPointer->setIdOperand(2, debugId[pointee]);
|
||||||
|
}
|
||||||
|
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1045,6 +1058,29 @@ Id Builder::makePointerDebugType(StorageClass storageClass, Id const baseType)
|
||||||
return type->getResultId();
|
return type->getResultId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Emit a OpExtInstWithForwardRefs nonsemantic instruction for a pointer debug type
|
||||||
|
// where we don't have the pointee yet. Since we don't have the pointee yet, it just
|
||||||
|
// points to itself and we rely on patching it later.
|
||||||
|
Id Builder::makeForwardPointerDebugType(StorageClass storageClass)
|
||||||
|
{
|
||||||
|
const Id scID = makeUintConstant(storageClass);
|
||||||
|
|
||||||
|
this->addExtension(spv::E_SPV_KHR_relaxed_extended_instruction);
|
||||||
|
|
||||||
|
Instruction *type = new Instruction(getUniqueId(), makeVoidType(), OpExtInstWithForwardRefs);
|
||||||
|
type->addIdOperand(nonSemanticShaderDebugInfo);
|
||||||
|
type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypePointer);
|
||||||
|
type->addIdOperand(type->getResultId());
|
||||||
|
type->addIdOperand(scID);
|
||||||
|
type->addIdOperand(makeUintConstant(0));
|
||||||
|
|
||||||
|
groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypePointer].push_back(type);
|
||||||
|
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||||
|
module.mapInstruction(type);
|
||||||
|
|
||||||
|
return type->getResultId();
|
||||||
|
}
|
||||||
|
|
||||||
Id Builder::makeDebugSource(const Id fileName) {
|
Id Builder::makeDebugSource(const Id fileName) {
|
||||||
if (debugSourceId.find(fileName) != debugSourceId.end())
|
if (debugSourceId.find(fileName) != debugSourceId.end())
|
||||||
return debugSourceId[fileName];
|
return debugSourceId[fileName];
|
||||||
|
|
|
||||||
|
|
@ -235,6 +235,7 @@ public:
|
||||||
Id makeCompositeDebugType(std::vector<Id> const& memberTypes, char const*const name,
|
Id makeCompositeDebugType(std::vector<Id> const& memberTypes, char const*const name,
|
||||||
NonSemanticShaderDebugInfo100DebugCompositeType const tag, bool const isOpaqueType = false);
|
NonSemanticShaderDebugInfo100DebugCompositeType const tag, bool const isOpaqueType = false);
|
||||||
Id makePointerDebugType(StorageClass storageClass, Id const baseType);
|
Id makePointerDebugType(StorageClass storageClass, Id const baseType);
|
||||||
|
Id makeForwardPointerDebugType(StorageClass storageClass);
|
||||||
Id makeDebugSource(const Id fileName);
|
Id makeDebugSource(const Id fileName);
|
||||||
Id makeDebugCompilationUnit();
|
Id makeDebugCompilationUnit();
|
||||||
Id createDebugGlobalVariable(Id const type, char const*const name, Id const variable);
|
Id createDebugGlobalVariable(Id const type, char const*const name, Id const variable);
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,18 @@
|
||||||
spv.debuginfo.bufferref.glsl.frag
|
spv.debuginfo.bufferref.glsl.frag
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 8000b
|
// Generated by (magic number): 8000b
|
||||||
// Id's are bound by 142
|
// Id's are bound by 146
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
Capability PhysicalStorageBufferAddressesEXT
|
Capability PhysicalStorageBufferAddressesEXT
|
||||||
Extension "SPV_KHR_non_semantic_info"
|
Extension "SPV_KHR_non_semantic_info"
|
||||||
Extension "SPV_KHR_physical_storage_buffer"
|
Extension "SPV_KHR_physical_storage_buffer"
|
||||||
|
Extension "SPV_KHR_relaxed_extended_instruction"
|
||||||
Extension "SPV_KHR_storage_buffer_storage_class"
|
Extension "SPV_KHR_storage_buffer_storage_class"
|
||||||
1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
|
1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
|
||||||
3: ExtInstImport "GLSL.std.450"
|
3: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel PhysicalStorageBuffer64EXT GLSL450
|
MemoryModel PhysicalStorageBuffer64EXT GLSL450
|
||||||
EntryPoint Fragment 14 "main" 76 131
|
EntryPoint Fragment 14 "main" 82 135
|
||||||
ExecutionMode 14 OriginUpperLeft
|
ExecutionMode 14 OriginUpperLeft
|
||||||
2: String "spv.debuginfo.bufferref.glsl.frag"
|
2: String "spv.debuginfo.bufferref.glsl.frag"
|
||||||
8: String "uint"
|
8: String "uint"
|
||||||
|
|
@ -52,46 +53,47 @@ void main() {
|
||||||
out_fragColor = vec4(vertex_pos0, 1.0);
|
out_fragColor = vec4(vertex_pos0, 1.0);
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
31: String "Mesh"
|
33: String "positions"
|
||||||
34: String "float"
|
37: String "Mesh"
|
||||||
40: String "data"
|
40: String "float"
|
||||||
44: String "MeshVertexPositions"
|
46: String "data"
|
||||||
50: String "meshData"
|
49: String "MeshVertexPositions"
|
||||||
63: String "PerPass_meshes"
|
55: String "meshData"
|
||||||
69: String "perPass_meshes"
|
69: String "PerPass_meshes"
|
||||||
71: String "int"
|
75: String "perPass_meshes"
|
||||||
78: String "tri_idx0"
|
77: String "int"
|
||||||
94: String "vertex_pos0"
|
84: String "tri_idx0"
|
||||||
133: String "out_fragColor"
|
100: String "vertex_pos0"
|
||||||
|
137: String "out_fragColor"
|
||||||
SourceExtension "GL_EXT_buffer_reference"
|
SourceExtension "GL_EXT_buffer_reference"
|
||||||
Name 14 "main"
|
Name 14 "main"
|
||||||
Name 29 "Mesh"
|
Name 31 "Mesh"
|
||||||
MemberName 29(Mesh) 0 "positions"
|
MemberName 31(Mesh) 0 "positions"
|
||||||
Name 38 "MeshVertexPositions"
|
Name 44 "MeshVertexPositions"
|
||||||
MemberName 38(MeshVertexPositions) 0 "data"
|
MemberName 44(MeshVertexPositions) 0 "data"
|
||||||
Name 48 "meshData"
|
Name 53 "meshData"
|
||||||
Name 54 "Mesh"
|
Name 59 "Mesh"
|
||||||
MemberName 54(Mesh) 0 "positions"
|
MemberName 59(Mesh) 0 "positions"
|
||||||
Name 58 "PerPass_meshes"
|
Name 64 "PerPass_meshes"
|
||||||
MemberName 58(PerPass_meshes) 0 "data"
|
MemberName 64(PerPass_meshes) 0 "data"
|
||||||
Name 67 "perPass_meshes"
|
Name 73 "perPass_meshes"
|
||||||
Name 76 "tri_idx0"
|
Name 82 "tri_idx0"
|
||||||
Name 92 "vertex_pos0"
|
Name 98 "vertex_pos0"
|
||||||
Name 131 "out_fragColor"
|
Name 135 "out_fragColor"
|
||||||
Decorate 36 ArrayStride 4
|
Decorate 42 ArrayStride 4
|
||||||
MemberDecorate 38(MeshVertexPositions) 0 Offset 0
|
MemberDecorate 44(MeshVertexPositions) 0 Offset 0
|
||||||
Decorate 38(MeshVertexPositions) Block
|
Decorate 44(MeshVertexPositions) Block
|
||||||
MemberDecorate 54(Mesh) 0 Offset 0
|
MemberDecorate 59(Mesh) 0 Offset 0
|
||||||
Decorate 56 ArrayStride 8
|
Decorate 62 ArrayStride 8
|
||||||
MemberDecorate 58(PerPass_meshes) 0 NonWritable
|
MemberDecorate 64(PerPass_meshes) 0 NonWritable
|
||||||
MemberDecorate 58(PerPass_meshes) 0 Offset 0
|
MemberDecorate 64(PerPass_meshes) 0 Offset 0
|
||||||
Decorate 58(PerPass_meshes) Block
|
Decorate 64(PerPass_meshes) Block
|
||||||
Decorate 67(perPass_meshes) DescriptorSet 0
|
Decorate 73(perPass_meshes) DescriptorSet 0
|
||||||
Decorate 67(perPass_meshes) Binding 0
|
Decorate 73(perPass_meshes) Binding 0
|
||||||
Decorate 76(tri_idx0) Flat
|
Decorate 82(tri_idx0) Flat
|
||||||
Decorate 76(tri_idx0) Location 0
|
Decorate 82(tri_idx0) Location 0
|
||||||
Decorate 131(out_fragColor) Location 0
|
Decorate 135(out_fragColor) Location 0
|
||||||
Decorate 48(meshData) DecorationAliasedPointerEXT
|
Decorate 53(meshData) DecorationAliasedPointerEXT
|
||||||
4: TypeVoid
|
4: TypeVoid
|
||||||
5: TypeFunction 4
|
5: TypeFunction 4
|
||||||
7: TypeInt 32 0
|
7: TypeInt 32 0
|
||||||
|
|
@ -109,116 +111,119 @@ void main() {
|
||||||
21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24
|
21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24
|
||||||
17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20
|
17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20
|
||||||
TypeForwardPointer 28 PhysicalStorageBufferEXT
|
TypeForwardPointer 28 PhysicalStorageBufferEXT
|
||||||
29(Mesh): TypeStruct 28
|
29: 7(int) Constant 5349
|
||||||
32: 7(int) Constant 21
|
30: 4 ExtInstWithForwardRefs 1(NonSemantic.Shader.DebugInfo.100) 3 48 29 12
|
||||||
30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 31 22 18 32 12 21 31 12 13
|
31(Mesh): TypeStruct 28
|
||||||
33: TypeFloat 32
|
34: 7(int) Constant 9
|
||||||
35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 34 10 13 12
|
35: 7(int) Constant 23
|
||||||
36: TypeRuntimeArray 33(float)
|
32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 33 30 18 34 35 12 12 13
|
||||||
37: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 35 12
|
38: 7(int) Constant 21
|
||||||
38(MeshVertexPositions): TypeStruct 36
|
36: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 37 22 18 38 12 21 37 12 13 32
|
||||||
41: 7(int) Constant 5
|
39: TypeFloat 32
|
||||||
42: 7(int) Constant 9
|
41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 40 10 13 12
|
||||||
39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 40 37 18 41 42 12 12 13
|
42: TypeRuntimeArray 39(float)
|
||||||
43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 44 22 18 32 12 21 44 12 13 39
|
43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 41 12
|
||||||
28: TypePointer PhysicalStorageBufferEXT 38(MeshVertexPositions)
|
44(MeshVertexPositions): TypeStruct 42
|
||||||
45: TypePointer Function 29(Mesh)
|
47: 7(int) Constant 5
|
||||||
46: 7(int) Constant 7
|
45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 46 43 18 47 34 12 12 13
|
||||||
47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 46 12
|
48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 49 22 18 38 12 21 49 12 13 45
|
||||||
49: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 30 18 32 12 17 23
|
28: TypePointer PhysicalStorageBufferEXT 44(MeshVertexPositions)
|
||||||
52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression)
|
50: TypePointer Function 31(Mesh)
|
||||||
54(Mesh): TypeStruct 28(ptr)
|
51: 7(int) Constant 7
|
||||||
55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 31 22 18 32 12 21 31 12 13
|
52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 36 51 12
|
||||||
56: TypeRuntimeArray 54(Mesh)
|
54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 55 36 18 38 12 17 23
|
||||||
57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 55 12
|
57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression)
|
||||||
58(PerPass_meshes): TypeStruct 56
|
59(Mesh): TypeStruct 28(ptr)
|
||||||
60: 7(int) Constant 13
|
60: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 33 30 18 34 35 12 12 13
|
||||||
61: 7(int) Constant 8
|
61: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 37 22 18 38 12 21 37 12 13 60
|
||||||
59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 40 57 18 60 61 12 12 13
|
62: TypeRuntimeArray 59(Mesh)
|
||||||
62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 63 22 18 32 12 21 63 12 13 59
|
63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 61 12
|
||||||
64: TypePointer StorageBuffer 58(PerPass_meshes)
|
64(PerPass_meshes): TypeStruct 62
|
||||||
65: 7(int) Constant 12
|
66: 7(int) Constant 13
|
||||||
66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 62 65 12
|
67: 7(int) Constant 8
|
||||||
67(perPass_meshes): 64(ptr) Variable StorageBuffer
|
65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 46 63 18 66 67 12 12 13
|
||||||
68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 69 62 18 32 12 21 69 67(perPass_meshes) 61
|
68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 69 22 18 38 12 21 69 12 13 65
|
||||||
70: TypeInt 32 1
|
70: TypePointer StorageBuffer 64(PerPass_meshes)
|
||||||
72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 71 10 23 12
|
71: 7(int) Constant 12
|
||||||
73: 70(int) Constant 0
|
72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 68 71 12
|
||||||
74: TypePointer Input 7(int)
|
73(perPass_meshes): 70(ptr) Variable StorageBuffer
|
||||||
75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 22 12
|
74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 75 68 18 38 12 21 75 73(perPass_meshes) 67
|
||||||
76(tri_idx0): 74(ptr) Variable Input
|
76: TypeInt 32 1
|
||||||
77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 78 9 18 32 12 21 78 76(tri_idx0) 61
|
78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 77 10 23 12
|
||||||
80: TypePointer StorageBuffer 54(Mesh)
|
79: 76(int) Constant 0
|
||||||
81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 55 65 12
|
80: TypePointer Input 7(int)
|
||||||
85: TypePointer Function 28(ptr)
|
81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 22 12
|
||||||
86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone)
|
82(tri_idx0): 80(ptr) Variable Input
|
||||||
88: TypeVector 33(float) 3
|
83: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 84 9 18 38 12 21 84 82(tri_idx0) 67
|
||||||
89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 35 13
|
86: TypePointer StorageBuffer 59(Mesh)
|
||||||
90: TypePointer Function 88(fvec3)
|
87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 61 71 12
|
||||||
91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 89 46 12
|
91: TypePointer Function 28(ptr)
|
||||||
95: 7(int) Constant 23
|
92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 51 12
|
||||||
93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 94 89 18 95 12 17 23
|
94: TypeVector 39(float) 3
|
||||||
102: TypePointer PhysicalStorageBufferEXT 33(float)
|
95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 41 13
|
||||||
103: 7(int) Constant 5349
|
96: TypePointer Function 94(fvec3)
|
||||||
104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 35 103 12
|
97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 95 51 12
|
||||||
109: 7(int) Constant 24
|
99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 100 95 18 35 12 17 23
|
||||||
118: 7(int) Constant 25
|
107: TypePointer PhysicalStorageBufferEXT 39(float)
|
||||||
127: TypeVector 33(float) 4
|
108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 41 29 12
|
||||||
128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 35 23
|
113: 7(int) Constant 24
|
||||||
129: TypePointer Output 127(fvec4)
|
122: 7(int) Constant 25
|
||||||
130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 128 13 12
|
131: TypeVector 39(float) 4
|
||||||
131(out_fragColor): 129(ptr) Variable Output
|
132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 41 23
|
||||||
134: 7(int) Constant 27
|
133: TypePointer Output 131(fvec4)
|
||||||
132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 133 128 18 134 12 21 133 131(out_fragColor) 61
|
134: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 132 13 12
|
||||||
137: 33(float) Constant 1065353216
|
135(out_fragColor): 133(ptr) Variable Output
|
||||||
|
138: 7(int) Constant 27
|
||||||
|
136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 137 132 18 138 12 21 137 135(out_fragColor) 67
|
||||||
|
141: 39(float) Constant 1065353216
|
||||||
14(main): 4 Function None 5
|
14(main): 4 Function None 5
|
||||||
15: Label
|
15: Label
|
||||||
48(meshData): 45(ptr) Variable Function
|
53(meshData): 50(ptr) Variable Function
|
||||||
92(vertex_pos0): 90(ptr) Variable Function
|
98(vertex_pos0): 96(ptr) Variable Function
|
||||||
26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||||
27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12
|
27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12
|
||||||
25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main)
|
25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main)
|
||||||
53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 32 32 12 12
|
58: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 38 38 12 12
|
||||||
51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 49 48(meshData) 52
|
56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 54 53(meshData) 57
|
||||||
79: 7(int) Load 76(tri_idx0)
|
85: 7(int) Load 82(tri_idx0)
|
||||||
82: 80(ptr) AccessChain 67(perPass_meshes) 73 79
|
88: 86(ptr) AccessChain 73(perPass_meshes) 79 85
|
||||||
83: 54(Mesh) Load 82
|
89: 59(Mesh) Load 88
|
||||||
84: 28(ptr) CompositeExtract 83 0
|
90: 28(ptr) CompositeExtract 89 0
|
||||||
87: 85(ptr) AccessChain 48(meshData) 73
|
93: 91(ptr) AccessChain 53(meshData) 79
|
||||||
Store 87 84
|
Store 93 90
|
||||||
97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 95 95 12 12
|
102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 35 35 12 12
|
||||||
96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 93 92(vertex_pos0) 52
|
101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 99 98(vertex_pos0) 57
|
||||||
98: 85(ptr) AccessChain 48(meshData) 73
|
103: 91(ptr) AccessChain 53(meshData) 79
|
||||||
99: 28(ptr) Load 98
|
104: 28(ptr) Load 103
|
||||||
100: 7(int) Load 76(tri_idx0)
|
105: 7(int) Load 82(tri_idx0)
|
||||||
101: 7(int) IMul 13 100
|
106: 7(int) IMul 13 105
|
||||||
105: 102(ptr) AccessChain 99 73 101
|
109: 107(ptr) AccessChain 104 79 106
|
||||||
106: 33(float) Load 105 Aligned 4
|
110: 39(float) Load 109 Aligned 4
|
||||||
108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 109 109 12 12
|
112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 113 113 12 12
|
||||||
107: 85(ptr) AccessChain 48(meshData) 73
|
111: 91(ptr) AccessChain 53(meshData) 79
|
||||||
110: 28(ptr) Load 107
|
114: 28(ptr) Load 111
|
||||||
111: 7(int) Load 76(tri_idx0)
|
115: 7(int) Load 82(tri_idx0)
|
||||||
112: 7(int) IMul 13 111
|
116: 7(int) IMul 13 115
|
||||||
113: 7(int) IAdd 112 22
|
117: 7(int) IAdd 116 22
|
||||||
114: 102(ptr) AccessChain 110 73 113
|
118: 107(ptr) AccessChain 114 79 117
|
||||||
115: 33(float) Load 114 Aligned 4
|
119: 39(float) Load 118 Aligned 4
|
||||||
117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 118 118 12 12
|
121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 122 122 12 12
|
||||||
116: 85(ptr) AccessChain 48(meshData) 73
|
120: 91(ptr) AccessChain 53(meshData) 79
|
||||||
119: 28(ptr) Load 116
|
123: 28(ptr) Load 120
|
||||||
120: 7(int) Load 76(tri_idx0)
|
124: 7(int) Load 82(tri_idx0)
|
||||||
121: 7(int) IMul 13 120
|
125: 7(int) IMul 13 124
|
||||||
122: 7(int) IAdd 121 24
|
126: 7(int) IAdd 125 24
|
||||||
123: 102(ptr) AccessChain 119 73 122
|
127: 107(ptr) AccessChain 123 79 126
|
||||||
124: 33(float) Load 123 Aligned 4
|
128: 39(float) Load 127 Aligned 4
|
||||||
125: 88(fvec3) CompositeConstruct 106 115 124
|
129: 94(fvec3) CompositeConstruct 110 119 128
|
||||||
126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 95 95 12 12
|
130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 35 35 12 12
|
||||||
Store 92(vertex_pos0) 125
|
Store 98(vertex_pos0) 129
|
||||||
136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 134 134 12 12
|
140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 138 138 12 12
|
||||||
135: 88(fvec3) Load 92(vertex_pos0)
|
139: 94(fvec3) Load 98(vertex_pos0)
|
||||||
138: 33(float) CompositeExtract 135 0
|
142: 39(float) CompositeExtract 139 0
|
||||||
139: 33(float) CompositeExtract 135 1
|
143: 39(float) CompositeExtract 139 1
|
||||||
140: 33(float) CompositeExtract 135 2
|
144: 39(float) CompositeExtract 139 2
|
||||||
141: 127(fvec4) CompositeConstruct 138 139 140 137
|
145: 131(fvec4) CompositeConstruct 142 143 144 141
|
||||||
Store 131(out_fragColor) 141
|
Store 135(out_fragColor) 145
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue