[RFC v3 13/22] radv/wsi: Use image_free for alloc cleanup

Louis-Francis Ratté-Boulianne lfrb at collabora.com
Wed Sep 27 05:28:43 UTC 2017


From: Daniel Stone <daniels at collabora.com>

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 bcdbd7ffe9..30999bdca6 100644
--- a/src/amd/vulkan/radv_wsi.c
+++ b/src/amd/vulkan/radv_wsi.c
@@ -207,6 +207,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,
@@ -230,7 +242,7 @@ radv_wsi_image_create(VkDevice device_h,
 					      true, &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;
@@ -244,7 +256,7 @@ 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;
@@ -258,30 +270,11 @@ radv_wsi_image_create(VkDevice device_h,
 
 	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.0



More information about the xorg-devel mailing list