Mesa (main): zink: flag swapchains when updating fails

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Apr 27 22:20:25 UTC 2022


Module: Mesa
Branch: main
Commit: 651b71a6ca829bc7977748d506fc3b2afd8e7999
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=651b71a6ca829bc7977748d506fc3b2afd8e7999

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Tue Apr 19 10:50:23 2022 -0400

zink: flag swapchains when updating fails

these are dead, they just don't know it yet

Reviewed-by: Adam Jackson <ajax at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16038>

---

 src/gallium/drivers/zink/zink_kopper.c | 5 +++++
 src/gallium/drivers/zink/zink_kopper.h | 1 +
 2 files changed, 6 insertions(+)

diff --git a/src/gallium/drivers/zink/zink_kopper.c b/src/gallium/drivers/zink/zink_kopper.c
index 12156989653..90203caa057 100644
--- a/src/gallium/drivers/zink/zink_kopper.c
+++ b/src/gallium/drivers/zink/zink_kopper.c
@@ -513,6 +513,10 @@ zink_kopper_acquire(struct zink_context *ctx, struct zink_resource *res, uint64_
 {
    assert(res->obj->dt);
    struct kopper_displaytarget *cdt = kopper_displaytarget(res->obj->dt);
+   if (cdt->is_kill) {
+      kill_swapchain(ctx, res);
+      return false;
+   }
    const struct kopper_swapchain *cswap = cdt->swapchain;
    res->obj->new_dt |= res->base.b.width0 != cswap->scci.imageExtent.width ||
                        res->base.b.height0 != cswap->scci.imageExtent.height;
@@ -738,6 +742,7 @@ zink_kopper_update(struct pipe_screen *pscreen, struct pipe_resource *pres, int
    }
    if (update_caps(screen, cdt) != VK_SUCCESS) {
       mesa_loge("zink: failed to update swapchain capabilities");
+      cdt->is_kill = true;
       return false;
    }
    *w = cdt->caps.currentExtent.width;
diff --git a/src/gallium/drivers/zink/zink_kopper.h b/src/gallium/drivers/zink/zink_kopper.h
index 61e0db96738..77c102a261d 100644
--- a/src/gallium/drivers/zink/zink_kopper.h
+++ b/src/gallium/drivers/zink/zink_kopper.h
@@ -69,6 +69,7 @@ struct kopper_displaytarget
    VkSurfaceCapabilitiesKHR caps;
    VkImageFormatListCreateInfoKHR format_list;
    enum kopper_type type;
+   bool is_kill;
 };
 
 struct zink_context;



More information about the mesa-commit mailing list