mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-12-15 08:03:30 -08:00
tests/shader_runner: Add a "compile shader model" require directive.
This directive requires specific shader models to be tested for compilation, bypassing the default behaviour where only one version from each shader model set (SM1-3, SM4-5, SM6) is compiled.
This commit is contained in:
Notes:
Henri Verbeet
2025-10-16 15:22:12 +02:00
Approved-by: Francisco Casas (@fcasas) Approved-by: Elizabeth Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1766
@@ -516,6 +516,19 @@ static void parse_require_directive(struct shader_runner *runner, const char *li
|
||||
|
||||
fatal_error("Unknown shader model '%s'.\n", line);
|
||||
}
|
||||
else if (match_string(line, "compile shader model", &line))
|
||||
{
|
||||
for (i = 0; i < ARRAY_SIZE(model_strings); ++i)
|
||||
{
|
||||
if (match_string(line, model_strings[i], &line))
|
||||
{
|
||||
bitmap_set(&runner->compile_model_mask, i);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
fatal_error("Unknown shader model '%s'.\n", line);
|
||||
}
|
||||
else if (match_string(line, "options:", &line))
|
||||
{
|
||||
static const struct option
|
||||
@@ -2421,7 +2434,7 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_c
|
||||
static const uint32_t sm1_mask = (1u << SHADER_MODEL_4_0) - 1;
|
||||
static const uint32_t sm4_mask = ((1u << SHADER_MODEL_6_0) - 1) & ~sm1_mask;
|
||||
|
||||
uint32_t model_mask = 0;
|
||||
uint32_t model_mask = runner->compile_model_mask;
|
||||
|
||||
if (runner->hlsl_hrs[runner->minimum_shader_model] == S_OK)
|
||||
bitmap_set(&model_mask, runner->minimum_shader_model);
|
||||
@@ -2541,6 +2554,7 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_c
|
||||
state = STATE_REQUIRE;
|
||||
runner->minimum_shader_model = caps->minimum_shader_model;
|
||||
runner->maximum_shader_model = caps->maximum_shader_model;
|
||||
runner->compile_model_mask = 0;
|
||||
memset(runner->require_shader_caps, 0, sizeof(runner->require_shader_caps));
|
||||
memset(runner->require_format_caps, 0, sizeof(runner->require_format_caps));
|
||||
runner->compile_options = 0;
|
||||
|
||||
@@ -243,6 +243,7 @@ struct shader_runner
|
||||
enum source_format shader_format[SHADER_TYPE_COUNT];
|
||||
enum shader_model minimum_shader_model;
|
||||
enum shader_model maximum_shader_model;
|
||||
uint32_t compile_model_mask;
|
||||
bool require_shader_caps[SHADER_CAP_COUNT];
|
||||
uint32_t require_format_caps[DXGI_FORMAT_COUNT];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user