Mesa (master): intel/tools: Decode COMPUTE_WALKER
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jan 13 21:27:40 UTC 2021
Module: Mesa
Branch: master
Commit: b7c1ad00fc76d05157c4f1d1729afc78a96d4d30
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b7c1ad00fc76d05157c4f1d1729afc78a96d4d30
Author: Jason Ekstrand <jason at jlekstrand.net>
Date: Mon Jun 15 17:33:54 2020 -0500
intel/tools: Decode COMPUTE_WALKER
Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8342>
---
src/intel/common/gen_batch_decoder.c | 72 ++++++++++++++++++++++++------------
1 file changed, 49 insertions(+), 23 deletions(-)
diff --git a/src/intel/common/gen_batch_decoder.c b/src/intel/common/gen_batch_decoder.c
index 5abad86aed6..8b78aa905a4 100644
--- a/src/intel/common/gen_batch_decoder.c
+++ b/src/intel/common/gen_batch_decoder.c
@@ -323,6 +323,37 @@ dump_samplers(struct gen_batch_decode_ctx *ctx, uint32_t offset, int count)
}
}
+static void
+handle_interface_descriptor_data(struct gen_batch_decode_ctx *ctx,
+ struct gen_group *desc, const uint32_t *p)
+{
+ uint64_t ksp = 0;
+ uint32_t sampler_offset = 0, sampler_count = 0;
+ uint32_t binding_table_offset = 0, binding_entry_count = 0;
+
+ struct gen_field_iterator iter;
+ gen_field_iterator_init(&iter, desc, p, 0, false);
+ while (gen_field_iterator_next(&iter)) {
+ if (strcmp(iter.name, "Kernel Start Pointer") == 0) {
+ ksp = strtoll(iter.value, NULL, 16);
+ } else if (strcmp(iter.name, "Sampler State Pointer") == 0) {
+ sampler_offset = strtol(iter.value, NULL, 16);
+ } else if (strcmp(iter.name, "Sampler Count") == 0) {
+ sampler_count = strtol(iter.value, NULL, 10);
+ } else if (strcmp(iter.name, "Binding Table Pointer") == 0) {
+ binding_table_offset = strtol(iter.value, NULL, 16);
+ } else if (strcmp(iter.name, "Binding Table Entry Count") == 0) {
+ binding_entry_count = strtol(iter.value, NULL, 10);
+ }
+ }
+
+ ctx_disassemble_program(ctx, ksp, "compute shader");
+ fprintf(ctx->fp, "\n");
+
+ dump_samplers(ctx, sampler_offset, sampler_count);
+ dump_binding_table(ctx, binding_table_offset, binding_entry_count);
+}
+
static void
handle_media_interface_descriptor_load(struct gen_batch_decode_ctx *ctx,
const uint32_t *p)
@@ -358,35 +389,29 @@ handle_media_interface_descriptor_load(struct gen_batch_decode_ctx *ctx,
ctx_print_group(ctx, desc, desc_addr, desc_map);
- gen_field_iterator_init(&iter, desc, desc_map, 0, false);
- uint64_t ksp = 0;
- uint32_t sampler_offset = 0, sampler_count = 0;
- uint32_t binding_table_offset = 0, binding_entry_count = 0;
- while (gen_field_iterator_next(&iter)) {
- if (strcmp(iter.name, "Kernel Start Pointer") == 0) {
- ksp = strtoll(iter.value, NULL, 16);
- } else if (strcmp(iter.name, "Sampler State Pointer") == 0) {
- sampler_offset = strtol(iter.value, NULL, 16);
- } else if (strcmp(iter.name, "Sampler Count") == 0) {
- sampler_count = strtol(iter.value, NULL, 10);
- } else if (strcmp(iter.name, "Binding Table Pointer") == 0) {
- binding_table_offset = strtol(iter.value, NULL, 16);
- } else if (strcmp(iter.name, "Binding Table Entry Count") == 0) {
- binding_entry_count = strtol(iter.value, NULL, 10);
- }
- }
-
- ctx_disassemble_program(ctx, ksp, "compute shader");
- fprintf(ctx->fp, "\n");
-
- dump_samplers(ctx, sampler_offset, sampler_count);
- dump_binding_table(ctx, binding_table_offset, binding_entry_count);
+ handle_interface_descriptor_data(ctx, desc, desc_map);
desc_map += desc->dw_length;
desc_addr += desc->dw_length * 4;
}
}
+static void
+handle_compute_walker(struct gen_batch_decode_ctx *ctx,
+ const uint32_t *p)
+{
+ struct gen_group *inst = gen_ctx_find_instruction(ctx, p);
+
+ struct gen_field_iterator iter;
+ gen_field_iterator_init(&iter, inst, p, 0, false);
+ while (gen_field_iterator_next(&iter)) {
+ if (strcmp(iter.name, "Interface Descriptor") == 0) {
+ handle_interface_descriptor_data(ctx, iter.struct_desc,
+ &iter.p[iter.start_bit / 32]);
+ }
+ }
+}
+
static void
handle_3dstate_vertex_buffers(struct gen_batch_decode_ctx *ctx,
const uint32_t *p)
@@ -1011,6 +1036,7 @@ struct custom_decoder {
} custom_decoders[] = {
{ "STATE_BASE_ADDRESS", handle_state_base_address },
{ "MEDIA_INTERFACE_DESCRIPTOR_LOAD", handle_media_interface_descriptor_load },
+ { "COMPUTE_WALKER", handle_compute_walker },
{ "3DSTATE_VERTEX_BUFFERS", handle_3dstate_vertex_buffers },
{ "3DSTATE_INDEX_BUFFER", handle_3dstate_index_buffer },
{ "3DSTATE_VS", decode_single_ksp },
More information about the mesa-commit
mailing list