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

Author: Erik Faye-Lund <erik.faye-l...@collabora.com>
Date:   Mon May 10 15:31:18 2021 +0200

zink: check for error when binding memory

If binding fails, we don't really have a valid image. So let's make sure
we free up the memory sooner rather than later.

Reviewed-by: Adam Jackson <a...@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10689>

---

 src/gallium/drivers/zink/zink_resource.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_resource.c 
b/src/gallium/drivers/zink/zink_resource.c
index 80908a2b195..d0d9df53eb4 100644
--- a/src/gallium/drivers/zink/zink_resource.c
+++ b/src/gallium/drivers/zink/zink_resource.c
@@ -538,11 +538,17 @@ resource_object_create(struct zink_screen *screen, const 
struct pipe_resource *t
 
    if (templ->target == PIPE_BUFFER) {
       if (!(templ->flags & PIPE_RESOURCE_FLAG_SPARSE))
-         vkBindBufferMemory(screen->dev, obj->buffer, obj->mem, obj->offset);
-   } else
-      vkBindImageMemory(screen->dev, obj->image, obj->mem, obj->offset);
+         if (vkBindBufferMemory(screen->dev, obj->buffer, obj->mem, 
obj->offset) != VK_SUCCESS)
+            goto fail3;
+   } else {
+      if (vkBindImageMemory(screen->dev, obj->image, obj->mem, obj->offset) != 
VK_SUCCESS)
+         goto fail3;
+   }
    return obj;
 
+fail3:
+   vkFreeMemory(screen->dev, obj->mem, NULL);
+
 fail2:
    if (templ->target == PIPE_BUFFER)
       vkDestroyBuffer(screen->dev, obj->buffer, NULL);

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to