tests/shader-runner: Add a 'require' directive for wave ops.

This commit is contained in:
Conor McCarthy 2024-04-24 11:29:17 +10:00 committed by Alexandre Julliard
parent 9315bcb6a1
commit 29786d7efb
Notes: Alexandre Julliard 2024-05-02 22:40:21 +02:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Approved-by: Alexandre Julliard (@julliard)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/800
6 changed files with 13 additions and 0 deletions

View File

@ -1,5 +1,6 @@
[require] [require]
shader model >= 6.0 shader model >= 6.0
wave ops
[uav 0] [uav 0]
format r32g32b32a32 float format r32g32b32a32 float

View File

@ -1,5 +1,6 @@
[require] [require]
shader model >= 6.0 shader model >= 6.0
wave ops
[uav 0] [uav 0]
format r32g32b32a32 sint format r32g32b32a32 sint

View File

@ -1,5 +1,6 @@
[require] [require]
shader model >= 6.0 shader model >= 6.0
wave ops
[uav 0] [uav 0]
format r32 uint format r32 uint

View File

@ -339,6 +339,10 @@ static void parse_require_directive(struct shader_runner *runner, const char *li
{ {
runner->require_rov = true; runner->require_rov = true;
} }
else if (match_string(line, "wave ops", &line))
{
runner->require_wave_ops = true;
}
else else
{ {
fatal_error("Unknown require directive '%s'.\n", line); fatal_error("Unknown require directive '%s'.\n", line);
@ -1545,6 +1549,8 @@ static bool check_requirements(const struct shader_runner *runner, const struct
return false; return false;
if (runner->require_rov && !caps->rov) if (runner->require_rov && !caps->rov)
return false; return false;
if (runner->require_wave_ops && !caps->wave_ops)
return false;
return true; return true;
} }
@ -1838,6 +1844,7 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_c
runner->require_float64 = false; runner->require_float64 = false;
runner->require_int64 = false; runner->require_int64 = false;
runner->require_rov = false; runner->require_rov = false;
runner->require_wave_ops = false;
runner->compile_options = 0; runner->compile_options = 0;
skip_tests = false; skip_tests = false;
} }

View File

@ -137,6 +137,7 @@ struct shader_runner_caps
bool float64; bool float64;
bool int64; bool int64;
bool rov; bool rov;
bool wave_ops;
}; };
static inline unsigned int shader_runner_caps_get_feature_flags(const struct shader_runner_caps *caps) static inline unsigned int shader_runner_caps_get_feature_flags(const struct shader_runner_caps *caps)
@ -169,6 +170,7 @@ struct shader_runner
bool require_float64; bool require_float64;
bool require_int64; bool require_int64;
bool require_rov; bool require_rov;
bool require_wave_ops;
bool last_render_failed; bool last_render_failed;

View File

@ -751,6 +751,7 @@ static void d3d12_runner_init_caps(struct d3d12_shader_runner *runner)
runner->caps.float64 = options.DoublePrecisionFloatShaderOps; runner->caps.float64 = options.DoublePrecisionFloatShaderOps;
runner->caps.int64 = options1.Int64ShaderOps; runner->caps.int64 = options1.Int64ShaderOps;
runner->caps.rov = options.ROVsSupported; runner->caps.rov = options.ROVsSupported;
runner->caps.wave_ops = options1.WaveOps;
} }
static bool device_supports_shader_model_6_0(ID3D12Device *device) static bool device_supports_shader_model_6_0(ID3D12Device *device)