summaryrefslogtreecommitdiffstats
path: root/src/intel
diff options
context:
space:
mode:
authorScott D Phillips <[email protected]>2018-03-09 16:29:41 -0800
committerScott D Phillips <[email protected]>2018-03-21 11:07:15 -0700
commitcab8df1e3e2e5497f9f59847ce0355ee479ef223 (patch)
tree2155fc31be0b1118547ceff02ff2c930d81aafee /src/intel
parenta8d55374dc4be7eaeac4684d259c1ef56a4dc30a (diff)
intel/tools: aubinator: Catch gen11 "enhanced execlist" submission
Different registers are used for execlist submission in gen11, so also watch those. This code only watches element zero of the submit queue, which is all aubdump currently writes. Tested-by: Rafael Antognolli <[email protected]> Reviewed-by: Rafael Antognolli <[email protected]>
Diffstat (limited to 'src/intel')
-rw-r--r--src/intel/tools/aubinator.c26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/intel/tools/aubinator.c b/src/intel/tools/aubinator.c
index 77bad29051e..8029dc12155 100644
--- a/src/intel/tools/aubinator.c
+++ b/src/intel/tools/aubinator.c
@@ -248,6 +248,9 @@ handle_memtrace_reg_write(uint32_t *p)
int engine;
static int render_elsp_writes = 0;
static int blitter_elsp_writes = 0;
+ static int render_elsq0 = 0;
+ static int blitter_elsq0 = 0;
+ uint8_t *pphwsp;
if (offset == 0x2230) {
render_elsp_writes++;
@@ -255,18 +258,29 @@ handle_memtrace_reg_write(uint32_t *p)
} else if (offset == 0x22230) {
blitter_elsp_writes++;
engine = GEN_ENGINE_BLITTER;
+ } else if (offset == 0x2510) {
+ render_elsq0 = value;
+ } else if (offset == 0x22510) {
+ blitter_elsq0 = value;
+ } else if (offset == 0x2550 || offset == 0x22550) {
+ /* nothing */;
} else {
return;
}
- if (render_elsp_writes > 3)
- render_elsp_writes = 0;
- else if (blitter_elsp_writes > 3)
- blitter_elsp_writes = 0;
- else
+ if (render_elsp_writes > 3 || blitter_elsp_writes > 3) {
+ render_elsp_writes = blitter_elsp_writes = 0;
+ pphwsp = (uint8_t*)gtt + (value & 0xfffff000);
+ } else if (offset == 0x2550) {
+ engine = GEN_ENGINE_RENDER;
+ pphwsp = (uint8_t*)gtt + (render_elsq0 & 0xfffff000);
+ } else if (offset == 0x22550) {
+ engine = GEN_ENGINE_BLITTER;
+ pphwsp = (uint8_t*)gtt + (blitter_elsq0 & 0xfffff000);
+ } else {
return;
+ }
- uint8_t *pphwsp = (uint8_t*)gtt + (value & 0xfffff000);
const uint32_t pphwsp_size = 4096;
uint32_t *context = (uint32_t*)(pphwsp + pphwsp_size);
uint32_t ring_buffer_head = context[5];