tests/shader_runner: Avoid creating devices for backends that won't execute.

My main motivation to this is avoiding generating a lot of useless
log lines from other executors when I'm interested in just one of
them, but I can imagine this also somewhat improving efficiency.
This commit is contained in:
Giovanni Mascellani
2025-03-13 22:07:10 +01:00
committed by Henri Verbeet
parent 0b273ea88c
commit fc4316f664
Notes: Henri Verbeet 2025-03-17 15:28:49 +01:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1416
8 changed files with 90 additions and 36 deletions

View File

@@ -1856,20 +1856,31 @@ out_destroy_context:
void run_shader_tests_vulkan(void)
{
struct vulkan_shader_runner runner = {0};
bool skip_sm2 = test_skipping_execution("Vulkan", HLSL_COMPILER, SHADER_MODEL_2_0, SHADER_MODEL_3_0);
bool skip_sm4 = test_skipping_execution("Vulkan", HLSL_COMPILER, SHADER_MODEL_4_0, SHADER_MODEL_5_1);
if (skip_sm2 && skip_sm4)
return;
if (!init_vulkan_runner(&runner))
return;
runner.caps.minimum_shader_model = SHADER_MODEL_2_0;
runner.caps.maximum_shader_model = SHADER_MODEL_3_0;
run_shader_tests(&runner.r, &runner.caps, &vulkan_runner_ops, NULL);
if (!skip_sm2)
{
runner.caps.minimum_shader_model = SHADER_MODEL_2_0;
runner.caps.maximum_shader_model = SHADER_MODEL_3_0;
run_shader_tests(&runner.r, &runner.caps, &vulkan_runner_ops, NULL);
}
/* Fog requires remapping, which is only correct for sm1. */
runner.caps.shader_caps[SHADER_CAP_FOG] = false;
if (!skip_sm4)
{
/* Fog requires remapping, which is only correct for sm1. */
runner.caps.shader_caps[SHADER_CAP_FOG] = false;
runner.caps.minimum_shader_model = SHADER_MODEL_4_0;
runner.caps.maximum_shader_model = SHADER_MODEL_5_1;
run_shader_tests(&runner.r, &runner.caps, &vulkan_runner_ops, NULL);
runner.caps.minimum_shader_model = SHADER_MODEL_4_0;
runner.caps.maximum_shader_model = SHADER_MODEL_5_1;
run_shader_tests(&runner.r, &runner.caps, &vulkan_runner_ops, NULL);
}
vulkan_test_context_destroy(&runner.context);
}