tests/hlsl: Skip a shader model 6 floating-point comparison test on Windows NVIDIA.

This commit is contained in:
Giovanni Mascellani
2025-09-20 22:52:58 +02:00
committed by Henri Verbeet
parent fdf196ce13
commit 463df8e1ea
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
4 changed files with 10 additions and 2 deletions

View File

@@ -61,7 +61,8 @@ if(sm<4) todo probe (0,0) rgba (1010101.0, 11001100.0, 1101001.0, 11.0)
% SM4-5 optimises away the 'not' by inverting the condition, even though this is invalid for NaN. % SM4-5 optimises away the 'not' by inverting the condition, even though this is invalid for NaN.
if(sm>=4 & sm<6) todo probe (0,0) rgba (1010101.0, 0.0, 1101001.0, 1.0) if(sm>=4 & sm<6) todo probe (0,0) rgba (1010101.0, 0.0, 1101001.0, 1.0)
% SM6 emits the correct ordered/unordered instructions, so comparisons are false for NaN, and are made true with 'not'. % SM6 emits the correct ordered/unordered instructions, so comparisons are false for NaN, and are made true with 'not'.
if(sm>=6) probe (0,0) rgba (1010101.0, 11110000.0, 1101001.0, 1.0) % However the Windows NVIDIA driver incorrectly evalutes ord(NaN, ...).
if(sm>=6 & !windows | sm>=6 & !nvidia) probe (0,0) f32(1010101.0, 11110000.0, 1101001.0, 1.0)
% In shader model 2.0, native compares two numbers for equality checking if (a - b)*(a - b) is % In shader model 2.0, native compares two numbers for equality checking if (a - b)*(a - b) is

View File

@@ -163,6 +163,7 @@ static bool check_qualifier_args_conjunction(struct shader_runner *runner,
"opengl", "opengl",
"vulkan", "vulkan",
"warp", "warp",
"windows",
}; };
bool holds = true; bool holds = true;

View File

@@ -168,7 +168,7 @@ struct shader_runner_caps
{ {
const char *runner; const char *runner;
const char *compiler; const char *compiler;
const char *tags[3]; const char *tags[4];
size_t tag_count; size_t tag_count;
enum shader_model minimum_shader_model; enum shader_model minimum_shader_model;
enum shader_model maximum_shader_model; enum shader_model maximum_shader_model;

View File

@@ -1137,8 +1137,14 @@ static void d3d12_runner_init_caps(struct d3d12_shader_runner *runner,
runner->caps.tags[runner->caps.tag_count++] = "mesa<23.3"; runner->caps.tags[runner->caps.tag_count++] = "mesa<23.3";
if (test_options.use_warp_device) if (test_options.use_warp_device)
runner->caps.tags[runner->caps.tag_count++] = "warp"; runner->caps.tags[runner->caps.tag_count++] = "warp";
if (is_nvidia_windows_device(device) || is_nvidia_device(device))
runner->caps.tags[runner->caps.tag_count++] = "nvidia";
} }
#ifdef _WIN32
runner->caps.tags[runner->caps.tag_count++] = "windows";
#endif
for (unsigned int i = 0; i < ARRAY_SIZE(formats); ++i) for (unsigned int i = 0; i < ARRAY_SIZE(formats); ++i)
{ {
runner->caps.format_caps[formats[i]] = get_format_support(device, formats[i]); runner->caps.format_caps[formats[i]] = get_format_support(device, formats[i]);