mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-12-15 08:03:30 -08:00
tests/hlsl: Skip a shader model 6 floating-point comparison test on Windows NVIDIA.
This commit is contained in:
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
@@ -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.
|
||||
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'.
|
||||
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
|
||||
|
||||
@@ -163,6 +163,7 @@ static bool check_qualifier_args_conjunction(struct shader_runner *runner,
|
||||
"opengl",
|
||||
"vulkan",
|
||||
"warp",
|
||||
"windows",
|
||||
};
|
||||
bool holds = true;
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@ struct shader_runner_caps
|
||||
{
|
||||
const char *runner;
|
||||
const char *compiler;
|
||||
const char *tags[3];
|
||||
const char *tags[4];
|
||||
size_t tag_count;
|
||||
enum shader_model minimum_shader_model;
|
||||
enum shader_model maximum_shader_model;
|
||||
|
||||
@@ -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";
|
||||
if (test_options.use_warp_device)
|
||||
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)
|
||||
{
|
||||
runner->caps.format_caps[formats[i]] = get_format_support(device, formats[i]);
|
||||
|
||||
Reference in New Issue
Block a user