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.
|
% 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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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]);
|
||||||
|
|||||||
Reference in New Issue
Block a user