17ec681f3Smrg/*
27ec681f3Smrg * Copyright 2021 Google LLC
37ec681f3Smrg * SPDX-License-Identifier: MIT
47ec681f3Smrg */
57ec681f3Smrg
67ec681f3Smrg#include "vk_alloc.h"
77ec681f3Smrg
87ec681f3Smrg#include <stdlib.h>
97ec681f3Smrg
107ec681f3Smrg#if __STDC_VERSION__ >= 201112L && !defined(_MSC_VER)
117ec681f3Smrg#include <stddef.h>
127ec681f3Smrg#define MAX_ALIGN alignof(max_align_t)
137ec681f3Smrg#else
147ec681f3Smrg/* long double might be 128-bit, but our callers do not need that anyway(?) */
157ec681f3Smrg#include <stdint.h>
167ec681f3Smrg#define MAX_ALIGN alignof(uint64_t)
177ec681f3Smrg#endif
187ec681f3Smrg
197ec681f3Smrgstatic VKAPI_ATTR void * VKAPI_CALL
207ec681f3Smrgvk_default_alloc(void *pUserData,
217ec681f3Smrg                 size_t size,
227ec681f3Smrg                 size_t alignment,
237ec681f3Smrg                 VkSystemAllocationScope allocationScope)
247ec681f3Smrg{
257ec681f3Smrg   assert(MAX_ALIGN % alignment == 0);
267ec681f3Smrg   return malloc(size);
277ec681f3Smrg}
287ec681f3Smrg
297ec681f3Smrgstatic VKAPI_ATTR void * VKAPI_CALL
307ec681f3Smrgvk_default_realloc(void *pUserData,
317ec681f3Smrg                   void *pOriginal,
327ec681f3Smrg                   size_t size,
337ec681f3Smrg                   size_t alignment,
347ec681f3Smrg                   VkSystemAllocationScope allocationScope)
357ec681f3Smrg{
367ec681f3Smrg   assert(MAX_ALIGN % alignment == 0);
377ec681f3Smrg   return realloc(pOriginal, size);
387ec681f3Smrg}
397ec681f3Smrg
407ec681f3Smrgstatic VKAPI_ATTR void VKAPI_CALL
417ec681f3Smrgvk_default_free(void *pUserData, void *pMemory)
427ec681f3Smrg{
437ec681f3Smrg   free(pMemory);
447ec681f3Smrg}
457ec681f3Smrg
467ec681f3Smrgconst VkAllocationCallbacks *
477ec681f3Smrgvk_default_allocator(void)
487ec681f3Smrg{
497ec681f3Smrg   static const VkAllocationCallbacks allocator = {
507ec681f3Smrg      .pfnAllocation = vk_default_alloc,
517ec681f3Smrg      .pfnReallocation = vk_default_realloc,
527ec681f3Smrg      .pfnFree = vk_default_free,
537ec681f3Smrg   };
547ec681f3Smrg   return &allocator;
557ec681f3Smrg}
56