tests: Introduce get_mvk_driver_version().

This commit is contained in:
Giovanni Mascellani
2025-10-03 15:07:21 +02:00
committed by Henri Verbeet
parent 265d0fddb5
commit 190033bb85
Notes: Henri Verbeet 2025-10-06 19:48:45 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1768
2 changed files with 20 additions and 6 deletions

View File

@@ -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)

View File

@@ -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 */