From 59c5da40ed2c6c56e29b562c2ee2c8705f28738b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Thu, 19 Jan 2017 13:58:50 +0100 Subject: [PATCH] radeonsi: preload PS inputs only if KILL is used MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit so that most shaders can get lower VGPR usage thanks to lazy input loading. I think this is a more accurate constraint that prevents the black transitions in Witcher 2. Affected shaders (7758): Max Waves: 57437 -> 58231 (1.38 %) Reviewed-by: Nicolai Hähnle --- src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c b/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c index 8d19a4eea68..4f355e58490 100644 --- a/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c +++ b/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c @@ -637,11 +637,15 @@ store_value_to_array(struct lp_build_tgsi_context *bld_base, /* If this is true, preload FS inputs at the beginning of shaders. Otherwise, * reload them at each use. This must be true if the shader is using - * derivatives, because all inputs should be loaded in the WQM mode. + * derivatives and KILL, because KILL can leave the WQM and then a lazy + * input load isn't in the WQM anymore. */ static bool si_preload_fs_inputs(struct si_shader_context *ctx) { - return ctx->shader->selector->info.uses_derivatives; + struct si_shader_selector *sel = ctx->shader->selector; + + return sel->info.uses_derivatives && + sel->info.uses_kill; } static LLVMValueRef -- 2.30.2