aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorToni Lönnberg <[email protected]>2018-10-29 16:05:10 +0200
committerLionel Landwerlin <[email protected]>2018-10-30 12:43:00 +0000
commit50e952840f5a194af0e89fac3383a0c32132f065 (patch)
tree29864721466f12a399738fefa6de953e20a5c6d2
parentd5a938c58d058270990d5e077ed5b72384c001de (diff)
intel: tools: Add handling for video pipe
Preliminary work for adding handling of different pipes to gen_decoder. We need to be able to distinguish between different pipes in order to decode the packets correctly due to opcode re-use. Reviewed-by: Lionel Landwerlin <[email protected]>
-rw-r--r--src/intel/tools/aub_read.c26
-rw-r--r--src/intel/tools/aub_read.h5
2 files changed, 30 insertions, 1 deletions
diff --git a/src/intel/tools/aub_read.c b/src/intel/tools/aub_read.c
index 5b704e8f78b..d83e88ddced 100644
--- a/src/intel/tools/aub_read.c
+++ b/src/intel/tools/aub_read.c
@@ -153,6 +153,9 @@ handle_trace_block(struct aub_read *read, const uint32_t *p)
case AUB_TRACE_TYPE_RING_PRB0:
engine = GEN_ENGINE_RENDER;
break;
+ case AUB_TRACE_TYPE_RING_PRB1:
+ engine = GEN_ENGINE_VIDEO;
+ break;
case AUB_TRACE_TYPE_RING_PRB2:
engine = GEN_ENGINE_BLITTER;
break;
@@ -193,6 +196,16 @@ handle_memtrace_reg_write(struct aub_read *read, const uint32_t *p)
context_descriptor = (uint64_t)read->render_elsp[2] << 32 |
read->render_elsp[3];
break;
+ case 0x12230: /* 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 0x22230: /* blitter elsp */
read->blitter_elsp[read->blitter_elsp_index++] = value;
if (read->blitter_elsp_index < 4)
@@ -211,6 +224,14 @@ handle_memtrace_reg_write(struct aub_read *read, const uint32_t *p)
read->render_elsp[2] = value;
return;
break;
+ case 0x12510: /* video elsq0 lo */
+ read->video_elsp[3] = value;
+ return;
+ break;
+ case 0x12514: /* video elsq0 hi */
+ read->video_elsp[2] = value;
+ return;
+ break;
case 0x22510: /* blitter elsq0 lo */
read->blitter_elsp[3] = value;
return;
@@ -224,6 +245,11 @@ handle_memtrace_reg_write(struct aub_read *read, const uint32_t *p)
context_descriptor = (uint64_t)read->render_elsp[2] << 32 |
read->render_elsp[3];
break;
+ case 0x12550: /* video_elsc */
+ engine = GEN_ENGINE_VIDEO;
+ context_descriptor = (uint64_t)read->video_elsp[2] << 32 |
+ read->video_elsp[3];
+ break;
case 0x22550: /* blitter elsc */
engine = GEN_ENGINE_BLITTER;
context_descriptor = (uint64_t)read->blitter_elsp[2] << 32 |
diff --git a/src/intel/tools/aub_read.h b/src/intel/tools/aub_read.h
index 3502c0887bb..e48ac3164bc 100644
--- a/src/intel/tools/aub_read.h
+++ b/src/intel/tools/aub_read.h
@@ -35,7 +35,8 @@ extern "C" {
enum gen_engine {
GEN_ENGINE_RENDER = 1,
- GEN_ENGINE_BLITTER = 2,
+ GEN_ENGINE_VIDEO = 2,
+ GEN_ENGINE_BLITTER = 3,
};
struct aub_read {
@@ -62,6 +63,8 @@ struct aub_read {
/* Reader's data */
uint32_t render_elsp[4];
int render_elsp_index;
+ uint32_t video_elsp[4];
+ int video_elsp_index;
uint32_t blitter_elsp[4];
int blitter_elsp_index;