diff --git a/tests/shader_runner.c b/tests/shader_runner.c index eef589a0..c80c37ee 100644 --- a/tests/shader_runner.c +++ b/tests/shader_runner.c @@ -73,12 +73,6 @@ static struct shader_test_options const char *compiler_filter; } shader_test_options = {0}; -#ifdef VKD3D_CROSSTEST -static const char HLSL_COMPILER[] = "d3dcompiler47.dll"; -#else -static const char HLSL_COMPILER[] = "vkd3d-shader"; -#endif - static const char *const model_strings[] = { [SHADER_MODEL_2_0] = "2.0", @@ -2082,29 +2076,27 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_c enum shader_type shader_type = SHADER_TYPE_CS; struct resource_params current_resource; struct sampler *current_sampler = NULL; - const char *testname, *compiler_string; enum parse_state state = STATE_NONE; char *shader_source = NULL; char line_buffer[256]; + const char *testname; FILE *f; - compiler_string = dxc_compiler ? "dxcompiler" : HLSL_COMPILER; - if (shader_test_options.executor_filter && strcmp(shader_test_options.executor_filter, caps->runner)) { trace("Skipping compiling shaders with %s and executing with %s " "because of the executor filter\n", - compiler_string, caps->runner); + caps->compiler, caps->runner); return; } if (shader_test_options.compiler_filter - && strcmp(shader_test_options.compiler_filter, compiler_string)) + && strcmp(shader_test_options.compiler_filter, caps->compiler)) { trace("Skipping compiling shaders with %s and executing with %s " "because of the executor filter\n", - compiler_string, caps->runner); + caps->compiler, caps->runner); return; } @@ -2115,13 +2107,13 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_c { trace("Skipping compiling shaders with %s and executing with %s " "because the shader model range is empty\n", - compiler_string, caps->runner); + caps->compiler, caps->runner); return; } trace("Compiling SM%s-SM%s shaders with %s and executing with %s.\n", model_strings[minimum_shader_model], model_strings[maximum_shader_model], - compiler_string, caps->runner); + caps->compiler, caps->runner); if (caps->tag_count) trace_tags(caps); trace_shader_caps(caps->shader_caps); @@ -2612,6 +2604,7 @@ static void run_compile_tests(void *dxc_compiler) struct shader_runner runner = {0}; caps.runner = "hlsl"; + caps.compiler = dxc_compiler ? "dxcompiler" : HLSL_COMPILER; caps.minimum_shader_model = SHADER_MODEL_MIN; caps.maximum_shader_model = dxc_compiler ? SHADER_MODEL_MAX : SHADER_MODEL_5_1; for (unsigned int i = 0; i < SHADER_CAP_COUNT; ++i) diff --git a/tests/shader_runner.h b/tests/shader_runner.h index aed946cc..53699593 100644 --- a/tests/shader_runner.h +++ b/tests/shader_runner.h @@ -26,6 +26,12 @@ #include "vkd3d_shader.h" #include "utils.h" +#ifdef VKD3D_CROSSTEST +static const char HLSL_COMPILER[] = "d3dcompiler47.dll"; +#else +static const char HLSL_COMPILER[] = "vkd3d-shader"; +#endif + #define RENDER_TARGET_WIDTH 640 #define RENDER_TARGET_HEIGHT 480 @@ -158,6 +164,7 @@ enum shader_cap struct shader_runner_caps { const char *runner; + const char *compiler; const char *tags[3]; size_t tag_count; enum shader_model minimum_shader_model; diff --git a/tests/shader_runner_d3d11.c b/tests/shader_runner_d3d11.c index e5d24316..fd23c32e 100644 --- a/tests/shader_runner_d3d11.c +++ b/tests/shader_runner_d3d11.c @@ -298,6 +298,7 @@ static BOOL init_test_context(struct d3d11_shader_runner *runner) } runner->caps.runner = "d3d11.dll"; + runner->caps.compiler = HLSL_COMPILER; runner->caps.minimum_shader_model = SHADER_MODEL_4_0; runner->caps.maximum_shader_model = SHADER_MODEL_5_0; diff --git a/tests/shader_runner_d3d12.c b/tests/shader_runner_d3d12.c index d70e297d..d482af53 100644 --- a/tests/shader_runner_d3d12.c +++ b/tests/shader_runner_d3d12.c @@ -985,7 +985,8 @@ static uint32_t get_format_support(ID3D12Device *device, enum DXGI_FORMAT format } static void d3d12_runner_init_caps(struct d3d12_shader_runner *runner, - enum shader_model minimum_shader_model, enum shader_model maximum_shader_model) + enum shader_model minimum_shader_model, enum shader_model maximum_shader_model, + bool using_dxcompiler) { ID3D12Device *device = runner->test_context.device; D3D12_FEATURE_DATA_D3D12_OPTIONS4 options4; @@ -1031,6 +1032,7 @@ static void d3d12_runner_init_caps(struct d3d12_shader_runner *runner, #else runner->caps.runner = "vkd3d"; #endif + runner->caps.compiler = using_dxcompiler ? "dxcompiler" : HLSL_COMPILER; runner->caps.minimum_shader_model = minimum_shader_model; runner->caps.maximum_shader_model = maximum_shader_model; runner->caps.shader_caps[SHADER_CAP_DEPTH_BOUNDS] = options2.DepthBoundsTestSupported; @@ -1098,7 +1100,7 @@ static void run_shader_tests_for_model_range(void *dxc_compiler, return; } - d3d12_runner_init_caps(&runner, minimum_shader_model, maximum_shader_model); + d3d12_runner_init_caps(&runner, minimum_shader_model, maximum_shader_model, !!dxc_compiler); runner.compute_queue = create_command_queue(device, D3D12_COMMAND_LIST_TYPE_COMPUTE, D3D12_COMMAND_QUEUE_PRIORITY_NORMAL); diff --git a/tests/shader_runner_d3d9.c b/tests/shader_runner_d3d9.c index 67280b7c..d50aee4d 100644 --- a/tests/shader_runner_d3d9.c +++ b/tests/shader_runner_d3d9.c @@ -142,6 +142,7 @@ static bool init_test_context(struct d3d9_shader_runner *runner) } runner->caps.runner = "d3d9.dll"; + runner->caps.compiler = HLSL_COMPILER; runner->caps.minimum_shader_model = SHADER_MODEL_2_0; runner->caps.maximum_shader_model = SHADER_MODEL_3_0; runner->caps.shader_caps[SHADER_CAP_CLIP_PLANES] = true; diff --git a/tests/shader_runner_gl.c b/tests/shader_runner_gl.c index 95ba35d7..6177d298 100644 --- a/tests/shader_runner_gl.c +++ b/tests/shader_runner_gl.c @@ -362,6 +362,7 @@ static bool gl_runner_init(struct gl_runner *runner, enum shading_language langu continue; } runner->caps.runner = language == SPIR_V ? "OpenGL/SPIR-V" : "OpenGL/GLSL"; + runner->caps.compiler = HLSL_COMPILER; runner->caps.minimum_shader_model = SHADER_MODEL_4_0; runner->caps.maximum_shader_model = SHADER_MODEL_5_1; runner->caps.shader_caps[SHADER_CAP_GEOMETRY_SHADER] = true; diff --git a/tests/shader_runner_metal.m b/tests/shader_runner_metal.m index 27fbcdaa..b1c53434 100644 --- a/tests/shader_runner_metal.m +++ b/tests/shader_runner_metal.m @@ -720,6 +720,7 @@ static bool metal_runner_init(struct metal_runner *runner) } runner->caps.runner = "Metal"; + runner->caps.compiler = HLSL_COMPILER; runner->caps.tags[0] = "msl"; runner->caps.tag_count = 1; runner->caps.minimum_shader_model = SHADER_MODEL_4_0; diff --git a/tests/shader_runner_vulkan.c b/tests/shader_runner_vulkan.c index c99ca4ba..440649cb 100644 --- a/tests/shader_runner_vulkan.c +++ b/tests/shader_runner_vulkan.c @@ -1739,6 +1739,7 @@ static bool init_vulkan_runner(struct vulkan_shader_runner *runner) } runner->caps.runner = "Vulkan"; + runner->caps.compiler = HLSL_COMPILER; get_physical_device_info(runner, &device_info); ret_features = &device_info.features2.features;