[PATCH v2 4/5] etnaviv: Flush TS cache before changing TS configuration

Lucas Stach l.stach at pengutronix.de
Wed Nov 15 15:48:49 UTC 2017


Am Dienstag, den 14.11.2017, 10:21 +0100 schrieb Wladimir J. van der Laan:
> This is to make sure that the TS is properly flushed to memory before
> rendering to a new surface starts.
> 
> Signed-off-by: Wladimir J. van der Laan <laanwj at gmail.com>

This seems to work as intended, at least I wasn't able to spot missing
shadow tiles anymore with sampler TS enabled.

Reviewed-by: Lucas Stach <l.stach at pengutronix.de>

> ---
>  src/gallium/drivers/etnaviv/etnaviv_emit.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/src/gallium/drivers/etnaviv/etnaviv_emit.c b/src/gallium/drivers/etnaviv/etnaviv_emit.c
> index d313af6..b6b06e3 100644
> --- a/src/gallium/drivers/etnaviv/etnaviv_emit.c
> +++ b/src/gallium/drivers/etnaviv/etnaviv_emit.c
> @@ -322,6 +322,11 @@ etna_emit_state(struct etna_context *ctx)
>        etna_stall(stream, SYNC_RECIPIENT_RA, SYNC_RECIPIENT_PE);
>     }
>  
> +   /* Flush TS cache before changing TS configuration. */
> +   if (unlikely(dirty & ETNA_DIRTY_TS)) {
> +      etna_set_state(stream, VIVS_TS_FLUSH_CACHE, VIVS_TS_FLUSH_CACHE_FLUSH);
> +   }
> +
>     /* If MULTI_SAMPLE_CONFIG.MSAA_SAMPLES changed, clobber affected shader
>      * state to make sure it is always rewritten. */
>     if (unlikely(dirty & (ETNA_DIRTY_FRAMEBUFFER))) {


More information about the etnaviv mailing list