tests/d3d12: Skip testing NULL VBVs on NVIDIA on Windows.

It seems that the NVIDIA drivers leaves VBVs bindings untouched
when they are NULL (or the GPU buffer address is NULL), instead of
setting them to a null binding.

Differently from other cases of inconsistent behaviour between AMD
and NVIDIA, here I'm explicitly marking the NVIDIA behaviour as
broken, because the expected behaviour is spelled out explicitly
(at least for the D3D12 specification standards).
This commit is contained in:
Giovanni Mascellani
2025-04-12 15:43:22 +02:00
committed by Henri Verbeet
parent bc637f2633
commit 6ca9395368
Notes: Henri Verbeet 2025-04-21 14:51:29 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1464
2 changed files with 19 additions and 0 deletions

View File

@@ -20242,6 +20242,13 @@ static void test_null_vbv(void)
command_list = context.list;
queue = context.queue;
if (is_nvidia_windows_device(context.device))
{
skip("Setting NULL VBVs is broken on NVIDIA devices, skipping.\n");
destroy_test_context(&context);
return;
}
context.root_signature = create_empty_root_signature(context.device,
D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT);
input_layout.pInputElementDescs = layout_desc;

View File

@@ -479,6 +479,13 @@ static inline bool is_intel_windows_device(ID3D12Device *device)
return get_adapter_desc(device, &desc) && desc.VendorId == 0x8086;
}
static inline bool is_nvidia_windows_device(ID3D12Device *device)
{
DXGI_ADAPTER_DESC desc;
return get_adapter_desc(device, &desc) && desc.VendorId == 0x10de;
}
static inline bool is_mesa_device(ID3D12Device *device)
{
return false;
@@ -766,6 +773,11 @@ static inline bool is_intel_windows_device(ID3D12Device *device)
return false;
}
static inline bool is_nvidia_windows_device(ID3D12Device *device)
{
return false;
}
static inline bool is_mesa_device(ID3D12Device *device)
{
VkPhysicalDeviceDriverPropertiesKHR properties;