Mesa (master): zink: disable render_condition_enable during blit

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Jan 8 15:08:33 UTC 2021


Module: Mesa
Branch: master
Commit: 317ec8b5011d7d610cc0b8c05f5be28a7d818d42
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=317ec8b5011d7d610cc0b8c05f5be28a7d818d42

Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date:   Fri Jan  8 09:50:02 2021 +0100

zink: disable render_condition_enable during blit

We don't support stencil-exports yet, and even when we will, we might
not support it on all hardware. So we really need an alternative plan
here, even when render_condition_enable is true.

Fixing this properly is much more involved, and depends on reworking
render-condition along the lines that we do in !7746 to support pausing
and resuming properly first. So let's do the minimal thing, which is to
allow this to work in cases where no render-condition is active.

Fixes: 767f70dfe13 ("gallium/util: fix util_can_blit_via_copy_region for conditional rendering")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4056
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8379>

---

 src/gallium/drivers/zink/zink_blit.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

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",



More information about the mesa-commit mailing list