From 5663fac5ca84d9e87e49dadf8d7feb401ebf73f2 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 10 May 2021 09:59:00 -0400 Subject: [PATCH] zink: break out spirv shader dumping into separate function debugging++ Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_compiler.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index b16f55674f1..82169148d6d 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -1009,6 +1009,17 @@ zink_compiler_assign_io(nir_shader *producer, nir_shader *consumer) optimize_nir(nir); } +static void +zink_shader_dump(void *words, size_t size, const char *file) +{ + FILE *fp = fopen(file, "wb"); + if (fp) { + fwrite(words, 1, size, fp); + fclose(fp); + fprintf(stderr, "wrote '%s'...\n", file); + } +} + VkShaderModule zink_shader_compile(struct zink_screen *screen, struct zink_shader *zs, nir_shader *base_nir, const struct zink_shader_key *key) { @@ -1129,12 +1140,7 @@ zink_shader_compile(struct zink_screen *screen, struct zink_shader *zs, nir_shad char buf[256]; static int i; snprintf(buf, sizeof(buf), "dump%02d.spv", i++); - FILE *fp = fopen(buf, "wb"); - if (fp) { - fwrite(spirv->words, sizeof(uint32_t), spirv->num_words, fp); - fclose(fp); - fprintf(stderr, "wrote '%s'...\n", buf); - } + zink_shader_dump(spirv->words, spirv->num_words * sizeof(uint32_t), buf); } VkShaderModuleCreateInfo smci = {0};