[Mesa-dev] [PATCH 01/20] intel/aub_read: handle video engine execlists writes

Lionel Landwerlin lionel.g.landwerlin at intel.com
Tue Sep 25 08:23:40 UTC 2018


We don't strictly need this, but because we setup the engine in
aub_write, it might be worth parsing it correctly for the sake of
completeness.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
---
 src/intel/tools/aub_read.c | 23 +++++++++++++++++++++++
 src/intel/tools/aub_read.h |  3 +++
 2 files changed, 26 insertions(+)

diff --git a/src/intel/tools/aub_read.c b/src/intel/tools/aub_read.c
index d85f6f375f5..ee2fe7f7882 100644
--- a/src/intel/tools/aub_read.c
+++ b/src/intel/tools/aub_read.c
@@ -204,6 +204,16 @@ handle_memtrace_reg_write(struct aub_read *read, const uint32_t *p)
       context_descriptor = (uint64_t)read->blitter_elsp[2] << 32 |
          read->blitter_elsp[3];
       break;
+   case EXECLIST_SUBMITPORT_VCSUNIT0: /* video elsp */
+      read->video_elsp[read->video_elsp_index++] = value;
+      if (read->video_elsp_index < 4)
+         return;
+
+      read->video_elsp_index = 0;
+      engine = GEN_ENGINE_VIDEO;
+      context_descriptor = (uint64_t)read->video_elsp[2] << 32 |
+         read->video_elsp[3];
+      break;
    case EXECLIST_SQ_CONTENTS0_RCSUNIT: /* render elsq0 lo */
       read->render_elsp[3] = value;
       return;
@@ -220,6 +230,14 @@ handle_memtrace_reg_write(struct aub_read *read, const uint32_t *p)
       read->blitter_elsp[2] = value;
       return;
       break;
+   case EXECLIST_SQ_CONTENTS0_VCSUNIT0: /* video elsq0 lo */
+      read->video_elsp[3] = value;
+      return;
+      break;
+   case (EXECLIST_SQ_CONTENTS0_VCSUNIT0 + 4): /* video elsq0 hi */
+      read->video_elsp[2] = value;
+      return;
+      break;
    case EXECLIST_CONTROL_RCSUNIT: /* render elsc */
       engine = GEN_ENGINE_RENDER;
       context_descriptor = (uint64_t)read->render_elsp[2] << 32 |
@@ -230,6 +248,11 @@ handle_memtrace_reg_write(struct aub_read *read, const uint32_t *p)
       context_descriptor = (uint64_t)read->blitter_elsp[2] << 32 |
          read->blitter_elsp[3];
       break;
+   case EXECLIST_CONTROL_VCSUNIT0: /* video elsc */
+      engine = GEN_ENGINE_VIDEO;
+      context_descriptor = (uint64_t)read->video_elsp[2] << 32 |
+         read->video_elsp[3];
+      break;
    default:
       return;
    }
diff --git a/src/intel/tools/aub_read.h b/src/intel/tools/aub_read.h
index 3502c0887bb..700d74990e4 100644
--- a/src/intel/tools/aub_read.h
+++ b/src/intel/tools/aub_read.h
@@ -36,6 +36,7 @@ extern "C" {
 enum gen_engine {
    GEN_ENGINE_RENDER = 1,
    GEN_ENGINE_BLITTER = 2,
+   GEN_ENGINE_VIDEO = 3,
 };
 
 struct aub_read {
@@ -64,6 +65,8 @@ struct aub_read {
    int render_elsp_index;
    uint32_t blitter_elsp[4];
    int blitter_elsp_index;
+   uint32_t video_elsp[4];
+   int video_elsp_index;
 
    struct gen_device_info devinfo;
 };
-- 
2.19.0



More information about the mesa-dev mailing list