If this flag is set, then the image and the bo have the same lifetime.
vkDestroyImage will release the bo.
We need this for VK_ANDROID_native_buffer, because that extension
creates the VkImage *and* imports its memory during the same
call, vkCreateImage.
v2: Rebase onto VK_KHR_bind_memory2.
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
if (!image)
return;
+ for (uint32_t p = 0; p < image->n_planes; ++p) {
+ if (image->planes[p].bo_is_owned) {
+ assert(image->planes[p].bo != NULL);
+ anv_bo_cache_release(device, &device->bo_cache, image->planes[p].bo);
+ }
+ }
+
vk_free2(&device->alloc, pAllocator, image);
}
struct anv_device_memory *memory,
uint32_t memory_offset)
{
+ assert(!image->planes[plane].bo_is_owned);
+
if (!memory) {
image->planes[plane].bo = NULL;
image->planes[plane].bo_offset = 0;
*/
struct anv_bo *bo;
VkDeviceSize bo_offset;
+
+ /**
+ * When destroying the image, also free the bo.
+ * */
+ bool bo_is_owned;
} planes[3];
};