rpcsx/rpcs3/Emu/RSX/VK/VKMemAlloc.cpp

90 lines
1.8 KiB
C++
Raw Normal View History

#define VMA_IMPLEMENTATION
2019-12-03 23:34:23 +01:00
2020-12-10 16:44:17 +01:00
#include "util/atomic.hpp"
#include "util/mutex.h"
2020-12-10 16:44:17 +01:00
// Protect some STL headers from macro (add more if it fails to compile)
#include <atomic>
#include <thread>
#include <memory>
#include <mutex>
// Replace VMA atomics with atomic_t
2020-12-10 16:44:17 +01:00
#define VMA_ATOMIC_UINT32 atomic_t<u32>
#define VMA_ATOMIC_UINT64 atomic_t<u64>
#define compare_exchange_strong compare_exchange
#define compare_exchange_weak compare_exchange
// Replace VMA mutex with shared_mutex
class VmaRWMutex
{
public:
void LockRead()
{
m_mutex.lock_shared();
}
void UnlockRead()
{
m_mutex.unlock_shared();
}
bool TryLockRead()
{
return m_mutex.try_lock_shared();
}
void LockWrite()
{
m_mutex.lock();
}
void UnlockWrite()
{
m_mutex.unlock();
}
bool TryLockWrite()
{
return m_mutex.try_lock();
}
void Lock()
{
m_mutex.lock();
}
void Unlock()
{
m_mutex.unlock();
}
bool TryLock()
{
return m_mutex.try_lock();
}
private:
shared_mutex m_mutex;
};
#define VMA_RW_MUTEX VmaRWMutex
#define VMA_MUTEX VmaRWMutex
2019-12-03 23:34:23 +01:00
#ifdef _MSC_VER
#pragma warning(push, 0)
#else
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wall"
#pragma GCC diagnostic ignored "-Wextra"
#pragma GCC diagnostic ignored "-Wold-style-cast"
2021-01-12 11:01:06 +01:00
#pragma GCC diagnostic ignored "-Wunused-variable"
#pragma GCC diagnostic ignored "-Wsuggest-override"
2021-03-05 20:05:37 +01:00
#pragma GCC diagnostic ignored "-Wunused-parameter"
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
#ifdef __clang__
#pragma clang diagnostic ignored "-Winconsistent-missing-override"
#else
#pragma GCC diagnostic ignored "-Wsuggest-attribute=noreturn"
#endif
2019-12-03 23:34:23 +01:00
#endif
#include "3rdparty/GPUOpen/VulkanMemoryAllocator/src/vk_mem_alloc.h"
2019-12-03 23:34:23 +01:00
#ifdef _MSC_VER
#pragma warning(pop)
#else
#pragma GCC diagnostic pop
#endif