mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
tests/shader-runner: Add a 'require' directive for wave ops.
This commit is contained in:
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
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user