From 874639746144d8e5f5b0ba961ef3d18127e6cef5 Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Mon, 4 Aug 2025 17:05:09 +0200 Subject: [PATCH] r600/sfn: allow skipping RA for shader ID ranges This helps identifying problems with RA when many shaders are compiled. Signed-off-by: Gert Wollny Part-of: --- src/gallium/drivers/r600/sfn/sfn_nir.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/r600/sfn/sfn_nir.cpp b/src/gallium/drivers/r600/sfn/sfn_nir.cpp index d38f570af1e..0f471266de9 100644 --- a/src/gallium/drivers/r600/sfn/sfn_nir.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_nir.cpp @@ -842,6 +842,8 @@ r600_finalize_nir_common(nir_shader *nir, enum amd_gfx_level gfx_level) DEBUG_GET_ONCE_NUM_OPTION(skip_opt_start, "R600_SFN_SKIP_OPT_START", -1); DEBUG_GET_ONCE_NUM_OPTION(skip_opt_end, "R600_SFN_SKIP_OPT_END", -1); +DEBUG_GET_ONCE_NUM_OPTION(skip_ra_start, "R600_SFN_SKIP_RA_START", -1); +DEBUG_GET_ONCE_NUM_OPTION(skip_ra_end, "R600_SFN_SKIP_RA_END", -1); void r600_lower_and_optimize_nir(nir_shader *sh, @@ -1042,7 +1044,13 @@ r600_schedule_shader(r600::Shader *shader) scheduled_shader->print(std::cerr); } - if (!r600::sfn_log.has_debug_flag(r600::SfnLog::nomerge)) { + auto sfn_skip_ra_start = debug_get_option_skip_ra_start(); + auto sfn_skip_ra_end = debug_get_option_skip_ra_end(); + bool skip_shader_opt_per_id = sfn_skip_ra_start >= 0 && + sfn_skip_ra_start <= shader->shader_id() && + sfn_skip_ra_end >= shader->shader_id(); + + if (!r600::sfn_log.has_debug_flag(r600::SfnLog::nomerge) && !skip_shader_opt_per_id) { if (r600::sfn_log.has_debug_flag(r600::SfnLog::merge)) { r600::sfn_log << r600::SfnLog::merge << "Shader before RA\n";