On Mon, 2017-06-26 at 12:25 +0200, Lucas Stach wrote:
> Currently a resource flush may trigger a self resolve, even if a scanout 
> buffer
> exists, but is up to date. If a scanout buffer exists we only ever want to
> flush the resource to the scanout buffer. This fixes a performance regression.
> 
> Fixes: dda956340ce9 (etnaviv: resolve tile status when flushing resource)
> Cc: [email protected]
> Signed-off-by: Lucas Stach <[email protected]>
> ---
>  src/gallium/drivers/etnaviv/etnaviv_clear_blit.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c 
> b/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c
> index e4620a3015e9..80967be3f93d 100644
> --- a/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c
> +++ b/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c
> @@ -602,10 +602,11 @@ etna_flush_resource(struct pipe_context *pctx, struct 
> pipe_resource *prsc)
>  {
>     struct etna_resource *rsc = etna_resource(prsc);
>  
> -   if (rsc->scanout &&
> -       etna_resource_older(etna_resource(rsc->scanout->prime), rsc)) {
> -      etna_copy_resource(pctx, rsc->scanout->prime, prsc, 0, 0);
> -      etna_resource(rsc->scanout->prime)->seqno = rsc->seqno;
> +   if (rsc->scanout) {
> +      if (etna_resource_older(etna_resource(rsc->scanout->prime), rsc)) {
> +         etna_copy_resource(pctx, rsc->scanout->prime, prsc, 0, 0);
> +         etna_resource(rsc->scanout->prime)->seqno = rsc->seqno;
> +      }
>     } else if (etna_resource_needs_flush(rsc)) {
>        etna_copy_resource(pctx, prsc, prsc, 0, 0);
>        rsc->flush_seqno = rsc->seqno;

Reviewed-by: Philipp Zabel <[email protected]>

regards
Philipp

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to