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: mesa-sta...@lists.freedesktop.org Signed-off-by: Lucas Stach <l.st...@pengutronix.de> --- 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; -- 2.11.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev