zink: force a new framebuffer for clear_depth_stencil if the clear region is big

can't clear outside the framebuffer, so set a new one if necessary

Fixes: f1f08e3529 ("zink: massively simplify zink_clear_depth_stencil")

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17775>
This commit is contained in:
Mike Blumenkrantz 2022-07-27 16:04:54 -04:00 committed by Marge Bot
parent 80364c4d19
commit ff1fb9101f

View file

@ -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);