[Mesa-dev] [PATCH 07/14] radv/wsi: Use image_free for alloc cleanup
Daniel Stone
daniels at collabora.com
Fri Jul 21 13:42:10 UTC 2017
If we fail in the alloc, just use the (mostly) identical
radv_wsi_image_free() to clean up after us.
Signed-off-by: Daniel Stone <daniels at collabora.com>
---
src/amd/vulkan/radv_wsi.c | 39 ++++++++++++++++-----------------------
1 file changed, 16 insertions(+), 23 deletions(-)
diff --git a/src/amd/vulkan/radv_wsi.c b/src/amd/vulkan/radv_wsi.c
index f3095c17e4..be6f341ef8 100644
--- a/src/amd/vulkan/radv_wsi.c
+++ b/src/amd/vulkan/radv_wsi.c
@@ -206,6 +206,18 @@ fail_create_image:
return result;
}
+static void
+radv_wsi_image_free(VkDevice device,
+ const VkAllocationCallbacks* pAllocator,
+ struct wsi_image_base *wsi_image)
+{
+ if (wsi_image->linear_image != VK_NULL_HANDLE)
+ radv_DestroyImage(device, wsi_image->linear_image, pAllocator);
+ if (wsi_image->linear_memory != VK_NULL_HANDLE)
+ radv_FreeMemory(device, wsi_image->linear_memory, pAllocator);
+ radv_DestroyImage(device, wsi_image->image, pAllocator);
+ radv_FreeMemory(device, wsi_image->memory, pAllocator);
+}
static VkResult
radv_wsi_image_create(VkDevice device_h,
@@ -229,7 +241,7 @@ radv_wsi_image_create(VkDevice device_h,
false, &wsi_image->linear_image,
&wsi_image->linear_memory);
if (result != VK_SUCCESS)
- goto fail_alloc;
+ goto fail;
} else {
wsi_image->linear_image = VK_NULL_HANDLE;
wsi_image->linear_memory = VK_NULL_HANDLE;
@@ -243,37 +255,18 @@ radv_wsi_image_create(VkDevice device_h,
RADV_FROM_HANDLE(radv_device, device, device_h);
if (!radv_get_memory_fd(device, memory, &wsi_image->fds[0]))
- goto fail_linear;
+ goto fail;
wsi_image->num_planes = 1;
wsi_image->sizes[0] = image->size;
wsi_image->offsets[0] = image->offset;
wsi_image->row_pitches[0] = surface->u.legacy.level[0].nblk_x * surface->bpe;
return VK_SUCCESS;
-fail_linear:
- if (wsi_image->linear_memory != VK_NULL_HANDLE)
- radv_FreeMemory(device_h, wsi_image->linear_memory, pAllocator);
- if (wsi_image->linear_image != VK_NULL_HANDLE)
- radv_DestroyImage(device_h, wsi_image->linear_image, pAllocator);
-fail_alloc:
- radv_FreeMemory(device_h, wsi_image->memory, pAllocator);
- radv_DestroyImage(device_h, wsi_image->image, pAllocator);
+fail:
+ radv_wsi_image_free(device_h, pAllocator, wsi_image);
return result;
}
-static void
-radv_wsi_image_free(VkDevice device,
- const VkAllocationCallbacks* pAllocator,
- struct wsi_image_base *wsi_image)
-{
- if (wsi_image->linear_image != VK_NULL_HANDLE)
- radv_DestroyImage(device, wsi_image->linear_image, pAllocator);
- if (wsi_image->linear_memory != VK_NULL_HANDLE)
- radv_FreeMemory(device, wsi_image->linear_memory, pAllocator);
- radv_DestroyImage(device, wsi_image->image, pAllocator);
- radv_FreeMemory(device, wsi_image->memory, pAllocator);
-}
-
static const struct wsi_image_fns radv_wsi_image_fns = {
.create_wsi_image = radv_wsi_image_create,
.free_wsi_image = radv_wsi_image_free,
--
2.13.2
More information about the mesa-dev
mailing list