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