From ea87c320512f3373a015cac2ee58d1ca515ebecf Mon Sep 17 00:00:00 2001 From: Kbz-8 Date: Wed, 3 Jan 2024 00:01:30 +0100 Subject: [PATCH 1/6] updating license year, fixing fetch dependencies script, adding VMA auto update, removing useless dependency in xmake build --- LICENSE | 2 +- {test => example}/42_logo.png | Bin example/Test | Bin 0 -> 14536 bytes {test => example}/build.sh | 0 {test => example}/font.ttf | Bin {test => example}/main.c | 0 {test => example}/run.sh | 0 scripts/fetch_dependencies.sh | 12 +++++++++++- valgrind.supp | 2 +- xmake.lua | 7 +++---- 10 files changed, 16 insertions(+), 7 deletions(-) rename {test => example}/42_logo.png (100%) create mode 100755 example/Test rename {test => example}/build.sh (100%) rename {test => example}/font.ttf (100%) rename {test => example}/main.c (100%) rename {test => example}/run.sh (100%) diff --git a/LICENSE b/LICENSE index eaf8ee4..08cd0c4 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ MIT License - Copyright (c) 2022-2023 kbz_8 + Copyright (c) 2022-2024 kbz_8 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/42_logo.png b/example/42_logo.png similarity index 100% rename from test/42_logo.png rename to example/42_logo.png diff --git a/example/Test b/example/Test new file mode 100755 index 0000000000000000000000000000000000000000..2a36f9cf146cc860f8188059bdbd23237bb5e972 GIT binary patch literal 14536 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 literal 0 HcmV?d00001 diff --git a/test/build.sh b/example/build.sh similarity index 100% rename from test/build.sh rename to example/build.sh diff --git a/test/font.ttf b/example/font.ttf similarity index 100% rename from test/font.ttf rename to example/font.ttf diff --git a/test/main.c b/example/main.c similarity index 100% rename from test/main.c rename to example/main.c diff --git a/test/run.sh b/example/run.sh similarity index 100% rename from test/run.sh rename to example/run.sh diff --git a/scripts/fetch_dependencies.sh b/scripts/fetch_dependencies.sh index bedebfc..d40d1b2 100644 --- a/scripts/fetch_dependencies.sh +++ b/scripts/fetch_dependencies.sh @@ -3,13 +3,23 @@ # Update volk rm -f ../third_party/volk.c rm -f ../third_party/volk.h -wget https://api.github.com/repos/zeux/volk/zipball/1.3.270 -O volk.zip +tag_name=$(curl -sL https://api.github.com/repos/zeux/Volk/releases/latest | jq -r '.tag_name') +wget https://api.github.com/repos/zeux/volk/zipball/$tag_name -O volk.zip unzip -o volk.zip -d ../third_party/ mv ../third_party/zeux-volk*/volk.h ../third_party mv ../third_party/zeux-volk*/volk.c ../third_party rm -rf ../third_party/zeux-volk* rm volk.zip +# Update VMA +rm -f ../third_party/vma.h +tag_name=$(curl -sL https://api.github.com/repos/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/releases/latest | jq -r '.tag_name') +wget https://api.github.com/repos/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/zipball/$tag_name -O vma.zip +unzip -o vma.zip -d ../third_party/ +mv ../third_party/GPUOpen-LibrariesAndSDKs-VulkanMemoryAllocator*/include/vk_mem_alloc.h ../third_party/vma.h +rm -rf ../third_party/GPUOpen-LibrariesAndSDKs-VulkanMemoryAllocator* +rm vma.zip + # Update Vulkan headers rm -rf ../third_party/vulkan rm -rf ../third_party/vk_video diff --git a/valgrind.supp b/valgrind.supp index d746267..d81f800 100644 --- a/valgrind.supp +++ b/valgrind.supp @@ -1,4 +1,4 @@ -{ + name Memcheck:Leak fun:*alloc diff --git a/xmake.lua b/xmake.lua index 885bf81..0a71c0c 100644 --- a/xmake.lua +++ b/xmake.lua @@ -6,13 +6,12 @@ -- By: maldavid +#+ +:+ +#+ -- -- +#+#+#+#+#+ +#+ -- -- Created: 2023/12/07 15:21:38 by kbz_8 #+# #+# -- --- Updated: 2023/12/07 15:21:38 by kbz_8 ### ########.fr -- +-- Updated: 2024/01/02 23:40:20 by kbz_8 ### ########.fr -- -- -- -------------------------------------------------------------------------------- -- Global settings -add_requires("vulkan-headers") add_requires("libsdl", {configs = { sdlmain = false }}) add_rules("mode.debug", "mode.release") @@ -55,7 +54,7 @@ target("mlx") add_files("src/**.cpp") - add_packages("libsdl", "vulkan-headers") + add_packages("libsdl") if is_mode("debug") then add_defines("DEBUG") @@ -71,7 +70,7 @@ target("Test") add_deps("mlx") - add_files("test/main.c") + add_files("example/main.c") add_defines("SDL_MAIN_HANDLED") From 6e284fb9bc048004d28bc06f5b64a4017204b809 Mon Sep 17 00:00:00 2001 From: Kbz-8 Date: Wed, 3 Jan 2024 00:07:38 +0100 Subject: [PATCH 2/6] fixing the workflows --- .github/workflows/linux_clang.yml | 6 +++--- .github/workflows/linux_gcc.yml | 6 +++--- .github/workflows/macos_x86.yml | 6 +++--- .github/workflows/windows.yml | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/linux_clang.yml b/.github/workflows/linux_clang.yml index e882a62..0081cc4 100644 --- a/.github/workflows/linux_clang.yml +++ b/.github/workflows/linux_clang.yml @@ -37,6 +37,6 @@ jobs: - name: Build MacroLibX run: make -j && make fclean && make -j DEBUG=true - # Build the test - - name: Build Test - run: cd test && bash ./build.sh + # Build the example + - name: Build Example + run: cd example && bash ./build.sh diff --git a/.github/workflows/linux_gcc.yml b/.github/workflows/linux_gcc.yml index 3ababd5..9a0be87 100644 --- a/.github/workflows/linux_gcc.yml +++ b/.github/workflows/linux_gcc.yml @@ -37,7 +37,7 @@ jobs: - name: Build MacroLibX run: make TOOLCHAIN=gcc -j && make fclean && make TOOLCHAIN=gcc DEBUG=true -j - # Build the test - - name: Build Test - run: cd test && bash ./build.sh + # Build the example + - name: Build Example + run: cd example && bash ./build.sh diff --git a/.github/workflows/macos_x86.yml b/.github/workflows/macos_x86.yml index 0d1312f..42e8af3 100644 --- a/.github/workflows/macos_x86.yml +++ b/.github/workflows/macos_x86.yml @@ -43,7 +43,7 @@ jobs: - name: Build MacroLibX run: make -j && make fclean && make DEBUG=true -j - # Build the test - - name: Build Test - run: cd test && bash ./build.sh + # Build the example + - name: Build Example + run: cd example && bash ./build.sh diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 4d44976..83c5cc3 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -58,6 +58,6 @@ jobs: - name: Build MacroLibX run: xmake --yes - # Build the test - - name: Build Test + # Build the example + - name: Build Example run: xmake build --yes Test From d0a19c53129ca8aa90c2b4b0c6dfa2bb378b7c24 Mon Sep 17 00:00:00 2001 From: Kbz-8 Date: Wed, 3 Jan 2024 00:30:45 +0100 Subject: [PATCH 3/6] adding greetings --- .github/workflows/greetings.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/workflows/greetings.yml diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml new file mode 100644 index 0000000..81d67bc --- /dev/null +++ b/.github/workflows/greetings.yml @@ -0,0 +1,25 @@ +name: Greetings + +on: [pull_request_target, issues] + +jobs: + greeting: + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + steps: + - uses: actions/first-interaction@v1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + issue-message: | + Hello! Thank you for filing an issue. + + If this is a bug report, please include relevant logs to help us debug the problem (OS, MLX version, drivers installed, GPU type and vendor, ...) + pr-message: | + Hello! Thank you for your contribution. + + If you are fixing a bug, please reference the issue number in the description. + + If you are implementing a feature request, please explain all your changes in your pull request. + From 53048bd82ae50b366225dadb3ac352951c559441 Mon Sep 17 00:00:00 2001 From: Kbz-8 Date: Wed, 3 Jan 2024 15:15:38 +0100 Subject: [PATCH 4/6] improving vulkan error messages --- example/main.c | 2 +- includes/mlx_profile.h | 68 ++++++++++++++++++- src/renderer/command/vk_cmd_buffer.cpp | 17 +++-- src/renderer/command/vk_cmd_pool.cpp | 7 +- src/renderer/core/memory.cpp | 24 ++++--- src/renderer/core/render_core.cpp | 21 +++--- src/renderer/core/vk_validation_layers.cpp | 7 +- .../descriptors/vk_descriptor_pool.cpp | 7 +- .../descriptors/vk_descriptor_set.cpp | 8 ++- .../descriptors/vk_descriptor_set_layout.cpp | 7 +- src/renderer/images/vk_image.cpp | 12 ++-- src/renderer/pipeline/pipeline.cpp | 7 +- src/renderer/renderpass/vk_framebuffer.cpp | 7 +- src/renderer/renderpass/vk_render_pass.cpp | 7 +- src/renderer/swapchain/vk_swapchain.cpp | 7 +- 15 files changed, 149 insertions(+), 59 deletions(-) diff --git a/example/main.c b/example/main.c index 682d4de..3f55325 100644 --- a/example/main.c +++ b/example/main.c @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/04 17:55:21 by maldavid #+# #+# */ -/* Updated: 2023/12/31 01:13:40 by maldavid ### ########.fr */ +/* Updated: 2024/01/03 12:29:31 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/includes/mlx_profile.h b/includes/mlx_profile.h index 5a06edb..ddd9dec 100644 --- a/includes/mlx_profile.h +++ b/includes/mlx_profile.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/11/10 08:49:17 by maldavid #+# #+# */ -/* Updated: 2023/12/16 20:20:35 by maldavid ### ########.fr */ +/* Updated: 2024/01/03 14:39:23 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -93,6 +93,32 @@ #define MLX_FUNC_SIG "Unknown function" #endif +#ifndef __cplusplus // if we compile in C + #ifdef __STDC__ + #ifdef __STDC_VERSION__ + #if __STDC_VERSION__ == 199409L + #define MLX_C_VERSION 1994 + #elif __STDC_VERSION__ == 199901L + #define MLX_C_VERSION 1999 + #elif __STDC_VERSION__ == 201112L + #define MLX_C_VERSION 2011 + #elif __STDC_VERSION__ == 201710L + #define MLX_C_VERSION 2017 + #elif __STDC_VERSION__ == 202311L + #define MLX_C_VERSION 2023 + #else + #define MLX_C_VERSION 0 + #endif + #else + #define MLX_C_VERSION 0 + #endif + #else + #define MLX_C_VERSION 0 + #endif +#else + #define MLX_C_VERSION 0 +#endif + // Checking common assumptions #ifdef __cplusplus #include @@ -109,8 +135,48 @@ static_assert(sizeof(uint16_t) == 2, "uint16_t is not of the correct size"); static_assert(sizeof(uint32_t) == 4, "uint32_t is not of the correct size"); static_assert(sizeof(uint64_t) == 8, "uint64_t is not of the correct size"); +#elif MLX_C_VERSION >= 2011 + #if MLX_C_VERSION < 2023 + #include + #endif + #include + #include + + static_assert(CHAR_BIT == 8, "CHAR_BIT is expected to be 8"); + + static_assert(sizeof(int8_t) == 1, "int8_t is not of the correct size" ); + static_assert(sizeof(int16_t) == 2, "int16_t is not of the correct size"); + static_assert(sizeof(int32_t) == 4, "int32_t is not of the correct size"); + static_assert(sizeof(int64_t) == 8, "int64_t is not of the correct size"); + + static_assert(sizeof(uint8_t) == 1, "uint8_t is not of the correct size" ); + static_assert(sizeof(uint16_t) == 2, "uint16_t is not of the correct size"); + static_assert(sizeof(uint32_t) == 4, "uint32_t is not of the correct size"); + static_assert(sizeof(uint64_t) == 8, "uint64_t is not of the correct size"); +#elif defined(MLX_COMPILER_GCC) + #define STATIC_ASSERT(cnd, descr) \ + ({ \ + extern int __attribute__((error("static assert failed: (" #cnd ") (" #descr ")"))) compile_time_check(void); \ + ((cnd) ? 0 : compile_time_check()), 0; \ + }) + + #include + #include + + STATIC_ASSERT(CHAR_BIT == 8, "CHAR_BIT is expected to be 8"); + + STATIC_ASSERT(sizeof(int8_t) == 1, "int8_t is not of the correct size" ); + STATIC_ASSERT(sizeof(int16_t) == 2, "int16_t is not of the correct size"); + STATIC_ASSERT(sizeof(int32_t) == 4, "int32_t is not of the correct size"); + STATIC_ASSERT(sizeof(int64_t) == 8, "int64_t is not of the correct size"); + + STATIC_ASSERT(sizeof(uint8_t) == 1, "uint8_t is not of the correct size" ); + STATIC_ASSERT(sizeof(uint16_t) == 2, "uint16_t is not of the correct size"); + STATIC_ASSERT(sizeof(uint32_t) == 4, "uint32_t is not of the correct size"); + STATIC_ASSERT(sizeof(uint64_t) == 8, "uint64_t is not of the correct size"); #else #define STATIC_ASSERT(COND, MSG) typedef char static_assertion___##MSG[(COND)?1:-1] + #include #include diff --git a/src/renderer/command/vk_cmd_buffer.cpp b/src/renderer/command/vk_cmd_buffer.cpp index b1dade7..7405dc7 100644 --- a/src/renderer/command/vk_cmd_buffer.cpp +++ b/src/renderer/command/vk_cmd_buffer.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/06 18:26:06 by maldavid #+# #+# */ -/* Updated: 2023/12/24 12:58:36 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 13:12:58 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,8 +32,9 @@ namespace mlx allocInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; allocInfo.commandBufferCount = 1; - if(vkAllocateCommandBuffers(Render_Core::get().getDevice().get(), &allocInfo, &_cmd_buffer) != VK_SUCCESS) - core::error::report(e_kind::fatal_error, "Vulkan : failed to allocate command buffer"); + VkResult res = vkAllocateCommandBuffers(Render_Core::get().getDevice().get(), &allocInfo, &_cmd_buffer); + if(res != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Vulkan : failed to allocate command buffer, %s", RCore::verbaliseResultVk(res)); #ifdef DEBUG core::error::report(e_kind::message, "Vulkan : created new command buffer"); #endif @@ -85,8 +86,9 @@ namespace mlx VkFence fence; vkCreateFence(device, &fenceCreateInfo, nullptr, &fence); vkResetFences(device, 1, &fence); - if(vkQueueSubmit(Render_Core::get().getQueue().getGraphic(), 1, &submitInfo, fence) != VK_SUCCESS) - core::error::report(e_kind::fatal_error, "Vulkan error : failed to submit a single time command buffer"); + VkResult res = vkQueueSubmit(Render_Core::get().getQueue().getGraphic(), 1, &submitInfo, fence); + if(res != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Vulkan error : failed to submit a single time command buffer, %s", RCore::verbaliseResultVk(res)); _state = state::submitted; vkWaitForFences(device, 1, &fence, VK_TRUE, UINT64_MAX); vkDestroyFence(device, fence, nullptr); @@ -120,8 +122,9 @@ namespace mlx submitInfo.signalSemaphoreCount = (semaphores == nullptr ? 0 : signalSemaphores.size()); submitInfo.pSignalSemaphores = signalSemaphores.data(); - if(vkQueueSubmit(Render_Core::get().getQueue().getGraphic(), 1, &submitInfo, _fence.get()) != VK_SUCCESS) - core::error::report(e_kind::fatal_error, "Vulkan error : failed to submit draw command buffer"); + VkResult res = vkQueueSubmit(Render_Core::get().getQueue().getGraphic(), 1, &submitInfo, _fence.get()); + if(res != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Vulkan error : failed to submit draw command buffer, %s", RCore::verbaliseResultVk(res)); _state = state::submitted; } diff --git a/src/renderer/command/vk_cmd_pool.cpp b/src/renderer/command/vk_cmd_pool.cpp index f78538f..148932f 100644 --- a/src/renderer/command/vk_cmd_pool.cpp +++ b/src/renderer/command/vk_cmd_pool.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/06 18:24:33 by maldavid #+# #+# */ -/* Updated: 2023/11/18 17:23:38 by maldavid ### ########.fr */ +/* Updated: 2024/01/03 13:13:25 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,8 +22,9 @@ namespace mlx poolInfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; poolInfo.queueFamilyIndex = Render_Core::get().getQueue().getFamilies().graphicsFamily.value(); - if(vkCreateCommandPool(Render_Core::get().getDevice().get(), &poolInfo, nullptr, &_cmd_pool) != VK_SUCCESS) - core::error::report(e_kind::fatal_error, "Vulkan : failed to create command pool"); + VkResult res = vkCreateCommandPool(Render_Core::get().getDevice().get(), &poolInfo, nullptr, &_cmd_pool); + if(res != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Vulkan : failed to create command pool, %s", RCore::verbaliseResultVk(res)); } void CmdPool::destroy() noexcept diff --git a/src/renderer/core/memory.cpp b/src/renderer/core/memory.cpp index 8712085..0604c15 100644 --- a/src/renderer/core/memory.cpp +++ b/src/renderer/core/memory.cpp @@ -6,7 +6,7 @@ /* By: kbz_8 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/10/20 22:02:37 by kbz_8 #+# #+# */ -/* Updated: 2023/12/27 21:31:04 by maldavid ### ########.fr */ +/* Updated: 2024/01/03 13:09:40 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -76,18 +76,20 @@ namespace mlx allocatorCreateInfo.instance = Render_Core::get().getInstance().get(); allocatorCreateInfo.pVulkanFunctions = &vma_vulkan_func; - if(vmaCreateAllocator(&allocatorCreateInfo, &_allocator) != VK_SUCCESS) - core::error::report(e_kind::fatal_error, "Vulkan : failed to create graphics memory allocator"); + VkResult res = vmaCreateAllocator(&allocatorCreateInfo, &_allocator); + if(res != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Graphics allocator : failed to create graphics memory allocator, %s", RCore::verbaliseResultVk(res)); #ifdef DEBUG - core::error::report(e_kind::message, "Vulkan : created new allocator"); + core::error::report(e_kind::message, "Graphics allocator : created new allocator"); #endif } VmaAllocation GPUallocator::createBuffer(const VkBufferCreateInfo* binfo, const VmaAllocationCreateInfo* vinfo, VkBuffer& buffer, const char* name) noexcept { VmaAllocation allocation; - if(vmaCreateBuffer(_allocator, binfo, vinfo, &buffer, &allocation, nullptr) != VK_SUCCESS) - core::error::report(e_kind::fatal_error, "Vulkan : failed to allocate a buffer"); + VkResult res = vmaCreateBuffer(_allocator, binfo, vinfo, &buffer, &allocation, nullptr); + if(res != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Graphics allocator : failed to allocate a buffer, %s", RCore::verbaliseResultVk(res)); if(name != nullptr) vmaSetAllocationName(_allocator, allocation, name); #ifdef DEBUG @@ -110,8 +112,9 @@ namespace mlx VmaAllocation GPUallocator::createImage(const VkImageCreateInfo* iminfo, const VmaAllocationCreateInfo* vinfo, VkImage& image, const char* name) noexcept { VmaAllocation allocation; - if(vmaCreateImage(_allocator, iminfo, vinfo, &image, &allocation, nullptr) != VK_SUCCESS) - core::error::report(e_kind::fatal_error, "Vulkan : failed to allocate an image"); + VkResult res = vmaCreateImage(_allocator, iminfo, vinfo, &image, &allocation, nullptr); + if(res != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Graphics allocator : failed to allocate an image, %s", RCore::verbaliseResultVk(res)); if(name != nullptr) vmaSetAllocationName(_allocator, allocation, name); #ifdef DEBUG @@ -133,8 +136,9 @@ namespace mlx void GPUallocator::mapMemory(VmaAllocation allocation, void** data) noexcept { - if(vmaMapMemory(_allocator, allocation, data) != VK_SUCCESS) - core::error::report(e_kind::fatal_error, "Graphics allocator : unable to map GPU memory to CPU memory"); + VkResult res = vmaMapMemory(_allocator, allocation, data); + if(res != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Graphics allocator : unable to map GPU memory to CPU memory, %s", RCore::verbaliseResultVk(res)); } void GPUallocator::unmapMemory(VmaAllocation allocation) noexcept diff --git a/src/renderer/core/render_core.cpp b/src/renderer/core/render_core.cpp index fa615ff..6ff4a0a 100644 --- a/src/renderer/core/render_core.cpp +++ b/src/renderer/core/render_core.cpp @@ -6,30 +6,34 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/17 23:33:34 by maldavid #+# #+# */ -/* Updated: 2023/12/15 20:32:01 by maldavid ### ########.fr */ +/* Updated: 2024/01/03 13:47:13 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #define VOLK_IMPLEMENTATION -#if defined(_WIN32) || defined(_WIN64) +#if defined(MLX_PLAT_WINDOWS) #define VK_USE_PLATFORM_WIN32_KHR -#elif defined(__APPLE__) || defined(__MACH__) + constexpr const char* VULKAN_LIB_NAME = "vulkan-1.dll"; +#elif defined(MLX_PLAT_MACOS) #define VK_USE_PLATFORM_MACOS_MVK #define VK_USE_PLATFORM_METAL_EXT + constexpr const char* VULKAN_LIB_NAME = "libvulkan.dylib / libvulkan.1.dylib / libMoltenVK.dylib"; #else #define VK_USE_PLATFORM_XLIB_KHR #define VK_USE_PLATFORM_WAYLAND_KHR + constexpr const char* VULKAN_LIB_NAME = "libvulkan.so / libvulkan.so.1"; #endif -#include "render_core.h" +#include +#include #include #ifdef DEBUG - #ifndef MLX_COMPILER_MSVC - #warning "MLX is being compiled in debug mode, this activates Vulkan's validation layers and debug messages which may impact rendering performances" - #else + #ifdef MLX_COMPILER_MSVC #pragma NOTE("MLX is being compiled in debug mode, this activates Vulkan's validation layers and debug messages which may impact rendering performances") + #else + #warning "MLX is being compiled in debug mode, this activates Vulkan's validation layers and debug messages which may impact rendering performances" #endif #endif @@ -88,7 +92,8 @@ namespace mlx void Render_Core::init() { - volkInitialize(); + if(volkInitialize() != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Vulkan loader : cannot load %s, are you sure Vulkan is installed on your system ?", VULKAN_LIB_NAME); _instance.init(); volkLoadInstance(_instance.get()); diff --git a/src/renderer/core/vk_validation_layers.cpp b/src/renderer/core/vk_validation_layers.cpp index 837aa1b..367c1fb 100644 --- a/src/renderer/core/vk_validation_layers.cpp +++ b/src/renderer/core/vk_validation_layers.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/19 14:05:25 by maldavid #+# #+# */ -/* Updated: 2023/12/31 00:41:39 by maldavid ### ########.fr */ +/* Updated: 2024/01/03 13:11:27 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,8 +27,9 @@ namespace mlx VkDebugUtilsMessengerCreateInfoEXT createInfo{}; populateDebugMessengerCreateInfo(createInfo); - if(createDebugUtilsMessengerEXT(&createInfo, nullptr) != VK_SUCCESS) - core::error::report(e_kind::warning, "Vulkan : failed to set up debug messenger"); + VkResult res = createDebugUtilsMessengerEXT(&createInfo, nullptr); + if(res != VK_SUCCESS) + core::error::report(e_kind::warning, "Vulkan : failed to set up debug messenger, %s", RCore::verbaliseResultVk(res)); #ifdef DEBUG else core::error::report(e_kind::message, "Vulkan : enabled validation layers"); diff --git a/src/renderer/descriptors/vk_descriptor_pool.cpp b/src/renderer/descriptors/vk_descriptor_pool.cpp index 95e2f6e..188403f 100644 --- a/src/renderer/descriptors/vk_descriptor_pool.cpp +++ b/src/renderer/descriptors/vk_descriptor_pool.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/01/23 18:34:23 by maldavid #+# #+# */ -/* Updated: 2023/11/18 17:23:05 by maldavid ### ########.fr */ +/* Updated: 2024/01/03 13:13:54 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,8 +23,9 @@ namespace mlx poolInfo.pPoolSizes = size; poolInfo.maxSets = 8192; - if(vkCreateDescriptorPool(Render_Core::get().getDevice().get(), &poolInfo, nullptr, &_pool) != VK_SUCCESS) - core::error::report(e_kind::fatal_error, "Vulkan : failed to create descriptor pool"); + VkResult res = vkCreateDescriptorPool(Render_Core::get().getDevice().get(), &poolInfo, nullptr, &_pool); + if(res != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Vulkan : failed to create descriptor pool, %s", RCore::verbaliseResultVk(res)); } void DescriptorPool::destroy() noexcept diff --git a/src/renderer/descriptors/vk_descriptor_set.cpp b/src/renderer/descriptors/vk_descriptor_set.cpp index cf6a624..b840c7f 100644 --- a/src/renderer/descriptors/vk_descriptor_set.cpp +++ b/src/renderer/descriptors/vk_descriptor_set.cpp @@ -6,11 +6,12 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/01/23 18:40:44 by maldavid #+# #+# */ -/* Updated: 2023/12/24 09:37:55 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 13:14:24 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #include "vk_descriptor_set.h" +#include "renderer/core/render_core.h" #include "vk_descriptor_pool.h" #include "vk_descriptor_set_layout.h" #include @@ -36,8 +37,9 @@ namespace mlx allocInfo.descriptorSetCount = static_cast(MAX_FRAMES_IN_FLIGHT); allocInfo.pSetLayouts = layouts.data(); - if(vkAllocateDescriptorSets(device, &allocInfo, _desc_set.data()) != VK_SUCCESS) - core::error::report(e_kind::fatal_error, "Vulkan : failed to allocate descriptor set"); + VkResult res = vkAllocateDescriptorSets(device, &allocInfo, _desc_set.data()); + if(res != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Vulkan : failed to allocate descriptor set, %s", RCore::verbaliseResultVk(res)); #ifdef DEBUG core::error::report(e_kind::message, "Vulkan : created new descriptor set"); #endif diff --git a/src/renderer/descriptors/vk_descriptor_set_layout.cpp b/src/renderer/descriptors/vk_descriptor_set_layout.cpp index 70909a7..12b98d8 100644 --- a/src/renderer/descriptors/vk_descriptor_set_layout.cpp +++ b/src/renderer/descriptors/vk_descriptor_set_layout.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/01/23 18:37:28 by maldavid #+# #+# */ -/* Updated: 2023/12/10 22:25:59 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 13:14:58 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,8 +34,9 @@ namespace mlx layoutInfo.bindingCount = _bindings.size(); layoutInfo.pBindings = bindings.data(); - if(vkCreateDescriptorSetLayout(Render_Core::get().getDevice().get(), &layoutInfo, nullptr, &_layout) != VK_SUCCESS) - core::error::report(e_kind::fatal_error, "Vulkan : failed to create descriptor set layout"); + VkResult res = vkCreateDescriptorSetLayout(Render_Core::get().getDevice().get(), &layoutInfo, nullptr, &_layout); + if(res != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Vulkan : failed to create descriptor set layout, %s", RCore::verbaliseResultVk(res)); } void DescriptorSetLayout::destroy() noexcept diff --git a/src/renderer/images/vk_image.cpp b/src/renderer/images/vk_image.cpp index 2d31cd5..9cca944 100644 --- a/src/renderer/images/vk_image.cpp +++ b/src/renderer/images/vk_image.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/01/25 11:59:07 by maldavid #+# #+# */ -/* Updated: 2023/12/22 23:35:07 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 13:16:21 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -182,8 +182,9 @@ namespace mlx viewInfo.subresourceRange.baseArrayLayer = 0; viewInfo.subresourceRange.layerCount = 1; - if(vkCreateImageView(Render_Core::get().getDevice().get(), &viewInfo, nullptr, &_image_view) != VK_SUCCESS) - core::error::report(e_kind::fatal_error, "Vulkan : failed to create an image view"); + VkResult res = vkCreateImageView(Render_Core::get().getDevice().get(), &viewInfo, nullptr, &_image_view); + if(res != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Vulkan : failed to create an image view, %s", RCore::verbaliseResultVk(res)); } void Image::createSampler() noexcept @@ -201,8 +202,9 @@ namespace mlx info.anisotropyEnable = VK_FALSE; info.maxAnisotropy = 1.0f; - if(vkCreateSampler(Render_Core::get().getDevice().get(), &info, nullptr, &_sampler) != VK_SUCCESS) - core::error::report(e_kind::fatal_error, "Vulkan : failed to create an image"); + VkResult res = vkCreateSampler(Render_Core::get().getDevice().get(), &info, nullptr, &_sampler); + if(res != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Vulkan : failed to create an image, %s", RCore::verbaliseResultVk(res)); } void Image::copyFromBuffer(Buffer& buffer) diff --git a/src/renderer/pipeline/pipeline.cpp b/src/renderer/pipeline/pipeline.cpp index 9d962bb..8d234f7 100644 --- a/src/renderer/pipeline/pipeline.cpp +++ b/src/renderer/pipeline/pipeline.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 21:27:38 by maldavid #+# #+# */ -/* Updated: 2023/12/22 22:00:37 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 13:16:57 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -305,8 +305,9 @@ namespace mlx pipelineInfo.subpass = 0; pipelineInfo.basePipelineHandle = VK_NULL_HANDLE; - if(vkCreateGraphicsPipelines(Render_Core::get().getDevice().get(), VK_NULL_HANDLE, 1, &pipelineInfo, nullptr, &_graphicsPipeline) != VK_SUCCESS) - core::error::report(e_kind::fatal_error, "Vulkan : failed to create a graphics pipeline"); + VkResult res = vkCreateGraphicsPipelines(Render_Core::get().getDevice().get(), VK_NULL_HANDLE, 1, &pipelineInfo, nullptr, &_graphicsPipeline); + if(res != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Vulkan : failed to create a graphics pipeline, %s", RCore::verbaliseResultVk(res)); #ifdef DEBUG core::error::report(e_kind::message, "Vulkan : created new graphic pipeline"); #endif diff --git a/src/renderer/renderpass/vk_framebuffer.cpp b/src/renderer/renderpass/vk_framebuffer.cpp index ed868ca..c96c54d 100644 --- a/src/renderer/renderpass/vk_framebuffer.cpp +++ b/src/renderer/renderpass/vk_framebuffer.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/06 18:18:06 by maldavid #+# #+# */ -/* Updated: 2023/11/20 07:24:26 by maldavid ### ########.fr */ +/* Updated: 2024/01/03 13:17:27 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,8 +33,9 @@ namespace mlx framebufferInfo.height = _height; framebufferInfo.layers = 1; - if(vkCreateFramebuffer(Render_Core::get().getDevice().get(), &framebufferInfo, nullptr, &_framebuffer) != VK_SUCCESS) - core::error::report(e_kind::fatal_error, "Vulkan : failed to create a framebuffer"); + VkResult res = vkCreateFramebuffer(Render_Core::get().getDevice().get(), &framebufferInfo, nullptr, &_framebuffer); + if(res != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Vulkan : failed to create a framebuffer, %s", RCore::verbaliseResultVk(res)); #ifdef DEBUG core::error::report(e_kind::message, "Vulkan : created new framebuffer"); #endif diff --git a/src/renderer/renderpass/vk_render_pass.cpp b/src/renderer/renderpass/vk_render_pass.cpp index 2c2dc9c..6bd6b6c 100644 --- a/src/renderer/renderpass/vk_render_pass.cpp +++ b/src/renderer/renderpass/vk_render_pass.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/06 18:21:36 by maldavid #+# #+# */ -/* Updated: 2023/12/24 15:31:02 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 13:17:56 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -70,8 +70,9 @@ namespace mlx renderPassInfo.dependencyCount = static_cast(subpassesDeps.size()); renderPassInfo.pDependencies = subpassesDeps.data(); - if(vkCreateRenderPass(Render_Core::get().getDevice().get(), &renderPassInfo, nullptr, &_renderPass) != VK_SUCCESS) - core::error::report(e_kind::fatal_error, "Vulkan : failed to create render pass"); + VkResult res = vkCreateRenderPass(Render_Core::get().getDevice().get(), &renderPassInfo, nullptr, &_renderPass); + if(res != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Vulkan : failed to create render pass, %s", RCore::verbaliseResultVk(res)); #ifdef DEBUG core::error::report(e_kind::message, "Vulkan : created new render pass"); #endif diff --git a/src/renderer/swapchain/vk_swapchain.cpp b/src/renderer/swapchain/vk_swapchain.cpp index cada9ba..ccd0620 100644 --- a/src/renderer/swapchain/vk_swapchain.cpp +++ b/src/renderer/swapchain/vk_swapchain.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/06 18:22:28 by maldavid #+# #+# */ -/* Updated: 2023/12/15 21:49:19 by maldavid ### ########.fr */ +/* Updated: 2024/01/03 13:18:25 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -59,8 +59,9 @@ namespace mlx else createInfo.imageSharingMode = VK_SHARING_MODE_EXCLUSIVE; - if(vkCreateSwapchainKHR(device, &createInfo, nullptr, &_swapChain) != VK_SUCCESS) - core::error::report(e_kind::fatal_error, "Vulkan : failed to create the swapchain"); + VkResult res = vkCreateSwapchainKHR(device, &createInfo, nullptr, &_swapChain); + if(res != VK_SUCCESS) + core::error::report(e_kind::fatal_error, "Vulkan : failed to create the swapchain, %s", RCore::verbaliseResultVk(res)); std::vector tmp; vkGetSwapchainImagesKHR(device, _swapChain, &imageCount, nullptr); From e72892652130dfc27b5f2e36b48a2cb535a1cb8e Mon Sep 17 00:00:00 2001 From: Kbz-8 Date: Wed, 3 Jan 2024 15:30:26 +0100 Subject: [PATCH 5/6] fixing windows compilation issue --- includes/mlx_profile.h | 16 +++++++++++++++- src/renderer/buffers/vk_buffer.h | 4 ++-- src/renderer/buffers/vk_ibo.h | 4 ++-- src/renderer/command/cmd_manager.h | 4 ++-- src/renderer/command/vk_cmd_buffer.h | 4 ++-- src/renderer/command/vk_cmd_pool.h | 4 ++-- src/renderer/core/memory.h | 4 ++-- src/renderer/core/render_core.cpp | 15 +-------------- src/renderer/core/render_core.h | 4 ++-- src/renderer/core/vk_device.h | 4 ++-- src/renderer/core/vk_fence.h | 4 ++-- src/renderer/core/vk_instance.h | 4 ++-- src/renderer/core/vk_queues.h | 4 ++-- src/renderer/core/vk_semaphore.h | 4 ++-- src/renderer/core/vk_surface.h | 4 ++-- src/renderer/core/vk_validation_layers.h | 4 ++-- src/renderer/descriptors/vk_descriptor_pool.h | 4 ++-- src/renderer/descriptors/vk_descriptor_set.h | 4 ++-- .../descriptors/vk_descriptor_set_layout.h | 4 ++-- src/renderer/images/vk_image.h | 4 ++-- src/renderer/pipeline/pipeline.h | 4 ++-- src/renderer/renderpass/vk_framebuffer.h | 4 ++-- src/renderer/renderpass/vk_render_pass.h | 4 ++-- src/renderer/swapchain/vk_swapchain.h | 4 ++-- 24 files changed, 60 insertions(+), 59 deletions(-) diff --git a/includes/mlx_profile.h b/includes/mlx_profile.h index ddd9dec..2257ea9 100644 --- a/includes/mlx_profile.h +++ b/includes/mlx_profile.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/11/10 08:49:17 by maldavid #+# #+# */ -/* Updated: 2024/01/03 14:39:23 by maldavid ### ########.fr */ +/* Updated: 2024/01/03 15:25:44 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -119,6 +119,20 @@ #define MLX_C_VERSION 0 #endif +#if defined(MLX_PLAT_WINDOWS) + #define VK_USE_PLATFORM_WIN32_KHR + constexpr const char* VULKAN_LIB_NAME = "vulkan-1.dll"; +#elif defined(MLX_PLAT_MACOS) + #define VK_USE_PLATFORM_MACOS_MVK + #define VK_USE_PLATFORM_METAL_EXT + constexpr const char* VULKAN_LIB_NAME = "libvulkan.dylib / libvulkan.1.dylib / libMoltenVK.dylib"; +#else + #define VK_USE_PLATFORM_XLIB_KHR + #define VK_USE_PLATFORM_WAYLAND_KHR + constexpr const char* VULKAN_LIB_NAME = "libvulkan.so / libvulkan.so.1"; +#endif + + // Checking common assumptions #ifdef __cplusplus #include diff --git a/src/renderer/buffers/vk_buffer.h b/src/renderer/buffers/vk_buffer.h index f3f1669..203b1ce 100644 --- a/src/renderer/buffers/vk_buffer.h +++ b/src/renderer/buffers/vk_buffer.h @@ -6,16 +6,16 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/06 23:18:52 by maldavid #+# #+# */ -/* Updated: 2023/12/12 21:12:44 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:26:56 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __MLX_VK_BUFFER__ #define __MLX_VK_BUFFER__ +#include #include #include -#include namespace mlx { diff --git a/src/renderer/buffers/vk_ibo.h b/src/renderer/buffers/vk_ibo.h index f320b94..ad49eed 100644 --- a/src/renderer/buffers/vk_ibo.h +++ b/src/renderer/buffers/vk_ibo.h @@ -6,17 +6,17 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/01/25 15:05:05 by maldavid #+# #+# */ -/* Updated: 2023/12/11 19:47:47 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:27:02 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __VK_IBO__ #define __VK_IBO__ +#include #include #include "vk_buffer.h" #include -#include namespace mlx { diff --git a/src/renderer/command/cmd_manager.h b/src/renderer/command/cmd_manager.h index 4d5e7c5..ac69876 100644 --- a/src/renderer/command/cmd_manager.h +++ b/src/renderer/command/cmd_manager.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/02 17:48:52 by maldavid #+# #+# */ -/* Updated: 2023/12/08 19:07:00 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:27:35 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,8 +15,8 @@ #include -#include #include +#include #include #include #include diff --git a/src/renderer/command/vk_cmd_buffer.h b/src/renderer/command/vk_cmd_buffer.h index 8cc1afb..1e7bccf 100644 --- a/src/renderer/command/vk_cmd_buffer.h +++ b/src/renderer/command/vk_cmd_buffer.h @@ -6,16 +6,16 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/06 18:25:42 by maldavid #+# #+# */ -/* Updated: 2023/12/23 01:24:34 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:27:20 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __MLX_VK_CMD_BUFFER__ #define __MLX_VK_CMD_BUFFER__ +#include #include #include -#include namespace mlx { diff --git a/src/renderer/command/vk_cmd_pool.h b/src/renderer/command/vk_cmd_pool.h index 142e05e..8d97157 100644 --- a/src/renderer/command/vk_cmd_pool.h +++ b/src/renderer/command/vk_cmd_pool.h @@ -6,15 +6,15 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/06 18:24:12 by maldavid #+# #+# */ -/* Updated: 2023/12/08 19:07:22 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:27:26 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __MLX_VK_CMD_POOL__ #define __MLX_VK_CMD_POOL__ -#include #include +#include namespace mlx { diff --git a/src/renderer/core/memory.h b/src/renderer/core/memory.h index 363056d..f977ace 100644 --- a/src/renderer/core/memory.h +++ b/src/renderer/core/memory.h @@ -6,16 +6,16 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/10/20 02:13:03 by maldavid #+# #+# */ -/* Updated: 2023/12/16 18:53:51 by maldavid ### ########.fr */ +/* Updated: 2024/01/03 15:25:56 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __MLX_VK_MEMORY__ #define __MLX_VK_MEMORY__ +#include #include #include -#include namespace mlx { diff --git a/src/renderer/core/render_core.cpp b/src/renderer/core/render_core.cpp index 6ff4a0a..aa3268d 100644 --- a/src/renderer/core/render_core.cpp +++ b/src/renderer/core/render_core.cpp @@ -6,25 +6,12 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/17 23:33:34 by maldavid #+# #+# */ -/* Updated: 2024/01/03 13:47:13 by maldavid ### ########.fr */ +/* Updated: 2024/01/03 15:22:38 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #define VOLK_IMPLEMENTATION -#if defined(MLX_PLAT_WINDOWS) - #define VK_USE_PLATFORM_WIN32_KHR - constexpr const char* VULKAN_LIB_NAME = "vulkan-1.dll"; -#elif defined(MLX_PLAT_MACOS) - #define VK_USE_PLATFORM_MACOS_MVK - #define VK_USE_PLATFORM_METAL_EXT - constexpr const char* VULKAN_LIB_NAME = "libvulkan.dylib / libvulkan.1.dylib / libMoltenVK.dylib"; -#else - #define VK_USE_PLATFORM_XLIB_KHR - #define VK_USE_PLATFORM_WAYLAND_KHR - constexpr const char* VULKAN_LIB_NAME = "libvulkan.so / libvulkan.so.1"; -#endif - #include #include #include diff --git a/src/renderer/core/render_core.h b/src/renderer/core/render_core.h index a4cd398..07e5840 100644 --- a/src/renderer/core/render_core.h +++ b/src/renderer/core/render_core.h @@ -6,13 +6,14 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/08 19:16:32 by maldavid #+# #+# */ -/* Updated: 2023/12/31 00:42:42 by maldavid ### ########.fr */ +/* Updated: 2024/01/03 15:26:08 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __MLX_RENDER_CORE__ #define __MLX_RENDER_CORE__ +#include #include #include @@ -25,7 +26,6 @@ #include #include -#include namespace mlx { diff --git a/src/renderer/core/vk_device.h b/src/renderer/core/vk_device.h index 24aa329..ecfd47e 100644 --- a/src/renderer/core/vk_device.h +++ b/src/renderer/core/vk_device.h @@ -6,16 +6,16 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/08 19:13:42 by maldavid #+# #+# */ -/* Updated: 2023/12/08 19:07:49 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:26:14 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __MLX_VK_DEVICE__ #define __MLX_VK_DEVICE__ +#include #include #include "vk_queues.h" -#include namespace mlx { diff --git a/src/renderer/core/vk_fence.h b/src/renderer/core/vk_fence.h index aa7c685..d8bd364 100644 --- a/src/renderer/core/vk_fence.h +++ b/src/renderer/core/vk_fence.h @@ -6,15 +6,15 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/02 17:52:09 by maldavid #+# #+# */ -/* Updated: 2023/12/16 17:27:28 by maldavid ### ########.fr */ +/* Updated: 2024/01/03 15:26:21 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __MLX_VK_FENCE__ #define __MLX_VK_FENCE__ -#include #include +#include namespace mlx { diff --git a/src/renderer/core/vk_instance.h b/src/renderer/core/vk_instance.h index 213c19a..e827665 100644 --- a/src/renderer/core/vk_instance.h +++ b/src/renderer/core/vk_instance.h @@ -6,16 +6,16 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/08 19:03:04 by maldavid #+# #+# */ -/* Updated: 2023/12/08 19:08:14 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:26:26 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __MLX_VK_INSTANCE__ #define __MLX_VK_INSTANCE__ +#include #include #include -#include namespace mlx { diff --git a/src/renderer/core/vk_queues.h b/src/renderer/core/vk_queues.h index 3649591..268f4fe 100644 --- a/src/renderer/core/vk_queues.h +++ b/src/renderer/core/vk_queues.h @@ -6,17 +6,17 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/08 19:01:49 by maldavid #+# #+# */ -/* Updated: 2023/12/08 19:08:25 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:26:31 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __MLX_VK_QUEUES__ #define __MLX_VK_QUEUES__ +#include #include #include #include -#include namespace mlx { diff --git a/src/renderer/core/vk_semaphore.h b/src/renderer/core/vk_semaphore.h index 1472b61..cdcb72d 100644 --- a/src/renderer/core/vk_semaphore.h +++ b/src/renderer/core/vk_semaphore.h @@ -6,16 +6,16 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/08 18:59:38 by maldavid #+# #+# */ -/* Updated: 2023/12/08 19:08:36 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:26:39 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __MLX_VK_SEMAPHORE__ #define __MLX_VK_SEMAPHORE__ +#include #include #include -#include namespace mlx { diff --git a/src/renderer/core/vk_surface.h b/src/renderer/core/vk_surface.h index c8542f4..c700f8f 100644 --- a/src/renderer/core/vk_surface.h +++ b/src/renderer/core/vk_surface.h @@ -6,16 +6,16 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/08 18:57:55 by maldavid #+# #+# */ -/* Updated: 2023/12/08 19:08:49 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:26:43 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __MLX_VK_SURFACE__ #define __MLX_VK_SURFACE__ +#include #include #include -#include namespace mlx { diff --git a/src/renderer/core/vk_validation_layers.h b/src/renderer/core/vk_validation_layers.h index 1d3a586..85eb48b 100644 --- a/src/renderer/core/vk_validation_layers.h +++ b/src/renderer/core/vk_validation_layers.h @@ -6,15 +6,15 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/19 14:04:25 by maldavid #+# #+# */ -/* Updated: 2023/12/31 00:38:25 by maldavid ### ########.fr */ +/* Updated: 2024/01/03 15:26:49 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __VK_VALIDATION_LAYERS__ #define __VK_VALIDATION_LAYERS__ -#include #include +#include namespace mlx { diff --git a/src/renderer/descriptors/vk_descriptor_pool.h b/src/renderer/descriptors/vk_descriptor_pool.h index 617ec3e..82cf9c4 100644 --- a/src/renderer/descriptors/vk_descriptor_pool.h +++ b/src/renderer/descriptors/vk_descriptor_pool.h @@ -6,16 +6,16 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/01/23 18:32:43 by maldavid #+# #+# */ -/* Updated: 2023/12/08 19:09:20 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:27:45 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __VK_DESCRIPTOR_POOL__ #define __VK_DESCRIPTOR_POOL__ +#include #include #include -#include namespace mlx { diff --git a/src/renderer/descriptors/vk_descriptor_set.h b/src/renderer/descriptors/vk_descriptor_set.h index f1e627d..d555d5c 100644 --- a/src/renderer/descriptors/vk_descriptor_set.h +++ b/src/renderer/descriptors/vk_descriptor_set.h @@ -6,16 +6,16 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/01/23 18:39:36 by maldavid #+# #+# */ -/* Updated: 2023/12/23 18:47:49 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:27:50 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __VK_DESCRIPTOR_SET__ #define __VK_DESCRIPTOR_SET__ +#include #include #include -#include #include namespace mlx diff --git a/src/renderer/descriptors/vk_descriptor_set_layout.h b/src/renderer/descriptors/vk_descriptor_set_layout.h index 21c4abf..dd9495b 100644 --- a/src/renderer/descriptors/vk_descriptor_set_layout.h +++ b/src/renderer/descriptors/vk_descriptor_set_layout.h @@ -6,18 +6,18 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/01/23 18:36:22 by maldavid #+# #+# */ -/* Updated: 2023/12/08 19:09:44 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:27:55 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __VK_DESCRIPTOR_SET_LAYOUT__ #define __VK_DESCRIPTOR_SET_LAYOUT__ +#include #include #include #include #include -#include namespace mlx { diff --git a/src/renderer/images/vk_image.h b/src/renderer/images/vk_image.h index 958df86..f552fee 100644 --- a/src/renderer/images/vk_image.h +++ b/src/renderer/images/vk_image.h @@ -6,20 +6,20 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/01/25 11:54:21 by maldavid #+# #+# */ -/* Updated: 2023/12/22 23:31:02 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:28:07 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __MLX_VK_IMAGE__ #define __MLX_VK_IMAGE__ +#include #include #include #include #include #include #include -#include namespace mlx { diff --git a/src/renderer/pipeline/pipeline.h b/src/renderer/pipeline/pipeline.h index 78e4213..517ccb9 100644 --- a/src/renderer/pipeline/pipeline.h +++ b/src/renderer/pipeline/pipeline.h @@ -6,15 +6,15 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 21:23:52 by maldavid #+# #+# */ -/* Updated: 2023/12/08 19:10:51 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:28:13 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __PIPELINE__ #define __PIPELINE__ -#include #include +#include #include namespace mlx diff --git a/src/renderer/renderpass/vk_framebuffer.h b/src/renderer/renderpass/vk_framebuffer.h index 436e82e..b4db929 100644 --- a/src/renderer/renderpass/vk_framebuffer.h +++ b/src/renderer/renderpass/vk_framebuffer.h @@ -6,15 +6,15 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/06 18:19:44 by maldavid #+# #+# */ -/* Updated: 2023/12/08 19:11:04 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:28:19 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __MLX_VK_FRAMEBUFFER__ #define __MLX_VK_FRAMEBUFFER__ -#include #include +#include namespace mlx { diff --git a/src/renderer/renderpass/vk_render_pass.h b/src/renderer/renderpass/vk_render_pass.h index 3d57b4d..68d190e 100644 --- a/src/renderer/renderpass/vk_render_pass.h +++ b/src/renderer/renderpass/vk_render_pass.h @@ -6,15 +6,15 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/06 18:22:00 by maldavid #+# #+# */ -/* Updated: 2023/12/24 13:01:56 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:28:25 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef __MLX_VK_RENDER_PASS__ #define __MLX_VK_RENDER_PASS__ -#include #include +#include namespace mlx { diff --git a/src/renderer/swapchain/vk_swapchain.h b/src/renderer/swapchain/vk_swapchain.h index 8db2155..5fd8827 100644 --- a/src/renderer/swapchain/vk_swapchain.h +++ b/src/renderer/swapchain/vk_swapchain.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/06 18:23:27 by maldavid #+# #+# */ -/* Updated: 2023/12/08 19:11:30 by kbz_8 ### ########.fr */ +/* Updated: 2024/01/03 15:28:39 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,8 +14,8 @@ #define __MLX_VK_SWAPCHAIN__ #include -#include #include +#include #include namespace mlx From 2c1f5181bfc4498de082b0110758438246f4510c Mon Sep 17 00:00:00 2001 From: Kbz-8 Date: Wed, 3 Jan 2024 15:33:46 +0100 Subject: [PATCH 6/6] fixing compilation issue --- includes/mlx_profile.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/includes/mlx_profile.h b/includes/mlx_profile.h index 2257ea9..90710bc 100644 --- a/includes/mlx_profile.h +++ b/includes/mlx_profile.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/11/10 08:49:17 by maldavid #+# #+# */ -/* Updated: 2024/01/03 15:25:44 by maldavid ### ########.fr */ +/* Updated: 2024/01/03 15:33:35 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -121,18 +121,23 @@ #if defined(MLX_PLAT_WINDOWS) #define VK_USE_PLATFORM_WIN32_KHR - constexpr const char* VULKAN_LIB_NAME = "vulkan-1.dll"; + #ifdef __cplusplus + constexpr const char* VULKAN_LIB_NAME = "vulkan-1.dll"; + #endif #elif defined(MLX_PLAT_MACOS) #define VK_USE_PLATFORM_MACOS_MVK #define VK_USE_PLATFORM_METAL_EXT - constexpr const char* VULKAN_LIB_NAME = "libvulkan.dylib / libvulkan.1.dylib / libMoltenVK.dylib"; + #ifdef __cplusplus + constexpr const char* VULKAN_LIB_NAME = "libvulkan.dylib / libvulkan.1.dylib / libMoltenVK.dylib"; + #endif #else #define VK_USE_PLATFORM_XLIB_KHR #define VK_USE_PLATFORM_WAYLAND_KHR - constexpr const char* VULKAN_LIB_NAME = "libvulkan.so / libvulkan.so.1"; + #ifdef __cplusplus + constexpr const char* VULKAN_LIB_NAME = "libvulkan.so / libvulkan.so.1"; + #endif #endif - // Checking common assumptions #ifdef __cplusplus #include