mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
tests: Skip some tests that crash on llvmpipe.
This commit is contained in:
parent
0b2ce5c13a
commit
7cfb02cfd3
Notes:
Alexandre Julliard
2024-04-11 17:03:42 -05:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/765
@ -19588,6 +19588,15 @@ static void test_null_srv(void)
|
|||||||
queue = context.queue;
|
queue = context.queue;
|
||||||
device = context.device;
|
device = context.device;
|
||||||
|
|
||||||
|
if (is_llvmpipe_device_gte(device, 23, 2, 1))
|
||||||
|
{
|
||||||
|
/* llvmpipe crashes when mutable descriptors are used. I don't
|
||||||
|
* know yet whether this is a bug in vkd3d or Mesa. */
|
||||||
|
skip("Test crashes on llvmpipe, skipping.\n");
|
||||||
|
destroy_test_context(&context);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
context.root_signature = create_texture_root_signature(context.device,
|
context.root_signature = create_texture_root_signature(context.device,
|
||||||
D3D12_SHADER_VISIBILITY_PIXEL, 4, 0);
|
D3D12_SHADER_VISIBILITY_PIXEL, 4, 0);
|
||||||
|
|
||||||
@ -19803,6 +19812,15 @@ static void test_null_uav(void)
|
|||||||
command_list = context.list;
|
command_list = context.list;
|
||||||
queue = context.queue;
|
queue = context.queue;
|
||||||
|
|
||||||
|
if (is_llvmpipe_device_gte(device, 23, 2, 1))
|
||||||
|
{
|
||||||
|
/* llvmpipe crashes when mutable descriptors are used. I don't
|
||||||
|
* know yet whether this is a bug in vkd3d or Mesa. */
|
||||||
|
skip("Test crashes on llvmpipe, skipping.\n");
|
||||||
|
destroy_test_context(&context);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
descriptor_ranges[0].RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_UAV;
|
descriptor_ranges[0].RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_UAV;
|
||||||
descriptor_ranges[0].NumDescriptors = 1;
|
descriptor_ranges[0].NumDescriptors = 1;
|
||||||
descriptor_ranges[0].BaseShaderRegister = 1;
|
descriptor_ranges[0].BaseShaderRegister = 1;
|
||||||
|
@ -406,6 +406,12 @@ static inline bool is_llvmpipe_device(ID3D12Device *device)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool is_llvmpipe_device_gte(ID3D12Device *device,
|
||||||
|
uint32_t major, uint32_t minor, uint32_t patch)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static inline bool is_nvidia_device(ID3D12Device *device)
|
static inline bool is_nvidia_device(ID3D12Device *device)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@ -564,7 +570,8 @@ static ID3D12Device *create_device(void)
|
|||||||
return SUCCEEDED(hr) ? device : NULL;
|
return SUCCEEDED(hr) ? device : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool get_driver_properties(ID3D12Device *device, VkPhysicalDeviceDriverPropertiesKHR *driver_properties)
|
static bool get_driver_properties(ID3D12Device *device, VkPhysicalDeviceProperties *device_properties,
|
||||||
|
VkPhysicalDeviceDriverPropertiesKHR *driver_properties)
|
||||||
{
|
{
|
||||||
PFN_vkGetPhysicalDeviceProperties2KHR pfn_vkGetPhysicalDeviceProperties2KHR;
|
PFN_vkGetPhysicalDeviceProperties2KHR pfn_vkGetPhysicalDeviceProperties2KHR;
|
||||||
VkPhysicalDeviceProperties2 device_properties2;
|
VkPhysicalDeviceProperties2 device_properties2;
|
||||||
@ -588,6 +595,8 @@ static bool get_driver_properties(ID3D12Device *device, VkPhysicalDeviceDriverPr
|
|||||||
device_properties2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
|
device_properties2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
|
||||||
device_properties2.pNext = driver_properties;
|
device_properties2.pNext = driver_properties;
|
||||||
pfn_vkGetPhysicalDeviceProperties2KHR(vk_physical_device, &device_properties2);
|
pfn_vkGetPhysicalDeviceProperties2KHR(vk_physical_device, &device_properties2);
|
||||||
|
if (device_properties)
|
||||||
|
*device_properties = device_properties2.properties;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -618,7 +627,7 @@ LOAD_VK_PFN(vkGetInstanceProcAddr)
|
|||||||
|
|
||||||
if (SUCCEEDED(hr = create_vkd3d_device(instance, D3D_FEATURE_LEVEL_11_0, &IID_ID3D12Device, (void **)&device)))
|
if (SUCCEEDED(hr = create_vkd3d_device(instance, D3D_FEATURE_LEVEL_11_0, &IID_ID3D12Device, (void **)&device)))
|
||||||
{
|
{
|
||||||
if (get_driver_properties(device, &driver_properties))
|
if (get_driver_properties(device, NULL, &driver_properties))
|
||||||
trace("Driver name: %s, driver info: %s.\n", driver_properties.driverName, driver_properties.driverInfo);
|
trace("Driver name: %s, driver info: %s.\n", driver_properties.driverName, driver_properties.driverInfo);
|
||||||
|
|
||||||
ID3D12Device_Release(device);
|
ID3D12Device_Release(device);
|
||||||
@ -641,7 +650,7 @@ static inline bool is_mesa_device(ID3D12Device *device)
|
|||||||
{
|
{
|
||||||
VkPhysicalDeviceDriverPropertiesKHR properties;
|
VkPhysicalDeviceDriverPropertiesKHR properties;
|
||||||
|
|
||||||
get_driver_properties(device, &properties);
|
get_driver_properties(device, NULL, &properties);
|
||||||
return properties.driverID == VK_DRIVER_ID_MESA_RADV_KHR
|
return properties.driverID == VK_DRIVER_ID_MESA_RADV_KHR
|
||||||
|| properties.driverID == VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR;
|
|| properties.driverID == VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR;
|
||||||
}
|
}
|
||||||
@ -650,7 +659,7 @@ static inline bool is_mesa_intel_device(ID3D12Device *device)
|
|||||||
{
|
{
|
||||||
VkPhysicalDeviceDriverPropertiesKHR properties;
|
VkPhysicalDeviceDriverPropertiesKHR properties;
|
||||||
|
|
||||||
get_driver_properties(device, &properties);
|
get_driver_properties(device, NULL, &properties);
|
||||||
return properties.driverID == VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR;
|
return properties.driverID == VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -658,15 +667,42 @@ static inline bool is_llvmpipe_device(ID3D12Device *device)
|
|||||||
{
|
{
|
||||||
VkPhysicalDeviceDriverPropertiesKHR properties;
|
VkPhysicalDeviceDriverPropertiesKHR properties;
|
||||||
|
|
||||||
get_driver_properties(device, &properties);
|
get_driver_properties(device, NULL, &properties);
|
||||||
return properties.driverID == VK_DRIVER_ID_MESA_LLVMPIPE;
|
return properties.driverID == VK_DRIVER_ID_MESA_LLVMPIPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool is_llvmpipe_device_gte(ID3D12Device *device,
|
||||||
|
uint32_t major, uint32_t minor, uint32_t patch)
|
||||||
|
{
|
||||||
|
VkPhysicalDeviceDriverPropertiesKHR driver_properties;
|
||||||
|
VkPhysicalDeviceProperties device_properties;
|
||||||
|
|
||||||
|
get_driver_properties(device, &device_properties, &driver_properties);
|
||||||
|
if (driver_properties.driverID != VK_DRIVER_ID_MESA_LLVMPIPE)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (device_properties.driverVersion == 1)
|
||||||
|
{
|
||||||
|
uint32_t driver_major, driver_minor, driver_patch;
|
||||||
|
|
||||||
|
/* llvmpipe doesn't provide a valid driverVersion value, so we resort to parsing the
|
||||||
|
* driverInfo string. */
|
||||||
|
if (sscanf(driver_properties.driverInfo, "Mesa %u.%u.%u",
|
||||||
|
&driver_major, &driver_minor, &driver_patch) == 3)
|
||||||
|
{
|
||||||
|
device_properties.driverVersion = VK_MAKE_API_VERSION(0,
|
||||||
|
driver_major, driver_minor, driver_patch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return device_properties.driverVersion >= VK_MAKE_API_VERSION(0, major, minor, patch);
|
||||||
|
}
|
||||||
|
|
||||||
static inline bool is_nvidia_device(ID3D12Device *device)
|
static inline bool is_nvidia_device(ID3D12Device *device)
|
||||||
{
|
{
|
||||||
VkPhysicalDeviceDriverPropertiesKHR properties;
|
VkPhysicalDeviceDriverPropertiesKHR properties;
|
||||||
|
|
||||||
get_driver_properties(device, &properties);
|
get_driver_properties(device, NULL, &properties);
|
||||||
return properties.driverID == VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR;
|
return properties.driverID == VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -674,7 +710,7 @@ static inline bool is_radv_device(ID3D12Device *device)
|
|||||||
{
|
{
|
||||||
VkPhysicalDeviceDriverPropertiesKHR properties;
|
VkPhysicalDeviceDriverPropertiesKHR properties;
|
||||||
|
|
||||||
get_driver_properties(device, &properties);
|
get_driver_properties(device, NULL, &properties);
|
||||||
return properties.driverID == VK_DRIVER_ID_MESA_RADV_KHR;
|
return properties.driverID == VK_DRIVER_ID_MESA_RADV_KHR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -682,7 +718,7 @@ static inline bool is_mvk_device(ID3D12Device *device)
|
|||||||
{
|
{
|
||||||
VkPhysicalDeviceDriverPropertiesKHR properties;
|
VkPhysicalDeviceDriverPropertiesKHR properties;
|
||||||
|
|
||||||
get_driver_properties(device, &properties);
|
get_driver_properties(device, NULL, &properties);
|
||||||
return properties.driverID == VK_DRIVER_ID_MOLTENVK;
|
return properties.driverID == VK_DRIVER_ID_MOLTENVK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user