From c0743ce1f34ef4cc58862303399c30bfdbf29458 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Tue, 26 Jan 2016 13:49:27 +1300 Subject: layers: MR159, Collect offsets of instructions producing constants We're about to need to be able to look these up by for proper array size handling. --- layers/draw_state.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'layers/draw_state.cpp') diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp index 45d2217e..4ec408ae 100644 --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -346,6 +346,7 @@ build_def_index(shader_module *module) { for (auto insn : *module) { switch (insn.opcode()) { + /* Types */ case spv::OpTypeVoid: case spv::OpTypeBool: case spv::OpTypeInt: @@ -369,8 +370,27 @@ build_def_index(shader_module *module) 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; } } -- cgit v1.2.3