intel/error2aub: store engine last ring buffer head/tail pointers
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Tue, 4 Sep 2018 13:50:13 +0000 (14:50 +0100)
committerLionel Landwerlin <lionel.g.landwerlin@intel.com>
Fri, 8 Mar 2019 11:01:14 +0000 (11:01 +0000)
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
src/intel/tools/error2aub.c

index 0fbbf29daecd9e547bd746db88d390ebb2c05608..1b1f8d9c5f97855692038b683e8ab551da7ad711 100644 (file)
@@ -280,6 +280,14 @@ main(int argc, char *argv[])
 
    enum address_space active_gtt = PPGTT;
 
+   struct {
+      struct {
+         uint32_t ring_buffer_head;
+         uint32_t ring_buffer_tail;
+      } instances[3];
+   } engines[I915_ENGINE_CLASS_VIDEO_ENHANCE + 1];
+   memset(engines, 0, sizeof(engines));
+
    int num_ring_bos = 0;
 
    struct list_head bo_list;
@@ -310,6 +318,20 @@ main(int argc, char *argv[])
          continue;
       }
 
+      if (sscanf(line, "  ring->head: 0x%x\n",
+                 &engines[
+                    active_engine_class].instances[
+                       active_engine_instance].ring_buffer_head) == 1) {
+         continue;
+      }
+
+      if (sscanf(line, "  ring->tail: 0x%x\n",
+                 &engines[
+                    active_engine_class].instances[
+                       active_engine_instance].ring_buffer_tail) == 1) {
+         continue;
+      }
+
       const char *active_start = "Active (";
       if (strncmp(line, active_start, strlen(active_start)) == 0) {
          char *ring = line + strlen(active_start);