From 386f6cd041c973de82ee76ba983a2ea36868a5bc Mon Sep 17 00:00:00 2001 From: Jordan Justen Date: Tue, 14 Nov 2017 16:27:34 -0800 Subject: [PATCH] i965: Support decoding INTERFACE_DESCRIPTOR_DATA with INTEL_DEBUG=bat This will dump the INTERFACE_DESCRIPTOR_DATA along with the associated samplers & surfaces. Signed-off-by: Jordan Justen Reviewed-by: Scott D Phillips --- src/mesa/drivers/dri/i965/intel_batchbuffer.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c b/src/mesa/drivers/dri/i965/intel_batchbuffer.c index 3412b1d..2160731 100644 --- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c +++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c @@ -564,6 +564,30 @@ do_batch_dump(struct brw_context *brw) decode_struct(brw, spec, "DEPTH_STENCIL_STATE", state, state_gtt_offset, p[1] & ~0x3fu, color); break; + case MEDIA_INTERFACE_DESCRIPTOR_LOAD: { + struct gen_group *group = + gen_spec_find_struct(spec, "RENDER_SURFACE_STATE"); + if (!group) + break; + + uint32_t idd_offset = p[3] & ~0x1fu; + decode_struct(brw, spec, "INTERFACE_DESCRIPTOR_DATA", state, + state_gtt_offset, idd_offset, color); + + uint32_t ss_offset = state[idd_offset / 4 + 3] & ~0x1fu; + decode_structs(brw, spec, "SAMPLER_STATE", state, + state_gtt_offset, ss_offset, 4 * 4, color); + + uint32_t bt_offset = state[idd_offset / 4 + 4] & ~0x1fu; + int bt_entries = brw_state_batch_size(brw, bt_offset) / 4; + uint32_t *bt_pointers = &state[bt_offset / 4]; + for (int i = 0; i < bt_entries; i++) { + fprintf(stderr, "SURFACE_STATE - BTI = %d\n", i); + gen_print_group(stderr, group, state_gtt_offset + bt_pointers[i], + &state[bt_pointers[i] / 4], color); + } + break; + } } } -- 2.7.4