From 1a3f6c586ca1b7f2c4ad56a9a088d59b3dcbfe2e Mon Sep 17 00:00:00 2001 From: Konstantin Date: Sat, 23 Nov 2024 17:55:48 +0100 Subject: [PATCH] radv/printf: Guard against helper invocations Helper invocations can allocate printf buffer space but they do not write any data which can cause crashes in radv_dump_printf_data. Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_printf.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/amd/vulkan/radv_printf.c b/src/amd/vulkan/radv_printf.c index 4f7fd4c8278..8c0ac4c5df7 100644 --- a/src/amd/vulkan/radv_printf.c +++ b/src/amd/vulkan/radv_printf.c @@ -116,6 +116,9 @@ radv_build_printf(nir_builder *b, nir_def *cond, const char *format_string, ...) if (cond) nir_push_if(b, cond); + if (b->shader->info.stage == MESA_SHADER_FRAGMENT) + nir_push_if(b, nir_inot(b, nir_is_helper_invocation(b, 1))); + nir_def *size = nir_imm_int(b, 4); va_list arg_list; @@ -204,6 +207,9 @@ radv_build_printf(nir_builder *b, nir_def *cond, const char *format_string, ...) if (cond) nir_pop_if(b, NULL); + if (b->shader->info.stage == MESA_SHADER_FRAGMENT) + nir_pop_if(b, NULL); + free(args); free(strides);