X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fradeonsi%2Fsi_state_shaders.c;h=ae430a3f504b60977f8e201a9e2e7b9ec5c91ed1;hp=bf5782171d463a2246c2888e8586877754bcddb8;hb=64349a60e17a03de4bb7e03d942bfc1679dfe8ab;hpb=2828a994aea6c86be03376b511165c3cff774e7c diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c index bf5782171d4..ae430a3f504 100644 --- a/src/gallium/drivers/radeonsi/si_state_shaders.c +++ b/src/gallium/drivers/radeonsi/si_state_shaders.c @@ -72,7 +72,10 @@ void si_get_ir_cache_key(struct si_shader_selector *sel, bool ngg, bool es, shader_variant_flags |= 1 << 1; if (si_get_wave_size(sel->screen, sel->info.stage, ngg, es, false, false) == 32) shader_variant_flags |= 1 << 2; - if (sel->info.stage == MESA_SHADER_FRAGMENT && sel->info.uses_derivatives && sel->info.base.fs.uses_discard && + if (sel->info.stage == MESA_SHADER_FRAGMENT && + /* Derivatives imply helper invocations so check for needs_helper_invocations. */ + sel->info.base.fs.needs_helper_invocations && + sel->info.base.fs.uses_discard && sel->screen->debug_flags & DBG(FS_CORRECT_DERIVS_AFTER_KILL)) shader_variant_flags |= 1 << 3;