zink: merge copy-to-scanout path into non-deferred flush path

this eliminates any desync between scanout presentation and clears

Fixes: 104603fa76 ("zink: create separate linear tiling image for scanout")

Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10239>
(cherry picked from commit 2138aef7c9)
This commit is contained in:
Mike Blumenkrantz 2021-04-14 12:47:53 -04:00 committed by Eric Engestrom
parent c835bfc52a
commit 4f8cf816ac
2 changed files with 5 additions and 7 deletions

View file

@ -22,7 +22,7 @@
"description": "zink: merge copy-to-scanout path into non-deferred flush path",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"master_sha": null,
"because_sha": "104603fa763c52e98a79785dd514beab949546db"
},

View file

@ -1818,12 +1818,10 @@ zink_flush(struct pipe_context *pctx,
struct zink_fence *fence = NULL;
struct zink_screen *screen = zink_screen(ctx->base.screen);
if (!deferred && ctx->clears_enabled) {
/* start rp to do all the clears */
zink_begin_render_pass(ctx, batch);
}
if (flags & PIPE_FLUSH_END_OF_FRAME) {
if (!deferred) {
if (ctx->clears_enabled)
/* start rp to do all the clears */
zink_begin_render_pass(ctx, batch);
zink_end_render_pass(ctx, batch);
if (ctx->flush_res) {
copy_scanout(ctx, ctx->flush_res);