[Mesa-dev] [PATCH] radeonsi: don't miss changes to SPI_TMPRING_SIZE

Nicolai Hähnle nhaehnle at gmail.com
Wed Jan 13 10:48:07 PST 2016


Good catch.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

On 13.01.2016 13:32, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> I'm not sure about the consequences of this bug, but it's definitely
> dangerous.
>
> This applies to SI, CIK, VI.
>
> Cc: 11.0 11.1 <mesa-stable at lists.freedesktop.org>
> ---
>   src/gallium/drivers/radeonsi/si_state_shaders.c | 9 +++++++--
>   1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c
> index 35b226f..8ff70b4 100644
> --- a/src/gallium/drivers/radeonsi/si_state_shaders.c
> +++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
> @@ -1317,6 +1317,7 @@ static bool si_update_spi_tmpring_size(struct si_context *sctx)
>   		si_get_max_scratch_bytes_per_wave(sctx);
>   	unsigned scratch_needed_size = scratch_bytes_per_wave *
>   		sctx->scratch_waves;
> +	unsigned spi_tmpring_size;
>   	int r;
>
>   	if (scratch_needed_size > 0) {
> @@ -1386,8 +1387,12 @@ static bool si_update_spi_tmpring_size(struct si_context *sctx)
>   	assert((scratch_needed_size & ~0x3FF) == scratch_needed_size &&
>   		"scratch size should already be aligned correctly.");
>
> -	sctx->spi_tmpring_size = S_0286E8_WAVES(sctx->scratch_waves) |
> -				S_0286E8_WAVESIZE(scratch_bytes_per_wave >> 10);
> +	spi_tmpring_size = S_0286E8_WAVES(sctx->scratch_waves) |
> +			   S_0286E8_WAVESIZE(scratch_bytes_per_wave >> 10);
> +	if (spi_tmpring_size != sctx->spi_tmpring_size) {
> +		sctx->spi_tmpring_size = spi_tmpring_size;
> +		sctx->emit_scratch_reloc = true;
> +	}
>   	return true;
>   }
>
>


More information about the mesa-dev mailing list