Merge pull request #148 from res2k/vma_aligned_alloc-tweaks

Some tweaks to vma_aligned_alloc()
This commit is contained in:
Adam Sawicki 2020-08-31 12:41:41 +02:00 committed by GitHub
commit 1420873213
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -4057,7 +4057,7 @@ remove them if not needed.
#if defined(__ANDROID_API__) && (__ANDROID_API__ < 16) #if defined(__ANDROID_API__) && (__ANDROID_API__ < 16)
#include <cstdlib> #include <cstdlib>
void *vma_aligned_alloc(size_t alignment, size_t size) static void* vma_aligned_alloc(size_t alignment, size_t size)
{ {
// alignment must be >= sizeof(void*) // alignment must be >= sizeof(void*)
if(alignment < sizeof(void*)) if(alignment < sizeof(void*))
@ -4074,7 +4074,7 @@ void *vma_aligned_alloc(size_t alignment, size_t size)
#include <AvailabilityMacros.h> #include <AvailabilityMacros.h>
#endif #endif
void *vma_aligned_alloc(size_t alignment, size_t size) static void* vma_aligned_alloc(size_t alignment, size_t size)
{ {
#if defined(__APPLE__) && (defined(MAC_OS_X_VERSION_10_16) || defined(__IPHONE_14_0)) #if defined(__APPLE__) && (defined(MAC_OS_X_VERSION_10_16) || defined(__IPHONE_14_0))
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_16 || __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_14_0 #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_16 || __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_14_0
@ -4100,17 +4100,29 @@ void *vma_aligned_alloc(size_t alignment, size_t size)
return VMA_NULL; return VMA_NULL;
} }
#elif defined(_WIN32) #elif defined(_WIN32)
void *vma_aligned_alloc(size_t alignment, size_t size) static void* vma_aligned_alloc(size_t alignment, size_t size)
{ {
return _aligned_malloc(size, alignment); return _aligned_malloc(size, alignment);
} }
#else #else
void *vma_aligned_alloc(size_t alignment, size_t size) static void* vma_aligned_alloc(size_t alignment, size_t size)
{ {
return aligned_alloc(alignment, size); return aligned_alloc(alignment, size);
} }
#endif #endif
#if defined(_WIN32)
static void vma_aligned_free(void* ptr)
{
_aligned_free(ptr);
}
#else
static void vma_aligned_free(void* ptr)
{
free(ptr);
}
#endif
// If your compiler is not compatible with C++11 and definition of // If your compiler is not compatible with C++11 and definition of
// aligned_alloc() function is missing, uncommeting following line may help: // aligned_alloc() function is missing, uncommeting following line may help:
@ -4143,12 +4155,13 @@ void *vma_aligned_alloc(size_t alignment, size_t size)
#define VMA_SYSTEM_ALIGNED_MALLOC(size, alignment) vma_aligned_alloc((alignment), (size)) #define VMA_SYSTEM_ALIGNED_MALLOC(size, alignment) vma_aligned_alloc((alignment), (size))
#endif #endif
#ifndef VMA_SYSTEM_FREE #ifndef VMA_SYSTEM_ALIGNED_FREE
#if defined(_WIN32) // VMA_SYSTEM_FREE is the old name, but might have been defined by the user
#define VMA_SYSTEM_FREE(ptr) _aligned_free(ptr) #if defined(VMA_SYSTEM_FREE)
#define VMA_SYSTEM_ALIGNED_FREE(ptr) VMA_SYSTEM_FREE(ptr)
#else #else
#define VMA_SYSTEM_FREE(ptr) free(ptr) #define VMA_SYSTEM_ALIGNED_FREE(ptr) vma_aligned_free(ptr)
#endif #endif
#endif #endif
#ifndef VMA_MIN #ifndef VMA_MIN
@ -4799,7 +4812,7 @@ static void VmaFree(const VkAllocationCallbacks* pAllocationCallbacks, void* ptr
} }
else else
{ {
VMA_SYSTEM_FREE(ptr); VMA_SYSTEM_ALIGNED_FREE(ptr);
} }
} }