tests/hlsl: Skip a d3d11 minimum precision array indexing test on NVIDIA.

This commit is contained in:
Giovanni Mascellani
2025-09-20 22:15:17 +02:00
committed by Henri Verbeet
parent 9fab94c58e
commit 87435aca8a
Notes: Henri Verbeet 2025-09-29 13:05:17 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1751
3 changed files with 41 additions and 2 deletions

View File

@@ -332,13 +332,14 @@ if(sm>=6) uniform 4 uint 0x4200
uniform 5 uint 2
uniform 8 uint 2
todo(sm>=6) draw quad
probe (0, 0) rgba(10.25, 3.5, 0.0, 0.0)
% With the NVIDIA d3d11 driver `arr[x]' seems to evaluate to `arr[0]' independently of x.
if(!d3d11 | !nvidia) probe (0, 0) f32(10.25, 3.5, 0.0, 0.0)
uniform 0 uint 0
uniform 4 uint 0
uniform 5 uint 0
uniform 8 uint 0
todo(sm>=6) draw quad
probe (0, 0) rgba(1.0, 2.0, 0, 0)
if(!d3d11 | !nvidia) probe (0, 0) f32(1.0, 2.0, 0, 0)
[pixel shader]
uniform min16float u[4];

View File

@@ -151,6 +151,7 @@ static bool check_qualifier_args_conjunction(struct shader_runner *runner,
* prefix of X. */
static const char *const valid_tags[] =
{
"d3d11",
"d3d12",
"glsl",
"llvmpipe",
@@ -158,6 +159,7 @@ static bool check_qualifier_args_conjunction(struct shader_runner *runner,
"msl",
"mvk<1.2.11",
"mvk",
"nvidia",
"opengl",
"vulkan",
"warp",

View File

@@ -258,6 +258,39 @@ static bool get_format_support(ID3D11Device *device, enum DXGI_FORMAT format)
return ret;
}
static bool get_adapter_desc(ID3D11Device *device, DXGI_ADAPTER_DESC *desc)
{
IDXGIDevice *dxgi_device;
IDXGIAdapter *adapter;
HRESULT hr;
memset(desc, 0, sizeof(*desc));
if (!vkd3d_test_platform_is_windows())
return false;
hr = ID3D11Device_QueryInterface(device, &IID_IDXGIDevice, (void **)&dxgi_device);
ok(hr == S_OK, "Failed to get DXGI device, hr %#lx.\n", hr);
hr = IDXGIDevice_GetAdapter(dxgi_device, &adapter);
ok(hr == S_OK, "Failed to get DXGI adapter, hr %#lx.\n", hr);
hr = IDXGIAdapter_GetDesc(adapter, desc);
ok(hr == S_OK, "Failed to get adapter desc, hr %#lx.\n", hr);
IDXGIAdapter_Release(adapter);
IDXGIDevice_Release(dxgi_device);
return true;
}
static bool is_nvidia_windows_device(ID3D11Device *device)
{
DXGI_ADAPTER_DESC desc;
return get_adapter_desc(device, &desc) && desc.VendorId == 0x10de;
}
static BOOL init_test_context(struct d3d11_shader_runner *runner)
{
D3D11_FEATURE_DATA_D3D11_OPTIONS2 options2 = {0};
@@ -326,8 +359,11 @@ static BOOL init_test_context(struct d3d11_shader_runner *runner)
}
runner->caps.tag_count = 0;
runner->caps.tags[runner->caps.tag_count++] = "d3d11";
if (test_options.use_warp_device)
runner->caps.tags[runner->caps.tag_count++] = "warp";
if (is_nvidia_windows_device(runner->device))
runner->caps.tags[runner->caps.tag_count++] = "nvidia";
rt_width = RENDER_TARGET_WIDTH;
rt_height = RENDER_TARGET_HEIGHT;