From 190033bb85d9f2c0a2f60aefc58337566c61f3ff Mon Sep 17 00:00:00 2001 From: Giovanni Mascellani Date: Fri, 3 Oct 2025 15:07:21 +0200 Subject: [PATCH] tests: Introduce get_mvk_driver_version(). --- tests/d3d12_crosstest.h | 10 ++++------ tests/vulkan_utils.h | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/tests/d3d12_crosstest.h b/tests/d3d12_crosstest.h index 7916b2c15..d0ef79b08 100644 --- a/tests/d3d12_crosstest.h +++ b/tests/d3d12_crosstest.h @@ -888,20 +888,18 @@ static inline bool is_mvk_paravirtualized_device(ID3D12Device *device) && strcmp(device_properties.deviceName, "Apple Paravirtual device") == 0; } -/* MoltenVK uses a different pattern than standard Vulkan. */ -#define MVK_MAKE_API_VERSION(major, minor, patch) \ - ((((uint32_t)(major)) * 10000) + (((uint32_t)(minor)) * 100) + (uint32_t)(patch)) - static inline bool is_mvk_device_lt(ID3D12Device *device, uint32_t major, uint32_t minor, uint32_t patch) { VkPhysicalDeviceDriverPropertiesKHR driver_properties; + uint32_t driver_major, driver_minor, driver_patch; VkPhysicalDeviceProperties device_properties; get_driver_properties(device, &device_properties, &driver_properties); - if (driver_properties.driverID != VK_DRIVER_ID_MOLTENVK) + + if (!get_mvk_driver_version(&device_properties, &driver_properties, &driver_major, &driver_minor, &driver_patch)) return false; - return device_properties.driverVersion < MVK_MAKE_API_VERSION(major, minor, patch); + return compare_versions(driver_major, driver_minor, driver_patch, major, minor, patch) < 0; } static inline bool is_mesa_device_with_llvm_ge(ID3D12Device *device, uint32_t major, uint32_t minor, uint32_t patch) diff --git a/tests/vulkan_utils.h b/tests/vulkan_utils.h index 9c42099d4..7830e1e7f 100644 --- a/tests/vulkan_utils.h +++ b/tests/vulkan_utils.h @@ -491,4 +491,20 @@ static inline bool get_mesa_driver_version(const VkPhysicalDeviceProperties *dev return true; } +static inline bool get_mvk_driver_version(const VkPhysicalDeviceProperties *device_properties, + const VkPhysicalDeviceDriverPropertiesKHR *driver_properties, + uint32_t *major, uint32_t *minor, uint32_t *patch) +{ + uint32_t version = device_properties->driverVersion; + + if (driver_properties->driverID != VK_DRIVER_ID_MOLTENVK) + return false; + + *major = version / 10000; + *minor = (version / 100) % 100; + *patch = version % 100; + + return true; +} + #endif /* __VKD3D_VULKAN_UTILS_H */