From: Giovanni Mascellani gmascellani@codeweavers.com
This currently happens on MoltenVK. --- tests/d3d12.c | 11 ++++++++++- tests/d3d12_crosstest.h | 13 +++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/tests/d3d12.c b/tests/d3d12.c index 0748ab6dd..b7579fc07 100644 --- a/tests/d3d12.c +++ b/tests/d3d12.c @@ -23760,9 +23760,11 @@ static void test_create_query_heap(void) heap_desc.NodeMask = 0;
hr = ID3D12Device_CreateQueryHeap(device, &heap_desc, &IID_ID3D12QueryHeap, (void **)&query_heap); + bug_if(types[i] == D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS && is_mvk_device(device)) ok(hr == S_OK, "Failed to create query heap, type %u, hr %#x.\n", types[i], hr);
- ID3D12QueryHeap_Release(query_heap); + if (hr == S_OK) + ID3D12QueryHeap_Release(query_heap); }
heap_desc.Type = D3D12_QUERY_HEAP_TYPE_SO_STATISTICS; @@ -23901,7 +23903,14 @@ static void test_query_pipeline_statistics(void) heap_desc.Count = 2; heap_desc.NodeMask = 0; hr = ID3D12Device_CreateQueryHeap(device, &heap_desc, &IID_ID3D12QueryHeap, (void **)&query_heap); + bug_if(is_mvk_device(device)) ok(SUCCEEDED(hr), "Failed to create query heap, type %u, hr %#x.\n", heap_desc.Type, hr); + if (FAILED(hr)) + { + ID3D12PipelineState_Release(pso); + destroy_test_context(&context); + return; + }
resource = create_readback_buffer(device, 2 * sizeof(struct D3D12_QUERY_DATA_PIPELINE_STATISTICS));
diff --git a/tests/d3d12_crosstest.h b/tests/d3d12_crosstest.h index 973f980ca..6c0a4ef12 100644 --- a/tests/d3d12_crosstest.h +++ b/tests/d3d12_crosstest.h @@ -411,6 +411,11 @@ static inline bool is_radv_device(ID3D12Device *device) return false; }
+static inline bool is_mvk_device(ID3D12Device *device) +{ + return false; +} + static inline bool is_depth_clip_enable_supported(ID3D12Device *device) { return true; @@ -660,6 +665,14 @@ static inline bool is_radv_device(ID3D12Device *device) return properties.driverID == VK_DRIVER_ID_MESA_RADV_KHR; }
+static inline bool is_mvk_device(ID3D12Device *device) +{ + VkPhysicalDeviceDriverPropertiesKHR properties; + + get_driver_properties(device, &properties); + return properties.driverID == VK_DRIVER_ID_MOLTENVK; +} + static inline bool is_depth_clip_enable_supported(ID3D12Device *device) { VkPhysicalDevice vk_physical_device = vkd3d_get_vk_physical_device(device);