diff options
| -rw-r--r-- | meson.build | 14 | ||||
| -rw-r--r-- | src/main.c | 12 |
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], ) @@ -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 *); |
