diff --git a/config/lib/vma/vma.cpp b/config/lib/vma/vma.cpp index 0928b552c10e23914054c44b8de43df722aa2cf0..307c27f096bd1bae2b1deb2ca5994f132adc92cc 100644 --- a/config/lib/vma/vma.cpp +++ b/config/lib/vma/vma.cpp @@ -3,5 +3,56 @@ #define _DEBUG #endif +#ifndef _MSVC_LANG +#ifdef __MINGW32__ +#include <stdint.h> +#include <stdlib.h> + +class VmaMutex { +public: + VmaMutex() : m_locked(false) {} + + void Lock() { + while (m_locked); + m_locked = true; + } + + void Unlock() { + m_locked = false; + } +private: + bool m_locked; +}; + +#define VMA_MUTEX VmaMutex + +template <typename T> +T* custom_overestimate_malloc(size_t size) { + return new T[size + (sizeof(T) - 1) / sizeof(T)]; +} + +void* custom_aligned_malloc(size_t alignment, size_t size) { + if (alignment > 4) { + return custom_overestimate_malloc<uint64_t>(size); + } else + if (alignment > 2) { + return custom_overestimate_malloc<uint32_t>(size); + } else + if (alignment > 1) { + return custom_overestimate_malloc<uint16_t>(size); + } else { + return custom_overestimate_malloc<uint8_t>(size); + } +} + +void custom_free(void *ptr) { + delete[] reinterpret_cast<uint8_t*>(ptr); +} + +#define VMA_SYSTEM_ALIGNED_MALLOC(size, alignment) (custom_aligned_malloc(alignment, size)) +#define VMA_SYSTEM_FREE(ptr) (custom_free(ptr)) +#endif +#endif + #define VMA_IMPLEMENTATION #include "vk_mem_alloc.hpp" diff --git a/include/vkcv/Event.hpp b/include/vkcv/Event.hpp index da5cbc72fbb3eee3a71a35c1da6fe32dff06b057..4117d8d35c7541672c54f3053c3fbe2fdde38a40 100644 --- a/include/vkcv/Event.hpp +++ b/include/vkcv/Event.hpp @@ -1,7 +1,10 @@ #pragma once #include <functional> + +#ifndef __MINGW32__ #include <mutex> +#endif namespace vkcv { @@ -27,7 +30,10 @@ namespace vkcv { private: std::vector< event_function<T...> > m_functions; uint32_t m_id_counter; + +#ifndef __MINGW32__ std::mutex m_mutex; +#endif public: @@ -75,14 +81,18 @@ namespace vkcv { * locks the event so its function handles won't be called */ void lock() { +#ifndef __MINGW32__ m_mutex.lock(); +#endif } /** * unlocks the event so its function handles can be called after locking */ void unlock() { +#ifndef __MINGW32__ m_mutex.unlock(); +#endif } explicit event(bool locked = false) { diff --git a/lib/VulkanMemoryAllocator-Hpp b/lib/VulkanMemoryAllocator-Hpp index eae6e8d3bd4593e0d7071c85fba2a8f33fbe5dab..3a61240a5354ce56c222969a69825aabb6ba0a21 160000 --- a/lib/VulkanMemoryAllocator-Hpp +++ b/lib/VulkanMemoryAllocator-Hpp @@ -1 +1 @@ -Subproject commit eae6e8d3bd4593e0d7071c85fba2a8f33fbe5dab +Subproject commit 3a61240a5354ce56c222969a69825aabb6ba0a21 diff --git a/modules/camera/config/GLM.cmake b/modules/camera/config/GLM.cmake index efd6444451100b912aa0b5b4a532dc8f448b0b40..f256ccade8c4f44a89744bb7875371324cf2369d 100644 --- a/modules/camera/config/GLM.cmake +++ b/modules/camera/config/GLM.cmake @@ -4,18 +4,20 @@ find_package(glm QUIET) if (glm_FOUND) list(APPEND vkcv_camera_includes ${GLM_INCLUDE_DIRS}) list(APPEND vkcv_camera_libraries glm) - - list(APPEND vkcv_camera_definitions GLM_DEPTH_ZERO_TO_ONE) - list(APPEND vkcv_camera_definitions GLM_FORCE_LEFT_HANDED) else() if (EXISTS "${vkcv_camera_lib_path}/glm") add_subdirectory(${vkcv_camera_lib}/glm) - + + list(APPEND vkcv_camera_includes ${vkcv_camera_lib_path}/glm) list(APPEND vkcv_camera_libraries glm) - - list(APPEND vkcv_camera_definitions GLM_DEPTH_ZERO_TO_ONE) - list(APPEND vkcv_camera_definitions GLM_FORCE_LEFT_HANDED) else() message(WARNING "GLM is required..! Update the submodules!") endif () endif () + +list(APPEND vkcv_camera_definitions GLM_DEPTH_ZERO_TO_ONE) +list(APPEND vkcv_camera_definitions GLM_FORCE_LEFT_HANDED) + +if ((WIN32) AND (${CMAKE_SIZEOF_VOID_P} MATCHES 4)) + list(APPEND vkcv_camera_definitions GLM_ENABLE_EXPERIMENTAL) +endif()