diff --git a/pkgs/by-name/vk/vkmark/fix-build-with-newer-vulkan-headers.patch b/pkgs/by-name/vk/vkmark/fix-build-with-newer-vulkan-headers.patch new file mode 100644 index 000000000000..58a38b39cca1 --- /dev/null +++ b/pkgs/by-name/vk/vkmark/fix-build-with-newer-vulkan-headers.patch @@ -0,0 +1,73 @@ +From abc5fc8495692df968636c29f44719e0999a73b5 Mon Sep 17 00:00:00 2001 +From: Philipp Zabel +Date: Wed, 10 Dec 2025 10:59:49 +0100 +Subject: [PATCH 1/2] core: Register custom dispatcher with isDispatchLoader + +Since Vulkan 1.4.333, custom dispatch loaders must be registered +with isDispatchLoader to be recognized. +--- + src/vulkan_state.cpp | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/vulkan_state.cpp b/src/vulkan_state.cpp +index a36b2994dbba3e74cb1fb378e4dbb054157ae516..847095147bf5e050e558065623921ac3f06eb7e7 100644 +--- a/src/vulkan_state.cpp ++++ b/src/vulkan_state.cpp +@@ -65,6 +65,18 @@ class DebugUtilsDispatcher + + } + ++#if VK_HEADER_VERSION >= 333 ++namespace vk::detail { ++ ++template <> ++struct isDispatchLoader<::DebugUtilsDispatcher> ++{ ++ static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; ++}; ++ ++} ++#endif ++ + VulkanState::VulkanState(VulkanWSI& vulkan_wsi, ChoosePhysicalDeviceStrategy const& pd_strategy, bool debug) + : debug_enabled(debug) + { + +From ab3f3d709e2f93859b528b1ace56423675940290 Mon Sep 17 00:00:00 2001 +From: Philipp Zabel +Date: Wed, 10 Dec 2025 10:59:49 +0100 +Subject: [PATCH 2/2] kms: Register custom dispatcher with isDispatchLoader + +Since Vulkan 1.4.333, custom dispatch loaders must be registered +with isDispatchLoader to be recognized. +--- + src/ws/kms_window_system.cpp | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/src/ws/kms_window_system.cpp b/src/ws/kms_window_system.cpp +index 4bf7838cee0512925ef084b641de3c2a11389c6d..1bc04581eee233f33ad3ea7a719ec4c3894b1104 100644 +--- a/src/ws/kms_window_system.cpp ++++ b/src/ws/kms_window_system.cpp +@@ -474,6 +474,22 @@ class GetFormatProperties2Dispatcher + PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR; + }; + ++} ++ ++#if VK_HEADER_VERSION >= 333 ++namespace vk::detail { ++ ++template <> ++struct isDispatchLoader<::GetFormatProperties2Dispatcher> ++{ ++ static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; ++}; ++ ++} ++#endif ++ ++namespace { ++ + std::vector vk_get_supported_mods_for_format(VulkanState& vulkan, + vk::Format format) + { diff --git a/pkgs/by-name/vk/vkmark/package.nix b/pkgs/by-name/vk/vkmark/package.nix index 62c1101460f9..4ef602d4d7fc 100644 --- a/pkgs/by-name/vk/vkmark/package.nix +++ b/pkgs/by-name/vk/vkmark/package.nix @@ -28,6 +28,12 @@ stdenv.mkDerivation (finalAttrs: { sha256 = "sha256-Rjpjqe7htwlhDdwELm74MvSzHzXLhRD/P8IES7nz/VY="; }; + patches = [ + # Fix build with vulkan-headers >= 1.4.333 + # Remove once https://github.com/vkmark/vkmark/pull/80 is included in a release + ./fix-build-with-newer-vulkan-headers.patch + ]; + postPatch = '' substituteInPlace src/meson.build \ --replace-fail "vulkan_dep.get_pkgconfig_variable('prefix')" "'${vulkan-headers}'"