tests: Introduce get_nvidia_driver_version().

This commit is contained in:
Giovanni Mascellani
2025-10-03 15:10:02 +02:00
committed by Henri Verbeet
parent 190033bb85
commit 42016ab09c
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

@@ -837,21 +837,19 @@ static inline bool is_nvidia_device(ID3D12Device *device)
return properties.driverID == VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR;
}
/* NVIDIA uses a different bit pattern than standard Vulkan. */
#define NV_MAKE_API_VERSION(major, minor, patch) \
((((uint32_t)(major)) << 22u) | (((uint32_t)(minor)) << 14u) | (((uint32_t)(patch)) << 6u))
static inline bool is_nvidia_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_NVIDIA_PROPRIETARY_KHR)
if (!get_nvidia_driver_version(&device_properties, &driver_properties, &driver_major, &driver_minor, &driver_patch))
return false;
return device_properties.driverVersion < NV_MAKE_API_VERSION(major, minor, patch);
return compare_versions(driver_major, driver_minor, driver_patch, major, minor, patch) < 0;
}
static inline bool is_qualcomm_device(ID3D12Device *device)