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;
         }
     }