From 33ae4c3a3711b16210e2b1e14699f1aa5861a461 Mon Sep 17 00:00:00 2001 From: Kbz-8 Date: Sun, 11 Jan 2026 14:01:37 +0100 Subject: [PATCH] fixing windows compilation issues, bumping version --- includes/mlx_profile.h | 2 +- meson.build | 2 +- runtime/Includes/PreCompiled.h | 17 +++++++++++++++-- runtime/Sources/Core/Bridge.cpp | 6 +++--- runtime/Sources/Core/Memory.cpp | 8 ++++---- third_party/kvf.h | 4 ++-- 6 files changed, 26 insertions(+), 13 deletions(-) diff --git a/includes/mlx_profile.h b/includes/mlx_profile.h index eb61453..a98d5ec 100644 --- a/includes/mlx_profile.h +++ b/includes/mlx_profile.h @@ -206,7 +206,7 @@ typedef void (*mlx_function)(void); -#define MLX_VERSION MLX_MAKE_VERSION(2, 2, 3) +#define MLX_VERSION MLX_MAKE_VERSION(2, 2, 4) #define MLX_TARGET_VULKAN_API_VERSION MLX_MAKE_VERSION(1, 0, 0) // Checking common assumptions diff --git a/meson.build b/meson.build index a1a6f0d..4291cfd 100644 --- a/meson.build +++ b/meson.build @@ -1,6 +1,6 @@ project('MacroLibX', ['c', 'cpp'], - version : '2.2.3', + version : '2.2.4', license : 'MIT', meson_version : '>= 1.9.0', default_options : ['warning_level=2', 'optimization=3', 'cpp_std=c++20']) diff --git a/runtime/Includes/PreCompiled.h b/runtime/Includes/PreCompiled.h index 24d49ad..c9485f0 100644 --- a/runtime/Includes/PreCompiled.h +++ b/runtime/Includes/PreCompiled.h @@ -17,8 +17,21 @@ #include -#include -#include +#if __has_include() + #include +#elif __has_include() + #include +#else + #error Failed to find SDL2 headers +#endif + +#if __has_include() + #include +#elif __has_include() + #include +#else + #error Failed to find SDL2 Vulkan headers +#endif #include #include diff --git a/runtime/Sources/Core/Bridge.cpp b/runtime/Sources/Core/Bridge.cpp index 298c9cb..4dfed77 100644 --- a/runtime/Sources/Core/Bridge.cpp +++ b/runtime/Sources/Core/Bridge.cpp @@ -479,7 +479,7 @@ extern "C" MLX_CHECK_APPLICATION_POINTER(mlx); mlx::NonOwningPtr gs = mlx->app->GetGraphicsSupport(win); if(!gs) - return nullptr; + return VK_NULL_HANDLE; return gs->GetRenderer().GetSwapchain().GetSurface(); } @@ -488,7 +488,7 @@ extern "C" MLX_CHECK_APPLICATION_POINTER(mlx); mlx::NonOwningPtr gs = mlx->app->GetGraphicsSupport(win); if(!gs || index > gs->GetRenderer().GetSwapchain().GetImagesCount()) - return nullptr; + return VK_NULL_HANDLE; return gs->GetRenderer().GetSwapchain().GetSwapchainImages()[index].Get(); } @@ -506,7 +506,7 @@ extern "C" MLX_CHECK_APPLICATION_POINTER(mlx); mlx::NonOwningPtr gs = mlx->app->GetGraphicsSupport(win); if(!gs || index > gs->GetRenderer().GetSwapchain().GetImagesCount()) - return nullptr; + return VK_NULL_HANDLE; return gs->GetRenderer().GetSwapchain().GetSwapchainImages()[index].GetImageView(); } diff --git a/runtime/Sources/Core/Memory.cpp b/runtime/Sources/Core/Memory.cpp index 8989b3d..c467fde 100644 --- a/runtime/Sources/Core/Memory.cpp +++ b/runtime/Sources/Core/Memory.cpp @@ -21,7 +21,7 @@ namespace mlx void* MemManager::AlignedMalloc(std::size_t alignment, std::size_t size) { - #ifdef MLX_COMPILER_MSVC + #ifdef MLX_PLAT_WINDOWS void* ptr = _aligned_malloc(size, alignment); #else if(alignment < sizeof(void*)) @@ -66,7 +66,7 @@ namespace mlx { auto it = std::find_if(s_blocks.begin(), s_blocks.end(), [=](const Descriptor& rhs){ return ptr == rhs.ptr; }); - #ifdef MLX_COMPILER_MSVC + #ifdef MLX_PLAT_WINDOWS void* ptr2 = _aligned_realloc(ptr, size, alignment); if(it != s_blocks.end()) s_blocks.erase(it); @@ -90,7 +90,7 @@ namespace mlx auto it = std::find_if(s_blocks.begin(), s_blocks.end(), [=](const Descriptor& rhs){ return ptr == rhs.ptr; }); if(it == s_blocks.end()) return; - #ifdef MLX_COMPILER_MSVC + #ifdef MLX_PLAT_WINDOWS if(it->aligned) _aligned_free(it->ptr); else @@ -105,7 +105,7 @@ namespace mlx { for(const Descriptor& desc : s_blocks) { - #ifdef MLX_COMPILER_MSVC + #ifdef MLX_PLAT_WINDOWS if(desc.aligned) _aligned_free(desc.ptr); else diff --git a/third_party/kvf.h b/third_party/kvf.h index 8624c65..d21c93c 100755 --- a/third_party/kvf.h +++ b/third_party/kvf.h @@ -526,7 +526,7 @@ int32_t kvfFindMemoryType(VkPhysicalDevice physical_device, uint32_t type_filter VkPhysicalDeviceMemoryProperties mem_properties; KVF_GET_INSTANCE_FUNCTION(vkGetPhysicalDeviceMemoryProperties)(physical_device, &mem_properties); - for(int32_t i = 0; i < mem_properties.memoryTypeCount; i++) + for(int32_t i = 0; i < (int32_t)mem_properties.memoryTypeCount; i++) { if((type_filter & (1 << i)) && (mem_properties.memoryTypes[i].propertyFlags & properties) == properties) return i; @@ -1166,7 +1166,7 @@ const char* kvfVerbaliseVkResult(VkResult result) case VK_ERROR_OUT_OF_DATE_KHR: return "A surface has changed in such a way that it is no longer compatible with the swapchain"; case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR: return "The display used by a swapchain does not use the same presentable image layout"; case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR: return "The requested window is already connected to a VkSurfaceKHR, or to some other non-Vulkan API"; - case VK_ERROR_VALIDATION_FAILED: return "A command failed because invalid usage was detected by the implementation or a validation layer."; + case VK_ERROR_VALIDATION_FAILED_EXT: return "A command failed because invalid usage was detected by the implementation or a validation layer."; default: return "Unknown Vulkan error"; }