summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClément Sibille <clements@lisible.xyz>2025-03-15 18:54:37 +0100
committerClément Sibille <clements@lisible.xyz>2025-03-15 18:54:37 +0100
commitfda04f7e30149c493c202d2bdb0668d7147f85ea (patch)
treeadc6c4c91747f2b5400d9cd5ef4a302fc088d26e
parent1adcfe6082aba2bf993319691e677082287090e5 (diff)
Make it work on macOSHEADmain
-rw-r--r--meson.build14
-rw-r--r--src/main.c12
2 files changed, 20 insertions, 6 deletions
diff --git a/meson.build b/meson.build
index ebfbfff..931a5e4 100644
--- a/meson.build
+++ b/meson.build
@@ -2,10 +2,22 @@ project('vkguide', 'c', default_options: ['c_std=c17', 'warning_level=3'])
cc = meson.get_compiler('c')
sdl3_dep = dependency('SDL3')
+
+if host_machine.system() == 'darwin'
+moltenvk_library_path = '/Users/clements/dev/VulkanSDK/1.4.309.0/macOS/lib'
+moltenvk_include_path = '/Users/clements/dev/VulkanSDK/1.4.309.0/macOS/include'
+vulkan_dep = declare_dependency(
+ link_args: ['-L' + moltenvk_library_path, '-lvulkan'],
+ include_directories: include_directories(moltenvk_include_path)
+)
+else
vulkan_dep = dependency('vulkan')
+endif
executable(
'vkguide',
['src/main.c'],
- dependencies: [sdl3_dep, vulkan_dep]
+ build_rpath: moltenvk_library_path,
+ install_rpath: moltenvk_library_path,
+ dependencies: [sdl3_dep, vulkan_dep],
)
diff --git a/src/main.c b/src/main.c
index 1d65fd8..592a851 100644
--- a/src/main.c
+++ b/src/main.c
@@ -64,7 +64,7 @@ bool vulkan_renderer_create_instance(struct vulkan_renderer *renderer) {
.applicationVersion = VK_MAKE_VERSION(1, 0, 0),
.pEngineName = "None",
.engineVersion = VK_MAKE_VERSION(1, 0, 0),
- .apiVersion = VK_API_VERSION_1_0};
+ .apiVersion = VK_API_VERSION_1_2};
const char *requested_extensions[MAX_EXTENSION_COUNT] = {0};
uint32_t requested_extension_count = 0;
@@ -153,7 +153,8 @@ bool vulkan_renderer_create_instance(struct vulkan_renderer *renderer) {
.enabledExtensionCount = requested_extension_count,
.ppEnabledExtensionNames = requested_extensions,
.enabledLayerCount = enabled_layer_count,
- .ppEnabledLayerNames = enabled_layers};
+ .ppEnabledLayerNames = enabled_layers,
+ .flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR};
if (renderer->enable_validation_layers) {
instance_create_info.pNext =
(VkDebugUtilsMessengerCreateInfoEXT *)&debug_create_info;
@@ -301,8 +302,8 @@ bool device_supports_requested_extensions(VkPhysicalDevice device,
return true;
}
-#define MAX_SWAPCHAIN_SURFACE_FORMAT_COUNT 10
-#define MAX_SWAPCHAIN_SURFACE_PRESENT_MODE_COUNT 10
+#define MAX_SWAPCHAIN_SURFACE_FORMAT_COUNT 64
+#define MAX_SWAPCHAIN_SURFACE_PRESENT_MODE_COUNT 64
struct swapchain_support_details {
VkSurfaceCapabilitiesKHR capabilities;
@@ -358,7 +359,8 @@ bool is_device_suitable(VkPhysicalDevice device, VkSurfaceKHR surface,
extensions_supported && swapchain_adequate;
}
-static const char *required_extensions[] = {VK_KHR_SWAPCHAIN_EXTENSION_NAME};
+static const char *required_extensions[] = {VK_KHR_SWAPCHAIN_EXTENSION_NAME,
+ "VK_KHR_portability_subset"};
static uint32_t required_extension_count =
sizeof(required_extensions) / sizeof(const char *);
Go back to lisible.xyz