vulkan/wsi/wayland: create swapchain using vk_zalloc()
authorLeandro Ribeiro <leandro.ribeiro@collabora.com>
Tue, 6 Jul 2021 19:00:12 +0000 (16:00 -0300)
committerMarge Bot <eric+marge@anholt.net>
Fri, 20 Aug 2021 18:51:36 +0000 (18:51 +0000)
In wsi_wl_surface_create_swapchain() we have a piece of code to init
some members of the chain to 0, in order to allow us to call
wsi_wl_swapchain_destroy() for cleanup.

Instead, we can use vk_zalloc() to allocate the chain, as it initializes
all members of the struct to zero. This help us to avoid problems when
people add new members to the struct and forget to initialize them.
Also, it makes the code look better.

Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12451>

src/vulkan/wsi/wsi_common_wayland.c

index 4ad33e4..97dd7ee 100644 (file)
@@ -1132,8 +1132,7 @@ wsi_wl_surface_create_swapchain(VkIcdSurfaceBase *icd_surface,
    int num_images = pCreateInfo->minImageCount;
 
    size_t size = sizeof(*chain) + num_images * sizeof(chain->images[0]);
-   chain = vk_alloc(pAllocator, size, 8,
-                      VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
+   chain = vk_zalloc(pAllocator, size, 8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
    if (chain == NULL)
       return VK_ERROR_OUT_OF_HOST_MEMORY;
 
@@ -1144,16 +1143,6 @@ wsi_wl_surface_create_swapchain(VkIcdSurfaceBase *icd_surface,
       return result;
    }
 
-   /* Mark a bunch of stuff as NULL.  This way we can just call
-    * destroy_swapchain for cleanup.
-    */
-   for (uint32_t i = 0; i < num_images; i++) {
-      chain->images[i].buffer = NULL;
-      chain->images[i].data_ptr = NULL;
-   }
-   chain->surface = NULL;
-   chain->frame = NULL;
-
    bool alpha = pCreateInfo->compositeAlpha ==
                       VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR;