mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
tests/shader_runner: Pass the runner capabilities to run_shader_tests().
Allowing these to be checked by run_shader_tests() itself, instead of reimplementing those checks in each individual runner.
This commit is contained in:
committed by
Alexandre Julliard
parent
7b41abaa1b
commit
930fbcbb26
Notes:
Alexandre Julliard
2024-02-19 23:00:22 +01:00
Approved-by: Zebediah Figura (@zfigura) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/658
@@ -1309,8 +1309,22 @@ static enum parse_state read_shader_directive(struct shader_runner *runner, enum
|
||||
return state;
|
||||
}
|
||||
|
||||
void run_shader_tests(struct shader_runner *runner, const struct shader_runner_ops *ops, void *dxc_compiler,
|
||||
enum shader_model minimum_shader_model, enum shader_model maximum_shader_model)
|
||||
static bool check_requirements(const struct shader_runner *runner, const struct shader_runner_caps *caps)
|
||||
{
|
||||
if (runner->maximum_shader_model < runner->minimum_shader_model)
|
||||
return false;
|
||||
if (runner->require_float64 && !caps->float64)
|
||||
return false;
|
||||
if (runner->require_int64 && !caps->int64)
|
||||
return false;
|
||||
if (runner->require_rov && !caps->rov)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void run_shader_tests(struct shader_runner *runner, const struct shader_runner_caps *caps,
|
||||
const struct shader_runner_ops *ops, void *dxc_compiler)
|
||||
{
|
||||
size_t shader_source_size = 0, shader_source_len = 0;
|
||||
struct resource_params current_resource;
|
||||
@@ -1332,8 +1346,8 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_o
|
||||
|
||||
memset(runner, 0, sizeof(*runner));
|
||||
runner->ops = ops;
|
||||
runner->minimum_shader_model = minimum_shader_model;
|
||||
runner->maximum_shader_model = maximum_shader_model;
|
||||
runner->minimum_shader_model = caps->minimum_shader_model;
|
||||
runner->maximum_shader_model = caps->maximum_shader_model;
|
||||
|
||||
if ((testname = strrchr(test_options.filename, '/')))
|
||||
++testname;
|
||||
@@ -1360,8 +1374,7 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_o
|
||||
break;
|
||||
|
||||
case STATE_REQUIRE:
|
||||
if (runner->maximum_shader_model < runner->minimum_shader_model
|
||||
|| !runner->ops->check_requirements(runner))
|
||||
if (!check_requirements(runner, caps))
|
||||
skip_tests = true;
|
||||
break;
|
||||
|
||||
@@ -1512,8 +1525,8 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_o
|
||||
else if (!strcmp(line, "[require]\n"))
|
||||
{
|
||||
state = STATE_REQUIRE;
|
||||
runner->minimum_shader_model = minimum_shader_model;
|
||||
runner->maximum_shader_model = maximum_shader_model;
|
||||
runner->minimum_shader_model = caps->minimum_shader_model;
|
||||
runner->maximum_shader_model = caps->maximum_shader_model;
|
||||
runner->require_float64 = false;
|
||||
runner->require_int64 = false;
|
||||
runner->require_rov = false;
|
||||
|
Reference in New Issue
Block a user