diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2011-10-21 10:09:14 +0200 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2011-10-21 10:14:05 +0200 |
commit | 982d14e34b978b318ba0d92dd25d5b791375d0f3 (patch) | |
tree | 77f9c57ec24b9872b64051a3885bbc5b8cce56e9 | |
parent | e0b264573074debc0b97b3d13f60de4c2c21186b (diff) |
tools/decode: properly decode gen6+ PIPE_CONTROL flags
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r-- | tools/intel_decode.c | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/tools/intel_decode.c b/tools/intel_decode.c index d1218cd..c53f3a3 100644 --- a/tools/intel_decode.c +++ b/tools/intel_decode.c @@ -28,6 +28,7 @@ #include "intel_decode.h" #include "intel_chipset.h" +#include "intel_gpu_tools.h" static FILE *out; static uint32_t saved_s2 = 0, saved_s4 = 0; @@ -2588,7 +2589,7 @@ decode_3d_965(uint32_t *data, int count, uint32_t hw_offset, uint32_t devid, int return len; case 0x7a00: - if (IS_GEN6(devid)) { + if (intel_gen(devid) >= 6) { int i; len = (data[0] & 0xff) + 2; if (len != 4 && len != 5) @@ -2604,17 +2605,27 @@ decode_3d_965(uint32_t *data, int count, uint32_t hw_offset, uint32_t devid, int } instr_out(data, hw_offset, 0, "PIPE_CONTROL\n"); instr_out(data, hw_offset, 1, - "%s, %scs stall, %stlb invalidate, " - "%ssync gfdt, %sdepth stall, %sRC write flush, " - "%sinst flush, %sTC flush\n", + "%s, %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n", desc1, - data[1] & (1 << 20) ? "" : "no ", - data[1] & (1 << 18) ? "" : "no ", - data[1] & (1 << 17) ? "" : "no ", - data[1] & (1 << 13) ? "" : "no ", - data[1] & (1 << 12) ? "" : "no ", - data[1] & (1 << 11) ? "" : "no ", - data[1] & (1 << 10) ? "" : "no "); + data[1] & (1 << 20) ? "cs stall, " : "", + data[1] & (1 << 19) ? "global snapshot count reset, " : "", + data[1] & (1 << 18) ? "tlb invalidate, " : "", + data[1] & (1 << 17) ? "gfdt flush, " : "", + data[1] & (1 << 17) ? "media state clear, " : "", + data[1] & (1 << 13) ? "depth stall, " : "", + data[1] & (1 << 12) ? "render target cache flush, " : "", + data[1] & (1 << 11) ? "instruction cache invalidate, " : "", + data[1] & (1 << 10) ? "texture cache invalidate, " : "", + data[1] & (1 << 9) ? "indirect state invalidate, " : "", + data[1] & (1 << 8) ? "notify irq, " : "", + data[1] & (1 << 7) ? "PIPE_CONTROL flush, " : "", + data[1] & (1 << 6) ? "protect mem app_id, " : "", + data[1] & (1 << 5) ? "DC flush, " : "", + data[1] & (1 << 4) ? "vf fetch invalidate, " : "", + data[1] & (1 << 3) ? "constant cache invalidate, " : "", + data[1] & (1 << 2) ? "state cache invalidate, " : "", + data[1] & (1 << 1) ? "stall at scoreboard, " : "", + data[1] & (1 << 0) ? "depth cache flush, " : ""); if (len == 5) { instr_out(data, hw_offset, 2, "destination address\n"); instr_out(data, hw_offset, 3, "immediate dword low\n"); |