[Mesa-dev] [PATCH] radeonsi: always allocate export memory for pixel shaders
Marek Olšák
maraeo at gmail.com
Sun May 8 09:49:36 UTC 2016
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Marek
On Sun, May 8, 2016 at 12:07 AM, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
> From: Nicolai Hähnle <nicolai.haehnle at amd.com>
>
> Experiments with framebuffer-no-attachments type draw calls have shown that
> NULL exports stall terribly unless we ensure that export memory is allocated
> by the SPI.
> ---
> src/gallium/drivers/radeonsi/si_state_shaders.c | 15 ++++++++++-----
> 1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c
> index 0bfd7e8..11e7309 100644
> --- a/src/gallium/drivers/radeonsi/si_state_shaders.c
> +++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
> @@ -688,14 +688,19 @@ static void si_shader_ps(struct si_shader *shader)
> spi_shader_col_format = si_get_spi_shader_col_format(shader);
> cb_shader_mask = si_get_cb_shader_mask(spi_shader_col_format);
>
> - /* This must be non-zero for alpha-test/kill to work.
> - * The hardware ignores the EXEC mask if no export memory is allocated.
> + /* Ensure that some export memory is always allocated, for two reasons:
> + *
> + * 1) Correctness: The hardware ignores the EXEC mask if no export
> + * memory is allocated, so KILL and alpha test do not work correctly
> + * without this.
> + * 2) Performance: Every shader needs at least a NULL export, even when
> + * it writes no color/depth output. The NULL export instruction
> + * stalls without this setting.
> + *
> * Don't add this to CB_SHADER_MASK.
> */
> if (!spi_shader_col_format &&
> - !info->writes_z && !info->writes_stencil && !info->writes_samplemask &&
> - (shader->selector->info.uses_kill ||
> - shader->key.ps.epilog.alpha_func != PIPE_FUNC_ALWAYS))
> + !info->writes_z && !info->writes_stencil && !info->writes_samplemask)
> spi_shader_col_format = V_028714_SPI_SHADER_32_R;
>
> si_pm4_set_reg(pm4, R_0286CC_SPI_PS_INPUT_ENA, input_ena);
> --
> 2.7.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list