zink: disable fbfetch when flushing clears

this ensures there's no weird perf happening, avoids using renderpass
instead of dynamic rendering, and avoids hitting an assert from broken
framebuffer construction

cc: mesa-stable

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19065>
This commit is contained in:
Mike Blumenkrantz 2022-10-13 16:35:22 -04:00 committed by Marge Bot
parent 1ae26de36f
commit d3880a6324

View file

@ -3597,9 +3597,18 @@ zink_flush(struct pipe_context *pctx,
VkSemaphore export_sem = VK_NULL_HANDLE;
/* triggering clears will force has_work */
if (!deferred && ctx->clears_enabled)
if (!deferred && ctx->clears_enabled) {
/* if fbfetch outputs are active, disable them when flushing clears */
unsigned fbfetch_outputs = ctx->fbfetch_outputs;
if (fbfetch_outputs) {
ctx->fbfetch_outputs = 0;
ctx->rp_changed = true;
}
/* start rp to do all the clears */
zink_batch_rp(ctx);
ctx->fbfetch_outputs = fbfetch_outputs;
ctx->rp_changed |= fbfetch_outputs > 0;
}
if (ctx->needs_present && (flags & PIPE_FLUSH_END_OF_FRAME)) {
if (ctx->needs_present->obj->image)