From 93d7bde9dc4e41acd98ab5ab0ad989941a0b7a27 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 17 Mar 2023 12:55:00 -0400 Subject: [PATCH] zink: add a fixup case for readonly zsbuf clears this shouldn't currently be possible to hit, but in the future it may Part-of: --- src/gallium/drivers/zink/zink_clear.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/zink_clear.c b/src/gallium/drivers/zink/zink_clear.c index 2fa554ca30c..5c816122714 100644 --- a/src/gallium/drivers/zink/zink_clear.c +++ b/src/gallium/drivers/zink/zink_clear.c @@ -199,8 +199,14 @@ zink_clear(struct pipe_context *pctx, } if (batch->in_rp) { - clear_in_rp(pctx, buffers, scissor_state, pcolor, depth, stencil); - return; + if (buffers & PIPE_CLEAR_DEPTHSTENCIL && (!zink_is_zsbuf_used(ctx) || ctx->zsbuf_readonly)) { + /* this will need a layout change */ + assert(!zink_screen(ctx->base.screen)->driver_workarounds.track_renderpasses); + zink_batch_no_rp(ctx); + } else { + clear_in_rp(pctx, buffers, scissor_state, pcolor, depth, stencil); + return; + } } unsigned rp_clears_enabled = ctx->rp_clears_enabled;