mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
tests: Add a basic shader test for compute shaders.
This commit is contained in:
committed by
Alexandre Julliard
parent
6f1f14d97a
commit
75494a4ae6
Notes:
Alexandre Julliard
2022-10-19 22:07:47 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/30
@@ -80,6 +80,7 @@ enum parse_state
|
||||
STATE_REQUIRE,
|
||||
STATE_RESOURCE,
|
||||
STATE_SAMPLER,
|
||||
STATE_SHADER_COMPUTE,
|
||||
STATE_SHADER_INVALID_PIXEL,
|
||||
STATE_SHADER_INVALID_PIXEL_TODO,
|
||||
STATE_SHADER_PIXEL,
|
||||
@@ -371,13 +372,24 @@ static void set_uniforms(struct shader_runner *runner, size_t offset, size_t cou
|
||||
static void parse_test_directive(struct shader_runner *runner, const char *line)
|
||||
{
|
||||
char *rest;
|
||||
int ret;
|
||||
|
||||
runner->is_todo = false;
|
||||
|
||||
if (match_string(line, "todo", &line))
|
||||
runner->is_todo = true;
|
||||
|
||||
if (match_string(line, "draw quad", &line))
|
||||
if (match_string(line, "dispatch", &line))
|
||||
{
|
||||
unsigned int x, y, z;
|
||||
|
||||
ret = sscanf(line, "%u %u %u", &x, &y, &z);
|
||||
if (ret < 3)
|
||||
fatal_error("Malformed dispatch arguments '%s'.\n", line);
|
||||
|
||||
runner->last_render_failed = !runner->ops->dispatch(runner, x, y, z);
|
||||
}
|
||||
else if (match_string(line, "draw quad", &line))
|
||||
{
|
||||
struct resource_params params;
|
||||
struct input_element *element;
|
||||
@@ -471,8 +483,8 @@ static void parse_test_directive(struct shader_runner *runner, const char *line)
|
||||
unsigned int left, top, right, bottom, ulps, slot;
|
||||
struct resource_readback *rb;
|
||||
struct resource *resource;
|
||||
int ret, len;
|
||||
RECT rect;
|
||||
int len;
|
||||
|
||||
if (runner->last_render_failed)
|
||||
return;
|
||||
@@ -709,6 +721,14 @@ void run_shader_tests(struct shader_runner *runner, int argc, char **argv, const
|
||||
free(current_resource.data);
|
||||
break;
|
||||
|
||||
case STATE_SHADER_COMPUTE:
|
||||
free(runner->cs_source);
|
||||
runner->cs_source = shader_source;
|
||||
shader_source = NULL;
|
||||
shader_source_len = 0;
|
||||
shader_source_size = 0;
|
||||
break;
|
||||
|
||||
case STATE_SHADER_PIXEL:
|
||||
free(runner->ps_source);
|
||||
runner->ps_source = shader_source;
|
||||
@@ -816,7 +836,11 @@ void run_shader_tests(struct shader_runner *runner, int argc, char **argv, const
|
||||
{
|
||||
unsigned int index;
|
||||
|
||||
if (!strcmp(line, "[require]\n"))
|
||||
if (!strcmp(line, "[compute shader]\n"))
|
||||
{
|
||||
state = STATE_SHADER_COMPUTE;
|
||||
}
|
||||
else if (!strcmp(line, "[require]\n"))
|
||||
{
|
||||
state = STATE_REQUIRE;
|
||||
}
|
||||
@@ -937,6 +961,7 @@ void run_shader_tests(struct shader_runner *runner, int argc, char **argv, const
|
||||
|
||||
case STATE_PREPROC:
|
||||
case STATE_PREPROC_INVALID:
|
||||
case STATE_SHADER_COMPUTE:
|
||||
case STATE_SHADER_INVALID_PIXEL:
|
||||
case STATE_SHADER_INVALID_PIXEL_TODO:
|
||||
case STATE_SHADER_PIXEL:
|
||||
|
Reference in New Issue
Block a user