layers: MR159, Collect offsets of instructions producing constants
We're about to need to be able to look these up by <id> for proper array size
handling.
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index 45d2217..4ec408a 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -346,6 +346,7 @@
{
for (auto insn : *module) {
switch (insn.opcode()) {
+ /* Types */
case spv::OpTypeVoid:
case spv::OpTypeBool:
case spv::OpTypeInt:
@@ -369,8 +370,27 @@
module->def_index[insn.word(1)] = insn.offset();
break;
+ /* Fixed constants */
+ case spv::OpConstantTrue:
+ case spv::OpConstantFalse:
+ case spv::OpConstant:
+ case spv::OpConstantComposite:
+ case spv::OpConstantSampler:
+ case spv::OpConstantNull:
+ module->def_index[insn.word(2)] = insn.offset();
+ break;
+
+ /* Specialization constants */
+ case spv::OpSpecConstantTrue:
+ case spv::OpSpecConstantFalse:
+ case spv::OpSpecConstant:
+ case spv::OpSpecConstantComposite:
+ case spv::OpSpecConstantOp:
+ module->def_index[insn.word(2)] = insn.offset();
+ break;
+
default:
- /* We only care about type definitions */
+ /* We don't care about any other defs for now. */
break;
}
}