zink: reapply zsbuf state after unordered blits

this otherwise creates desync if a renderpass continues after blit reordering

cc: mesa-stable

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40366>
This commit is contained in:
Mike Blumenkrantz 2026-03-11 11:29:59 -04:00 committed by Marge Bot
parent 8cbb532251
commit 43a6928d62

View file

@ -491,6 +491,8 @@ zink_blit(struct pipe_context *pctx,
if (whole)
pctx->invalidate_resource(pctx, info->dst.resource);
bool zsbuf_unused = ctx->zsbuf_unused;
bool zsbuf_readonly = ctx->zsbuf_readonly;
ctx->unordered_blitting = !(info->render_condition_enable && ctx->render_condition_active) &&
!needs_present_readback &&
zink_get_cmdbuf(ctx, src, dst) == ctx->bs->reordered_cmdbuf;
@ -571,6 +573,8 @@ zink_blit(struct pipe_context *pctx,
ctx->gfx_pipeline_state.pipeline = pipeline;
ctx->pipeline_changed[ZINK_PIPELINE_GFX] = true;
ctx->ds3_states = ds3_states;
ctx->zsbuf_readonly = zsbuf_readonly;
ctx->zsbuf_unused = zsbuf_unused;
zink_select_draw_vbo(ctx);
}
ctx->unordered_blitting = false;