diff --git a/tests/d3d12.c b/tests/d3d12.c index f1484cf96..5df738d11 100644 --- a/tests/d3d12.c +++ b/tests/d3d12.c @@ -35116,6 +35116,13 @@ static void test_graphics_compute_queue_synchronization(void) device = context.device; 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].Descriptor.ShaderRegister = 1; root_parameters[0].Descriptor.RegisterSpace = 0; diff --git a/tests/d3d12_crosstest.h b/tests/d3d12_crosstest.h index faf5e9d80..dfd0939b8 100644 --- a/tests/d3d12_crosstest.h +++ b/tests/d3d12_crosstest.h @@ -538,6 +538,11 @@ static inline bool is_mvk_device(ID3D12Device *device) 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) { return false; @@ -872,6 +877,16 @@ static inline bool is_mvk_device(ID3D12Device *device) 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. */ #define MVK_MAKE_API_VERSION(major, minor, patch) \ ((((uint32_t)(major)) * 10000) + (((uint32_t)(minor)) * 100) + (uint32_t)(patch))