diff --git a/src/gallium/drivers/zink/zink_blit.c b/src/gallium/drivers/zink/zink_blit.c index 71b36d0992d..fa195d21b6a 100644 --- a/src/gallium/drivers/zink/zink_blit.c +++ b/src/gallium/drivers/zink/zink_blit.c @@ -184,8 +184,17 @@ zink_blit(struct pipe_context *pctx, struct zink_resource *src = zink_resource(info->src.resource); struct zink_resource *dst = zink_resource(info->dst.resource); /* if we're copying between resources with matching aspects then we can probably just copy_region */ - if (src->aspect == dst->aspect && util_try_blit_via_copy_region(pctx, info)) - return; + if (src->aspect == dst->aspect) { + struct pipe_blit_info new_info = *info; + + if (src->aspect & VK_IMAGE_ASPECT_STENCIL_BIT && + new_info.render_condition_enable && + !ctx->render_condition_active) + new_info.render_condition_enable = false; + + if (util_try_blit_via_copy_region(pctx, &new_info)) + return; + } if (!util_blitter_is_blit_supported(ctx->blitter, info)) { debug_printf("blit unsupported %s -> %s\n",