etnaviv: only flush resource to self if no scanout buffer exists
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: dda956340c
(etnaviv: resolve tile status when flushing resource)
Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
This commit is contained in:
parent
d8b2ccdb88
commit
28550c7875
|
@ -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)) {
|
||||
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;
|
||||
|
|
Loading…
Reference in New Issue