mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
tests: Skip test_graphics_compute_queue_synchronization() on paravirtualized MoltenVK.
This used to work when the macOS runner had a Sonoma host system. Now it has Sequoia, even if the guest is still Sonoma, and the test crashes with: [mvk-error] VK_TIMEOUT: MTLCommandBuffer "vkQueueSubmit MTLCommandBuffer on Queue 3-0" execution failed (code 2): Caused GPU Hang Error (00000003:kIOGPUCommandBufferCallbackErrorHang) vkd3d:56072:err:vkd3d_wait_for_gpu_timeline_semaphore Failed to wait for Vulkan timeline semaphore, vr -4. Upgrading MoltenVK or the guest to Sequoia doesn't seem to help. I haven't investigated the problem, but my experience is that the paravirtualized Metal driver has a number of problems.
This commit is contained in:
committed by
Henri Verbeet
parent
7e134f85a4
commit
d65be3d0c5
Notes:
Henri Verbeet
2025-06-05 17:09:15 +02:00
Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1545
@@ -35116,6 +35116,13 @@ static void test_graphics_compute_queue_synchronization(void)
|
|||||||
device = context.device;
|
device = context.device;
|
||||||
queue = context.queue;
|
queue = context.queue;
|
||||||
|
|
||||||
|
if (is_mvk_paravirtualized_device(device))
|
||||||
|
{
|
||||||
|
skip("GPU hangs on paravirtualized MVK.\n");
|
||||||
|
destroy_test_context(&context);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
root_parameters[0].ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
|
root_parameters[0].ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
|
||||||
root_parameters[0].Descriptor.ShaderRegister = 1;
|
root_parameters[0].Descriptor.ShaderRegister = 1;
|
||||||
root_parameters[0].Descriptor.RegisterSpace = 0;
|
root_parameters[0].Descriptor.RegisterSpace = 0;
|
||||||
|
@@ -538,6 +538,11 @@ static inline bool is_mvk_device(ID3D12Device *device)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool is_mvk_paravirtualized_device(ID3D12Device *device)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static inline bool is_mvk_device_lt(ID3D12Device *device, uint32_t major, uint32_t minor, uint32_t patch)
|
static inline bool is_mvk_device_lt(ID3D12Device *device, uint32_t major, uint32_t minor, uint32_t patch)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@@ -872,6 +877,16 @@ static inline bool is_mvk_device(ID3D12Device *device)
|
|||||||
return properties.driverID == VK_DRIVER_ID_MOLTENVK;
|
return properties.driverID == VK_DRIVER_ID_MOLTENVK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool is_mvk_paravirtualized_device(ID3D12Device *device)
|
||||||
|
{
|
||||||
|
VkPhysicalDeviceDriverPropertiesKHR properties;
|
||||||
|
VkPhysicalDeviceProperties device_properties;
|
||||||
|
|
||||||
|
get_driver_properties(device, &device_properties, &properties);
|
||||||
|
return properties.driverID == VK_DRIVER_ID_MOLTENVK
|
||||||
|
&& strcmp(device_properties.deviceName, "Apple Paravirtual device") == 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* MoltenVK uses a different pattern than standard Vulkan. */
|
/* MoltenVK uses a different pattern than standard Vulkan. */
|
||||||
#define MVK_MAKE_API_VERSION(major, minor, patch) \
|
#define MVK_MAKE_API_VERSION(major, minor, patch) \
|
||||||
((((uint32_t)(major)) * 10000) + (((uint32_t)(minor)) * 100) + (uint32_t)(patch))
|
((((uint32_t)(major)) * 10000) + (((uint32_t)(minor)) * 100) + (uint32_t)(patch))
|
||||||
|
Reference in New Issue
Block a user