diff --git a/.pick_status.json b/.pick_status.json index b6ce097d7d2..c539904d8e1 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -526,7 +526,7 @@ "description": "zink: force a new framebuffer for clear_depth_stencil if the clear region is big", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "f1f08e3529de26953e243d3e2e99fa89bbcbe619" }, diff --git a/src/gallium/drivers/zink/zink_clear.c b/src/gallium/drivers/zink/zink_clear.c index ca46a7f8f67..bfe812f2cd4 100644 --- a/src/gallium/drivers/zink/zink_clear.c +++ b/src/gallium/drivers/zink/zink_clear.c @@ -553,6 +553,10 @@ zink_clear_depth_stencil(struct pipe_context *pctx, struct pipe_surface *dst, ctx->render_condition_active = false; } bool cur_attachment = zink_csurface(ctx->fb_state.zsbuf) == zink_csurface(dst); + if (dstx > ctx->fb_state.width || dsty > ctx->fb_state.height || + dstx + width > ctx->fb_state.width || + dsty + height > ctx->fb_state.height) + cur_attachment = false; if (!cur_attachment) { util_blitter_save_framebuffer(ctx->blitter, &ctx->fb_state); set_clear_fb(pctx, NULL, dst);