tests: Implement multisampling in the Vulkan renderer.

This commit is contained in:
Elizabeth Figura
2024-06-18 23:53:49 -05:00
committed by Henri Verbeet
parent fe21318b5f
commit 737967604e
Notes: Henri Verbeet 2024-07-11 00:41:24 +02:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/924
4 changed files with 84 additions and 16 deletions

View File

@@ -939,6 +939,14 @@ static void parse_test_directive(struct shader_runner *runner, const char *line)
if (!runner->vs_source)
runner->vs_source = strdup(vs_source);
runner->sample_count = 1;
for (i = 0; i < runner->resource_count; ++i)
{
if (runner->resources[i]->desc.type == RESOURCE_TYPE_RENDER_TARGET
|| runner->resources[i]->desc.type == RESOURCE_TYPE_DEPTH_STENCIL)
runner->sample_count = max(runner->sample_count, runner->resources[i]->desc.sample_count);
}
runner->last_render_failed = !runner->ops->draw(runner, D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST, 3, 1);
}
else if (match_string(line, "draw", &line))
@@ -990,6 +998,14 @@ static void parse_test_directive(struct shader_runner *runner, const char *line)
if (line == rest)
instance_count = 1;
runner->sample_count = 1;
for (unsigned int i = 0; i < runner->resource_count; ++i)
{
if (runner->resources[i]->desc.type == RESOURCE_TYPE_RENDER_TARGET
|| runner->resources[i]->desc.type == RESOURCE_TYPE_DEPTH_STENCIL)
runner->sample_count = max(runner->sample_count, runner->resources[i]->desc.sample_count);
}
runner->last_render_failed = !runner->ops->draw(runner, topology, vertex_count, instance_count);
}
else if (match_string(line, "probe", &line))
@@ -1635,6 +1651,8 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_c
runner->minimum_shader_model = caps->minimum_shader_model;
runner->maximum_shader_model = caps->maximum_shader_model;
runner->sample_mask = ~0u;
if ((testname = strrchr(test_options.filename, '/')))
++testname;
else