mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
tests: Do not crash if a pipeline statistics query heap cannot be created.
This currently happens on MoltenVK.
This commit is contained in:
parent
d742770499
commit
6dfdbb5c26
Notes:
Alexandre Julliard
2023-09-22 22:47:46 +02:00
Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/354
2
README
2
README
@ -9,7 +9,7 @@ similar, but not identical, to Direct3D 12.
|
|||||||
Building vkd3d
|
Building vkd3d
|
||||||
==============
|
==============
|
||||||
|
|
||||||
Vkd3d depends on SPIRV-Headers and Vulkan-Headers (>= 1.2.139).
|
Vkd3d depends on SPIRV-Headers and Vulkan-Headers (>= 1.2.148).
|
||||||
|
|
||||||
Vkd3d generates some of its headers from IDL files. If you are using the
|
Vkd3d generates some of its headers from IDL files. If you are using the
|
||||||
release tarballs, then these headers are pre-generated and are included. If
|
release tarballs, then these headers are pre-generated and are included. If
|
||||||
|
@ -83,7 +83,7 @@ AS_IF([test "x$ac_cv_header_spirv_unified1_GLSL_std_450_h" != "xyes" \
|
|||||||
-a "x$ac_cv_header_vulkan_GLSL_std_450_h" != "xyes"],
|
-a "x$ac_cv_header_vulkan_GLSL_std_450_h" != "xyes"],
|
||||||
[AC_MSG_ERROR([GLSL.std.450.h not found.])])
|
[AC_MSG_ERROR([GLSL.std.450.h not found.])])
|
||||||
|
|
||||||
VKD3D_CHECK_VULKAN_HEADER_VERSION([139], [AC_MSG_ERROR([Vulkan headers are too old, 1.2.139 is required.])])
|
VKD3D_CHECK_VULKAN_HEADER_VERSION([148], [AC_MSG_ERROR([Vulkan headers are too old, 1.2.148 is required.])])
|
||||||
|
|
||||||
AC_CHECK_DECL([SpvCapabilityDemoteToHelperInvocationEXT],, [AC_MSG_ERROR([SPIR-V headers are too old.])], [
|
AC_CHECK_DECL([SpvCapabilityDemoteToHelperInvocationEXT],, [AC_MSG_ERROR([SPIR-V headers are too old.])], [
|
||||||
#ifdef HAVE_SPIRV_UNIFIED1_SPIRV_H
|
#ifdef HAVE_SPIRV_UNIFIED1_SPIRV_H
|
||||||
|
@ -23740,8 +23740,10 @@ static void test_create_query_heap(void)
|
|||||||
heap_desc.NodeMask = 0;
|
heap_desc.NodeMask = 0;
|
||||||
|
|
||||||
hr = ID3D12Device_CreateQueryHeap(device, &heap_desc, &IID_ID3D12QueryHeap, (void **)&query_heap);
|
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);
|
ok(hr == S_OK, "Failed to create query heap, type %u, hr %#x.\n", types[i], hr);
|
||||||
|
|
||||||
|
if (hr == S_OK)
|
||||||
ID3D12QueryHeap_Release(query_heap);
|
ID3D12QueryHeap_Release(query_heap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -23881,7 +23883,14 @@ static void test_query_pipeline_statistics(void)
|
|||||||
heap_desc.Count = 2;
|
heap_desc.Count = 2;
|
||||||
heap_desc.NodeMask = 0;
|
heap_desc.NodeMask = 0;
|
||||||
hr = ID3D12Device_CreateQueryHeap(device, &heap_desc, &IID_ID3D12QueryHeap, (void **)&query_heap);
|
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);
|
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));
|
resource = create_readback_buffer(device, 2 * sizeof(struct D3D12_QUERY_DATA_PIPELINE_STATISTICS));
|
||||||
|
|
||||||
|
@ -411,6 +411,11 @@ static inline bool is_radv_device(ID3D12Device *device)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool is_mvk_device(ID3D12Device *device)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static inline bool is_depth_clip_enable_supported(ID3D12Device *device)
|
static inline bool is_depth_clip_enable_supported(ID3D12Device *device)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
@ -660,6 +665,14 @@ static inline bool is_radv_device(ID3D12Device *device)
|
|||||||
return properties.driverID == VK_DRIVER_ID_MESA_RADV_KHR;
|
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)
|
static inline bool is_depth_clip_enable_supported(ID3D12Device *device)
|
||||||
{
|
{
|
||||||
VkPhysicalDevice vk_physical_device = vkd3d_get_vk_physical_device(device);
|
VkPhysicalDevice vk_physical_device = vkd3d_get_vk_physical_device(device);
|
||||||
|
Loading…
Reference in New Issue
Block a user