mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
tests: Store the compiler string in the shader runner capabilities.
Just like the executor.
This commit is contained in:
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
@ -73,12 +73,6 @@ static struct shader_test_options
|
|||||||
const char *compiler_filter;
|
const char *compiler_filter;
|
||||||
} shader_test_options = {0};
|
} 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[] =
|
static const char *const model_strings[] =
|
||||||
{
|
{
|
||||||
[SHADER_MODEL_2_0] = "2.0",
|
[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;
|
enum shader_type shader_type = SHADER_TYPE_CS;
|
||||||
struct resource_params current_resource;
|
struct resource_params current_resource;
|
||||||
struct sampler *current_sampler = NULL;
|
struct sampler *current_sampler = NULL;
|
||||||
const char *testname, *compiler_string;
|
|
||||||
enum parse_state state = STATE_NONE;
|
enum parse_state state = STATE_NONE;
|
||||||
char *shader_source = NULL;
|
char *shader_source = NULL;
|
||||||
char line_buffer[256];
|
char line_buffer[256];
|
||||||
|
const char *testname;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
|
|
||||||
compiler_string = dxc_compiler ? "dxcompiler" : HLSL_COMPILER;
|
|
||||||
|
|
||||||
if (shader_test_options.executor_filter
|
if (shader_test_options.executor_filter
|
||||||
&& strcmp(shader_test_options.executor_filter, caps->runner))
|
&& strcmp(shader_test_options.executor_filter, caps->runner))
|
||||||
{
|
{
|
||||||
trace("Skipping compiling shaders with %s and executing with %s "
|
trace("Skipping compiling shaders with %s and executing with %s "
|
||||||
"because of the executor filter\n",
|
"because of the executor filter\n",
|
||||||
compiler_string, caps->runner);
|
caps->compiler, caps->runner);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (shader_test_options.compiler_filter
|
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 "
|
trace("Skipping compiling shaders with %s and executing with %s "
|
||||||
"because of the executor filter\n",
|
"because of the executor filter\n",
|
||||||
compiler_string, caps->runner);
|
caps->compiler, caps->runner);
|
||||||
return;
|
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 "
|
trace("Skipping compiling shaders with %s and executing with %s "
|
||||||
"because the shader model range is empty\n",
|
"because the shader model range is empty\n",
|
||||||
compiler_string, caps->runner);
|
caps->compiler, caps->runner);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
trace("Compiling SM%s-SM%s shaders with %s and executing with %s.\n",
|
trace("Compiling SM%s-SM%s shaders with %s and executing with %s.\n",
|
||||||
model_strings[minimum_shader_model], model_strings[maximum_shader_model],
|
model_strings[minimum_shader_model], model_strings[maximum_shader_model],
|
||||||
compiler_string, caps->runner);
|
caps->compiler, caps->runner);
|
||||||
if (caps->tag_count)
|
if (caps->tag_count)
|
||||||
trace_tags(caps);
|
trace_tags(caps);
|
||||||
trace_shader_caps(caps->shader_caps);
|
trace_shader_caps(caps->shader_caps);
|
||||||
@ -2612,6 +2604,7 @@ static void run_compile_tests(void *dxc_compiler)
|
|||||||
struct shader_runner runner = {0};
|
struct shader_runner runner = {0};
|
||||||
|
|
||||||
caps.runner = "hlsl";
|
caps.runner = "hlsl";
|
||||||
|
caps.compiler = dxc_compiler ? "dxcompiler" : HLSL_COMPILER;
|
||||||
caps.minimum_shader_model = SHADER_MODEL_MIN;
|
caps.minimum_shader_model = SHADER_MODEL_MIN;
|
||||||
caps.maximum_shader_model = dxc_compiler ? SHADER_MODEL_MAX : SHADER_MODEL_5_1;
|
caps.maximum_shader_model = dxc_compiler ? SHADER_MODEL_MAX : SHADER_MODEL_5_1;
|
||||||
for (unsigned int i = 0; i < SHADER_CAP_COUNT; ++i)
|
for (unsigned int i = 0; i < SHADER_CAP_COUNT; ++i)
|
||||||
|
@ -26,6 +26,12 @@
|
|||||||
#include "vkd3d_shader.h"
|
#include "vkd3d_shader.h"
|
||||||
#include "utils.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_WIDTH 640
|
||||||
#define RENDER_TARGET_HEIGHT 480
|
#define RENDER_TARGET_HEIGHT 480
|
||||||
|
|
||||||
@ -158,6 +164,7 @@ enum shader_cap
|
|||||||
struct shader_runner_caps
|
struct shader_runner_caps
|
||||||
{
|
{
|
||||||
const char *runner;
|
const char *runner;
|
||||||
|
const char *compiler;
|
||||||
const char *tags[3];
|
const char *tags[3];
|
||||||
size_t tag_count;
|
size_t tag_count;
|
||||||
enum shader_model minimum_shader_model;
|
enum shader_model minimum_shader_model;
|
||||||
|
@ -298,6 +298,7 @@ static BOOL init_test_context(struct d3d11_shader_runner *runner)
|
|||||||
}
|
}
|
||||||
|
|
||||||
runner->caps.runner = "d3d11.dll";
|
runner->caps.runner = "d3d11.dll";
|
||||||
|
runner->caps.compiler = HLSL_COMPILER;
|
||||||
runner->caps.minimum_shader_model = SHADER_MODEL_4_0;
|
runner->caps.minimum_shader_model = SHADER_MODEL_4_0;
|
||||||
runner->caps.maximum_shader_model = SHADER_MODEL_5_0;
|
runner->caps.maximum_shader_model = SHADER_MODEL_5_0;
|
||||||
|
|
||||||
|
@ -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,
|
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;
|
ID3D12Device *device = runner->test_context.device;
|
||||||
D3D12_FEATURE_DATA_D3D12_OPTIONS4 options4;
|
D3D12_FEATURE_DATA_D3D12_OPTIONS4 options4;
|
||||||
@ -1031,6 +1032,7 @@ static void d3d12_runner_init_caps(struct d3d12_shader_runner *runner,
|
|||||||
#else
|
#else
|
||||||
runner->caps.runner = "vkd3d";
|
runner->caps.runner = "vkd3d";
|
||||||
#endif
|
#endif
|
||||||
|
runner->caps.compiler = using_dxcompiler ? "dxcompiler" : HLSL_COMPILER;
|
||||||
runner->caps.minimum_shader_model = minimum_shader_model;
|
runner->caps.minimum_shader_model = minimum_shader_model;
|
||||||
runner->caps.maximum_shader_model = maximum_shader_model;
|
runner->caps.maximum_shader_model = maximum_shader_model;
|
||||||
runner->caps.shader_caps[SHADER_CAP_DEPTH_BOUNDS] = options2.DepthBoundsTestSupported;
|
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;
|
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,
|
runner.compute_queue = create_command_queue(device,
|
||||||
D3D12_COMMAND_LIST_TYPE_COMPUTE, D3D12_COMMAND_QUEUE_PRIORITY_NORMAL);
|
D3D12_COMMAND_LIST_TYPE_COMPUTE, D3D12_COMMAND_QUEUE_PRIORITY_NORMAL);
|
||||||
|
@ -142,6 +142,7 @@ static bool init_test_context(struct d3d9_shader_runner *runner)
|
|||||||
}
|
}
|
||||||
|
|
||||||
runner->caps.runner = "d3d9.dll";
|
runner->caps.runner = "d3d9.dll";
|
||||||
|
runner->caps.compiler = HLSL_COMPILER;
|
||||||
runner->caps.minimum_shader_model = SHADER_MODEL_2_0;
|
runner->caps.minimum_shader_model = SHADER_MODEL_2_0;
|
||||||
runner->caps.maximum_shader_model = SHADER_MODEL_3_0;
|
runner->caps.maximum_shader_model = SHADER_MODEL_3_0;
|
||||||
runner->caps.shader_caps[SHADER_CAP_CLIP_PLANES] = true;
|
runner->caps.shader_caps[SHADER_CAP_CLIP_PLANES] = true;
|
||||||
|
@ -362,6 +362,7 @@ static bool gl_runner_init(struct gl_runner *runner, enum shading_language langu
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
runner->caps.runner = language == SPIR_V ? "OpenGL/SPIR-V" : "OpenGL/GLSL";
|
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.minimum_shader_model = SHADER_MODEL_4_0;
|
||||||
runner->caps.maximum_shader_model = SHADER_MODEL_5_1;
|
runner->caps.maximum_shader_model = SHADER_MODEL_5_1;
|
||||||
runner->caps.shader_caps[SHADER_CAP_GEOMETRY_SHADER] = true;
|
runner->caps.shader_caps[SHADER_CAP_GEOMETRY_SHADER] = true;
|
||||||
|
@ -720,6 +720,7 @@ static bool metal_runner_init(struct metal_runner *runner)
|
|||||||
}
|
}
|
||||||
|
|
||||||
runner->caps.runner = "Metal";
|
runner->caps.runner = "Metal";
|
||||||
|
runner->caps.compiler = HLSL_COMPILER;
|
||||||
runner->caps.tags[0] = "msl";
|
runner->caps.tags[0] = "msl";
|
||||||
runner->caps.tag_count = 1;
|
runner->caps.tag_count = 1;
|
||||||
runner->caps.minimum_shader_model = SHADER_MODEL_4_0;
|
runner->caps.minimum_shader_model = SHADER_MODEL_4_0;
|
||||||
|
@ -1739,6 +1739,7 @@ static bool init_vulkan_runner(struct vulkan_shader_runner *runner)
|
|||||||
}
|
}
|
||||||
|
|
||||||
runner->caps.runner = "Vulkan";
|
runner->caps.runner = "Vulkan";
|
||||||
|
runner->caps.compiler = HLSL_COMPILER;
|
||||||
get_physical_device_info(runner, &device_info);
|
get_physical_device_info(runner, &device_info);
|
||||||
ret_features = &device_info.features2.features;
|
ret_features = &device_info.features2.features;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user