zink: handle swapchain creation failure less lazily
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Thu, 9 Mar 2023 12:51:16 +0000 (07:51 -0500)
committerMarge Bot <emma+marge@anholt.net>
Tue, 21 Mar 2023 01:39:39 +0000 (01:39 +0000)
this is a real scenario

cc: mesa-stable

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22027>

src/gallium/drivers/zink/zink_resource.c

index c379a67..cf4e5ab 100644 (file)
@@ -1250,7 +1250,13 @@ resource_create(struct pipe_screen *pscreen,
                                                          templ->height0,
                                                          64, loader_private,
                                                          &res->dt_stride);
-         assert(res->obj->dt);
+         if (!res->obj->dt) {
+            mesa_loge("zink: could not create swapchain");
+            FREE(res->obj);
+            free(res->modifiers);
+            FREE_CL(res);
+            return NULL;
+         }
       } else {
          /* frontbuffer */
          struct zink_resource *back = (void*)loader_private;