tests: Store the compiler string in the shader runner capabilities.

Just like the executor.
This commit is contained in:
Giovanni Mascellani 2025-03-06 22:00:57 +01:00 committed by Henri Verbeet
parent a4f58be00c
commit 0b273ea88c
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 23 additions and 16 deletions

View File

@ -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)

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;