From 9c158fcc709b2c0993a52d50082df50aa91c9ccf Mon Sep 17 00:00:00 2001 From: "Juan A. Suarez Romero" Date: Fri, 10 Sep 2021 13:08:22 +0200 Subject: [PATCH] broadcom: add cl_nobin debug option Dumps the command list, excluding the binary resources. v2 (Juan): - Make this option independent from `cl` v3 (Iago): - Rename option name - Fix style issues - Do not print BO ranges Reviewed-by: Iago Toral Quiroga Signed-off-by: Juan A. Suarez Romero Part-of: --- src/broadcom/clif/clif_dump.c | 6 +++++- src/broadcom/clif/clif_dump.h | 2 +- src/broadcom/clif/clif_private.h | 5 +++++ src/broadcom/common/v3d_debug.c | 2 ++ src/broadcom/common/v3d_debug.h | 1 + src/broadcom/vulkan/v3dv_queue.c | 8 ++++++-- src/gallium/drivers/v3d/v3d_job.c | 8 ++++++-- src/gallium/drivers/vc4/vc4_cl_dump.c | 2 +- 8 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/broadcom/clif/clif_dump.c b/src/broadcom/clif/clif_dump.c index bf84c0b..0aaa6b6 100644 --- a/src/broadcom/clif/clif_dump.c +++ b/src/broadcom/clif/clif_dump.c @@ -52,7 +52,7 @@ clif_dump_add_address_to_worklist(struct clif_dump *clif, struct clif_dump * clif_dump_init(const struct v3d_device_info *devinfo, - FILE *out, bool pretty) + FILE *out, bool pretty, bool nobin) { struct clif_dump *clif = rzalloc(NULL, struct clif_dump); @@ -60,6 +60,7 @@ clif_dump_init(const struct v3d_device_info *devinfo, clif->out = out; clif->spec = v3d_spec_load(devinfo); clif->pretty = pretty; + clif->nobin = nobin; list_inithead(&clif->worklist); @@ -238,6 +239,9 @@ static void clif_dump_binary(struct clif_dump *clif, struct clif_bo *bo, uint32_t start, uint32_t end) { + if (clif->pretty && clif->nobin) + return; + if (start == end) return; diff --git a/src/broadcom/clif/clif_dump.h b/src/broadcom/clif/clif_dump.h index 8de3a2c..63f3ae7 100644 --- a/src/broadcom/clif/clif_dump.h +++ b/src/broadcom/clif/clif_dump.h @@ -32,7 +32,7 @@ struct clif_dump; struct drm_v3d_submit_cl; struct clif_dump *clif_dump_init(const struct v3d_device_info *devinfo, - FILE *output, bool pretty); + FILE *output, bool pretty, bool nobin); void clif_dump(struct clif_dump *clif, const struct drm_v3d_submit_cl *submit); void clif_dump_destroy(struct clif_dump *clif); diff --git a/src/broadcom/clif/clif_private.h b/src/broadcom/clif/clif_private.h index 597d0b5..d96bfd1 100644 --- a/src/broadcom/clif/clif_private.h +++ b/src/broadcom/clif/clif_private.h @@ -54,6 +54,11 @@ struct clif_dump { * output. */ bool pretty; + + /** + * Flag to no dump the binary resources. + */ + bool nobin; }; enum reloc_worklist_type { diff --git a/src/broadcom/common/v3d_debug.c b/src/broadcom/common/v3d_debug.c index 53e6bef..508a2b7 100644 --- a/src/broadcom/common/v3d_debug.c +++ b/src/broadcom/common/v3d_debug.c @@ -42,6 +42,8 @@ uint32_t V3D_DEBUG = 0; static const struct debug_named_value debug_control[] = { { "cl", V3D_DEBUG_CL, "Dump command list during creation" }, + { "cl_nobin", V3D_DEBUG_CL_NO_BIN, + "Dump command listduring creation, excluding binary resources" }, { "clif", V3D_DEBUG_CLIF, "Dump command list (CLIF format) during creation", }, { "qpu", V3D_DEBUG_QPU, diff --git a/src/broadcom/common/v3d_debug.h b/src/broadcom/common/v3d_debug.h index 06d8f0f..b5278c4 100644 --- a/src/broadcom/common/v3d_debug.h +++ b/src/broadcom/common/v3d_debug.h @@ -62,6 +62,7 @@ extern uint32_t V3D_DEBUG; #define V3D_DEBUG_TMU_32BIT (1 << 18) #define V3D_DEBUG_TMU_16BIT (1 << 19) #define V3D_DEBUG_NO_LOOP_UNROLL (1 << 20) +#define V3D_DEBUG_CL_NO_BIN (1 << 21) #define V3D_DEBUG_SHADERS (V3D_DEBUG_TGSI | V3D_DEBUG_NIR | \ V3D_DEBUG_VIR | V3D_DEBUG_QPU | \ diff --git a/src/broadcom/vulkan/v3dv_queue.c b/src/broadcom/vulkan/v3dv_queue.c index 91cd6a3..05343b0 100644 --- a/src/broadcom/vulkan/v3dv_queue.c +++ b/src/broadcom/vulkan/v3dv_queue.c @@ -34,12 +34,16 @@ v3dv_clif_dump(struct v3dv_device *device, struct v3dv_job *job, struct drm_v3d_submit_cl *submit) { - if (!(V3D_DEBUG & (V3D_DEBUG_CL | V3D_DEBUG_CLIF))) + if (!(V3D_DEBUG & (V3D_DEBUG_CL | + V3D_DEBUG_CL_NO_BIN | + V3D_DEBUG_CLIF))) return; struct clif_dump *clif = clif_dump_init(&device->devinfo, stderr, - V3D_DEBUG & V3D_DEBUG_CL); + V3D_DEBUG & (V3D_DEBUG_CL | + V3D_DEBUG_CL_NO_BIN), + V3D_DEBUG & V3D_DEBUG_CL_NO_BIN); set_foreach(job->bos, entry) { struct v3dv_bo *bo = (void *)entry->key; diff --git a/src/gallium/drivers/v3d/v3d_job.c b/src/gallium/drivers/v3d/v3d_job.c index 6cd8899..a37b83e 100644 --- a/src/gallium/drivers/v3d/v3d_job.c +++ b/src/gallium/drivers/v3d/v3d_job.c @@ -426,12 +426,16 @@ v3d_get_job_for_fbo(struct v3d_context *v3d) static void v3d_clif_dump(struct v3d_context *v3d, struct v3d_job *job) { - if (!(V3D_DEBUG & (V3D_DEBUG_CL | V3D_DEBUG_CLIF))) + if (!(V3D_DEBUG & (V3D_DEBUG_CL | + V3D_DEBUG_CL_NO_BIN | + V3D_DEBUG_CLIF))) return; struct clif_dump *clif = clif_dump_init(&v3d->screen->devinfo, stderr, - V3D_DEBUG & V3D_DEBUG_CL); + V3D_DEBUG & (V3D_DEBUG_CL | + V3D_DEBUG_CL_NO_BIN), + V3D_DEBUG & V3D_DEBUG_CL_NO_BIN); set_foreach(job->bos, entry) { struct v3d_bo *bo = (void *)entry->key; diff --git a/src/gallium/drivers/vc4/vc4_cl_dump.c b/src/gallium/drivers/vc4/vc4_cl_dump.c index a6ae0cf..eea2620 100644 --- a/src/gallium/drivers/vc4/vc4_cl_dump.c +++ b/src/gallium/drivers/vc4/vc4_cl_dump.c @@ -42,7 +42,7 @@ vc4_dump_cl(void *cl, uint32_t size, bool is_render) }; struct v3d_spec *spec = v3d_spec_load(&devinfo); - struct clif_dump *clif = clif_dump_init(&devinfo, stderr, true); + struct clif_dump *clif = clif_dump_init(&devinfo, stderr, true, false); uint32_t offset = 0, hw_offset = 0; uint8_t *p = cl; -- 2.7.4