From fbf781e401ca648a2fcad6dd3bbd2bca28466b85 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Wed, 26 Jun 2019 22:57:10 -0400 Subject: [PATCH] radeonsi/gfx10: support pixel shaders without exports It only works if there are not color and no Z exports. Acked-by: Pierre-Eric Pelloux-Prayer Acked-by: Dave Airlie --- src/gallium/drivers/radeonsi/si_state_shaders.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c index 380533b94dc..3b95ed5d7ab 100644 --- a/src/gallium/drivers/radeonsi/si_state_shaders.c +++ b/src/gallium/drivers/radeonsi/si_state_shaders.c @@ -1587,8 +1587,15 @@ static void si_shader_ps(struct si_screen *sscreen, struct si_shader *shader) * stalls without this setting. * * Don't add this to CB_SHADER_MASK. + * + * GFX10 supports pixel shaders without exports by setting both + * the color and Z formats to SPI_SHADER_ZERO. The hw will skip export + * instructions if any are present. */ - if (!spi_shader_col_format && + if ((sscreen->info.chip_class <= GFX9 || + info->uses_kill || + shader->key.part.ps.epilog.alpha_func != PIPE_FUNC_ALWAYS) && + !spi_shader_col_format && !info->writes_z && !info->writes_stencil && !info->writes_samplemask) spi_shader_col_format = V_028714_SPI_SHADER_32_R; -- 2.30.2