broadcom/clif: Print out the contents of the generic tile list.
authorEric Anholt <eric@anholt.net>
Wed, 25 Oct 2017 00:55:03 +0000 (17:55 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 30 Oct 2017 20:31:16 +0000 (13:31 -0700)
This is the real meat of the RCL, so let's get it printed again.

src/broadcom/clif/clif_dump.c

index af72834e5dc56127a72d0e12d5ed5238ec70c4fc..ca5d5592779a4fa7fe0d1d7d46a45de56d9370cb 100644 (file)
@@ -38,6 +38,7 @@
 
 enum reloc_worklist_type {
         reloc_gl_shader_state,
+        reloc_generic_tile_list,
 };
 
 struct reloc_worklist_entry {
@@ -50,6 +51,9 @@ struct reloc_worklist_entry {
                 struct {
                         uint32_t num_attrs;
                 } shader_state;
+                struct {
+                        uint32_t end;
+                } generic_tile_list;
         };
 };
 
@@ -190,6 +194,17 @@ clif_dump_packet(struct clif_dump *clif, uint32_t offset, const uint8_t *cl,
                 break;
         }
 
+        case V3D33_START_ADDRESS_OF_GENERIC_TILE_LIST_opcode: {
+                struct V3D33_START_ADDRESS_OF_GENERIC_TILE_LIST values;
+                V3D33_START_ADDRESS_OF_GENERIC_TILE_LIST_unpack(cl, &values);
+                struct reloc_worklist_entry *reloc =
+                        clif_dump_add_address_to_worklist(clif,
+                                                          reloc_generic_tile_list,
+                                                          values.start);
+                reloc->generic_tile_list.end = values.end;
+                break;
+        }
+
         case V3D33_HALT_opcode:
                 return false;
         }
@@ -270,6 +285,10 @@ clif_process_worklist(struct clif_dump *clif)
                 case reloc_gl_shader_state:
                         clif_dump_gl_shader_state_record(clif, reloc, vaddr);
                         break;
+                case reloc_generic_tile_list:
+                        clif_dump_cl(clif, reloc->addr,
+                                     reloc->generic_tile_list.end);
+                        break;
                 }
                 out(clif, "\n");
         }