Merge pull request #310 from orlowd/vma_atomic-def-fix
Fix atomic type used in AtomicTransactionalIncrement
diff --git a/include/vk_mem_alloc.h b/include/vk_mem_alloc.h
index 844bbff..b787c36 100644
--- a/include/vk_mem_alloc.h
+++ b/include/vk_mem_alloc.h
@@ -4002,11 +4002,11 @@
#ifndef _VMA_ATOMIC_TRANSACTIONAL_INCREMENT
// An object that increments given atomic but decrements it back in the destructor unless Commit() is called.
-template<typename T>
+template<typename AtomicT>
struct AtomicTransactionalIncrement
{
public:
- typedef std::atomic<T> AtomicT;
+ using T = decltype(AtomicT().load());
~AtomicTransactionalIncrement()
{
@@ -15374,7 +15374,7 @@
VkResult VmaAllocator_T::AllocateVulkanMemory(const VkMemoryAllocateInfo* pAllocateInfo, VkDeviceMemory* pMemory)
{
- AtomicTransactionalIncrement<uint32_t> deviceMemoryCountIncrement;
+ AtomicTransactionalIncrement<VMA_ATOMIC_UINT32> deviceMemoryCountIncrement;
const uint64_t prevDeviceMemoryCount = deviceMemoryCountIncrement.Increment(&m_DeviceMemoryCount);
#if VMA_DEBUG_DONT_EXCEED_MAX_MEMORY_ALLOCATION_COUNT
if(prevDeviceMemoryCount >= m_PhysicalDeviceProperties.limits.maxMemoryAllocationCount)