venus: properly destroy deferred ahb image before real image creation

Fixes: 19b7b09885 ("venus: prepare image creation helpers for AHB")

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15037>
(cherry picked from commit 9dd15295e3)
This commit is contained in:
Yiwei Zhang 2022-02-15 20:15:57 +00:00 committed by Eric Engestrom
parent 49f5acdc22
commit a1c0f9aeb1
3 changed files with 10 additions and 3 deletions

View file

@ -2380,7 +2380,7 @@
"description": "venus: properly destroy deferred ahb image before real image creation",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "19b7b09885c5975535605465ceb58b06c0170148"
},

View file

@ -206,7 +206,9 @@ vn_image_init_deferred(struct vn_device *dev,
const VkImageCreateInfo *create_info,
struct vn_image *img)
{
return vn_image_init(dev, create_info, img);
VkResult result = vn_image_init(dev, create_info, img);
img->deferred_info->initialized = result == VK_SUCCESS;
return result;
}
VkResult
@ -298,7 +300,9 @@ vn_DestroyImage(VkDevice device,
if (img->private_memory != VK_NULL_HANDLE)
vn_FreeMemory(device, img->private_memory, pAllocator);
vn_async_vkDestroyImage(dev->instance, device, image, NULL);
/* must not ask renderer to destroy uninitialized deferred image */
if (!img->deferred_info || img->deferred_info->initialized)
vn_async_vkDestroyImage(dev->instance, device, image, NULL);
if (img->deferred_info)
vk_free(alloc, img->deferred_info);

View file

@ -22,6 +22,9 @@ struct vn_image_create_deferred_info {
VkImageCreateInfo create;
VkImageFormatListCreateInfo list;
VkImageStencilUsageCreateInfo stencil;
/* track whether vn_image_init_deferred succeeds */
bool initialized;
};
struct vn_image {