2017-06-26 13:30 GMT+02:00 Lucas Stach <[email protected]>: > Am Montag, den 26.06.2017, 13:09 +0200 schrieb Christian Gmeiner: >> 2017-06-26 12:25 GMT+02:00 Lucas Stach <[email protected]>: >> > 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]>
Reviewed-by: Christian Gmeiner <[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; >> >> Maybe I am running out of coffee but I do not see the logical change >> here that >> should fix a performance regression. >> >> before: >> if (x && y) { >> do_stuff >> } else if (...) { >> .. >> } > > The change is that we only ever want to enter the else if path if x == > false. Currently we can also hit the else if path if x == true and y == > false. > Thanks - got it now. greets -- Christian Gmeiner, MSc https://www.youtube.com/user/AloryOFFICIAL https://soundcloud.com/christian-gmeiner _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
