From 103f21b13d839ccd011b06b5708e7b9c1b8d228e Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 30 Jul 2018 11:29:26 -0700 Subject: [PATCH] v3d: Add a separate flag for CLIF ABI output versus human-readable CLs. A few of the upcoming changes would make the V3D_DEBUG=cl output less readable, so let's make proper CLIF file production be under a separate V3D_DEBUG=clif flag. --- src/broadcom/clif/clif_dump.c | 3 ++- src/broadcom/clif/clif_dump.h | 2 +- src/broadcom/clif/clif_private.h | 6 ++++++ src/broadcom/common/v3d_debug.c | 1 + src/broadcom/common/v3d_debug.h | 1 + src/gallium/drivers/v3d/v3d_job.c | 5 +++-- src/gallium/drivers/vc4/vc4_cl_dump.c | 2 +- 7 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/broadcom/clif/clif_dump.c b/src/broadcom/clif/clif_dump.c index 6bee7a481b0..a637ba5999f 100644 --- a/src/broadcom/clif/clif_dump.c +++ b/src/broadcom/clif/clif_dump.c @@ -51,13 +51,14 @@ clif_dump_add_address_to_worklist(struct clif_dump *clif, struct clif_dump * clif_dump_init(const struct v3d_device_info *devinfo, - FILE *out) + FILE *out, bool pretty) { struct clif_dump *clif = rzalloc(NULL, struct clif_dump); clif->devinfo = devinfo; clif->out = out; clif->spec = v3d_spec_load(devinfo); + clif->pretty = pretty; list_inithead(&clif->worklist); diff --git a/src/broadcom/clif/clif_dump.h b/src/broadcom/clif/clif_dump.h index f89447b9bd9..f0a8f9a1f14 100644 --- a/src/broadcom/clif/clif_dump.h +++ b/src/broadcom/clif/clif_dump.h @@ -31,7 +31,7 @@ struct v3d_device_info; struct clif_dump; struct clif_dump *clif_dump_init(const struct v3d_device_info *devinfo, - FILE *output); + FILE *output, bool pretty); void clif_dump(struct clif_dump *clif); 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 ea96784289a..8753ba229f8 100644 --- a/src/broadcom/clif/clif_private.h +++ b/src/broadcom/clif/clif_private.h @@ -47,6 +47,12 @@ struct clif_dump { struct clif_bo *bo; int bo_count; int bo_array_size; + + /** + * Flag to switch from CLIF ABI to slightly more human-readable + * output. + */ + bool pretty; }; enum reloc_worklist_type { diff --git a/src/broadcom/common/v3d_debug.c b/src/broadcom/common/v3d_debug.c index 4fe86980188..97404448e58 100644 --- a/src/broadcom/common/v3d_debug.c +++ b/src/broadcom/common/v3d_debug.c @@ -41,6 +41,7 @@ uint32_t V3D_DEBUG = 0; static const struct debug_control debug_control[] = { { "cl", V3D_DEBUG_CL}, + { "clif", V3D_DEBUG_CLIF}, { "qpu", V3D_DEBUG_QPU}, { "vir", V3D_DEBUG_VIR}, { "nir", V3D_DEBUG_NIR}, diff --git a/src/broadcom/common/v3d_debug.h b/src/broadcom/common/v3d_debug.h index 75eb2718f30..d9f5255e216 100644 --- a/src/broadcom/common/v3d_debug.h +++ b/src/broadcom/common/v3d_debug.h @@ -54,6 +54,7 @@ extern uint32_t V3D_DEBUG; #define V3D_DEBUG_PERF (1 << 10) #define V3D_DEBUG_NORAST (1 << 11) #define V3D_DEBUG_ALWAYS_FLUSH (1 << 12) +#define V3D_DEBUG_CLIF (1 << 13) #ifdef HAVE_ANDROID_PLATFORM #define LOG_TAG "BROADCOM-MESA" diff --git a/src/gallium/drivers/v3d/v3d_job.c b/src/gallium/drivers/v3d/v3d_job.c index 54b2c8dfac7..d7df04c03c9 100644 --- a/src/gallium/drivers/v3d/v3d_job.c +++ b/src/gallium/drivers/v3d/v3d_job.c @@ -344,11 +344,12 @@ 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)) + if (!(V3D_DEBUG & (V3D_DEBUG_CL | V3D_DEBUG_CLIF))) return; struct clif_dump *clif = clif_dump_init(&v3d->screen->devinfo, - stderr); + stderr, + V3D_DEBUG & V3D_DEBUG_CL); struct set_entry *entry; set_foreach(job->bos, entry) { diff --git a/src/gallium/drivers/vc4/vc4_cl_dump.c b/src/gallium/drivers/vc4/vc4_cl_dump.c index bb26b057a44..a6ae0cf80d7 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); + struct clif_dump *clif = clif_dump_init(&devinfo, stderr, true); uint32_t offset = 0, hw_offset = 0; uint8_t *p = cl; -- 2.30.2