vulkan/util: Add and use vk_multialloc_zalloc variants
authorCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Wed, 14 Jul 2021 05:39:23 +0000 (22:39 -0700)
committerMarge Bot <eric+marge@anholt.net>
Thu, 15 Jul 2021 21:34:53 +0000 (21:34 +0000)
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11890>

src/vulkan/util/vk_alloc.h
src/vulkan/util/vk_object.c

index da8b14c..56d3d77 100644 (file)
@@ -242,4 +242,28 @@ vk_multialloc_alloc2(struct vk_multialloc *ma,
    return vk_multialloc_alloc(ma, alloc ? alloc : parent_alloc, scope);
 }
 
+static ALWAYS_INLINE void *
+vk_multialloc_zalloc(struct vk_multialloc *ma,
+                     const VkAllocationCallbacks *alloc,
+                     VkSystemAllocationScope scope)
+{
+   void *ptr = vk_multialloc_alloc(ma, alloc, scope);
+
+   if (ptr == NULL)
+      return NULL;
+
+   memset(ptr, 0, ma->size);
+
+   return ptr;
+}
+
+static ALWAYS_INLINE void *
+vk_multialloc_zalloc2(struct vk_multialloc *ma,
+                      const VkAllocationCallbacks *parent_alloc,
+                      const VkAllocationCallbacks *alloc,
+                      VkSystemAllocationScope scope)
+{
+   return vk_multialloc_zalloc(ma, alloc ? alloc : parent_alloc, scope);
+}
+
 #endif
index af2c72b..c6921ca 100644 (file)
@@ -113,12 +113,11 @@ vk_object_multizalloc(struct vk_device *device,
                       const VkAllocationCallbacks *alloc,
                       VkObjectType obj_type)
 {
-   void *ptr = vk_multialloc_alloc2(ma, &device->alloc, alloc,
-                                    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
+   void *ptr = vk_multialloc_zalloc2(ma, &device->alloc, alloc,
+                                     VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
    if (ptr == NULL)
       return NULL;
 
-   memset(ptr, 0, ma->size);
    vk_object_base_init(device, (struct vk_object_base *)ptr, obj_type);
 
    return ptr;