tests/shader_runner: Get rid of enum texture_data_type.

This commit is contained in:
Henri Verbeet
2025-04-08 21:10:43 +02:00
parent 7b21059ee5
commit 4e783e2d66
Notes: Henri Verbeet 2025-04-14 17:17:01 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1453
2 changed files with 19 additions and 59 deletions

View File

@@ -317,31 +317,29 @@ static const char *close_parentheses(const char *line)
return line; return line;
} }
static DXGI_FORMAT parse_format(const char *line, enum texture_data_type *data_type, unsigned int *texel_size, static DXGI_FORMAT parse_format(const char *line, unsigned int *texel_size, bool *is_shadow, const char **rest)
bool *is_shadow, const char **rest)
{ {
static const struct static const struct
{ {
const char *string; const char *string;
enum texture_data_type data_type;
unsigned int texel_size; unsigned int texel_size;
DXGI_FORMAT format; DXGI_FORMAT format;
bool is_shadow; bool is_shadow;
} }
formats[] = formats[] =
{ {
{"r32g32b32a32-float", TEXTURE_DATA_FLOAT, 16, DXGI_FORMAT_R32G32B32A32_FLOAT}, {"r32g32b32a32-float", 16, DXGI_FORMAT_R32G32B32A32_FLOAT},
{"r32g32b32a32-sint", TEXTURE_DATA_SINT, 16, DXGI_FORMAT_R32G32B32A32_SINT}, {"r32g32b32a32-sint", 16, DXGI_FORMAT_R32G32B32A32_SINT},
{"r32g32b32a32-uint", TEXTURE_DATA_UINT, 16, DXGI_FORMAT_R32G32B32A32_UINT}, {"r32g32b32a32-uint", 16, DXGI_FORMAT_R32G32B32A32_UINT},
{"r32g32-float", TEXTURE_DATA_FLOAT, 8, DXGI_FORMAT_R32G32_FLOAT}, {"r32g32-float", 8, DXGI_FORMAT_R32G32_FLOAT},
{"r32g32-sint", TEXTURE_DATA_SINT, 8, DXGI_FORMAT_R32G32_SINT}, {"r32g32-sint", 8, DXGI_FORMAT_R32G32_SINT},
{"r32g32-uint", TEXTURE_DATA_UINT, 8, DXGI_FORMAT_R32G32_UINT}, {"r32g32-uint", 8, DXGI_FORMAT_R32G32_UINT},
{"r32-float-shadow", TEXTURE_DATA_FLOAT, 4, DXGI_FORMAT_R32_FLOAT, true}, {"r32-float-shadow", 4, DXGI_FORMAT_R32_FLOAT, true},
{"r32-float", TEXTURE_DATA_FLOAT, 4, DXGI_FORMAT_R32_FLOAT}, {"r32-float", 4, DXGI_FORMAT_R32_FLOAT},
{"r32-sint", TEXTURE_DATA_SINT, 4, DXGI_FORMAT_R32_SINT}, {"r32-sint", 4, DXGI_FORMAT_R32_SINT},
{"r32-uint", TEXTURE_DATA_UINT, 4, DXGI_FORMAT_R32_UINT}, {"r32-uint", 4, DXGI_FORMAT_R32_UINT},
{"r32-typeless", TEXTURE_DATA_UINT, 4, DXGI_FORMAT_R32_TYPELESS}, {"r32-typeless", 4, DXGI_FORMAT_R32_TYPELESS},
{"unknown", TEXTURE_DATA_UINT, 0, DXGI_FORMAT_UNKNOWN}, {"unknown", 0, DXGI_FORMAT_UNKNOWN},
}; };
unsigned int i; unsigned int i;
@@ -349,8 +347,6 @@ static DXGI_FORMAT parse_format(const char *line, enum texture_data_type *data_t
{ {
if (match_string(line, formats[i].string, rest)) if (match_string(line, formats[i].string, rest))
{ {
if (data_type)
*data_type = formats[i].data_type;
if (texel_size) if (texel_size)
*texel_size = formats[i].texel_size; *texel_size = formats[i].texel_size;
if (is_shadow) if (is_shadow)
@@ -444,7 +440,7 @@ static void parse_require_directive(struct shader_runner *runner, const char *li
} }
else if (match_string(line, "format", &line)) else if (match_string(line, "format", &line))
{ {
DXGI_FORMAT format = parse_format(line, NULL, NULL, NULL, &line); DXGI_FORMAT format = parse_format(line, NULL, NULL, &line);
while (line[0] != '\0') while (line[0] != '\0')
{ {
@@ -566,8 +562,7 @@ static void parse_resource_directive(struct resource_params *resource, const cha
{ {
if (match_string(line, "format", &line)) if (match_string(line, "format", &line))
{ {
resource->desc.format = parse_format(line, &resource->data_type, resource->desc.format = parse_format(line, &resource->desc.texel_size, &resource->is_shadow, &line);
&resource->desc.texel_size, &resource->is_shadow, &line);
assert_that(!resource->explicit_format, "Resource format already specified.\n"); assert_that(!resource->explicit_format, "Resource format already specified.\n");
resource->explicit_format = true; resource->explicit_format = true;
} }
@@ -641,35 +636,15 @@ static void parse_resource_directive(struct resource_params *resource, const cha
union union
{ {
float f; float f;
int32_t i;
uint32_t u; uint32_t u;
} u; } u;
char *rest; char *rest;
u.u = 0;
for (;;) for (;;)
{ {
switch (resource->data_type) u.u = strtoul(line, &rest, 0);
{ if (rest && *rest == '.')
case TEXTURE_DATA_FLOAT: u.f = strtof(line, &rest);
u.f = strtof(line, &rest);
break;
case TEXTURE_DATA_SINT:
u.i = strtol(line, &rest, 0);
break;
case TEXTURE_DATA_UINT:
u.u = strtoul(line, &rest, 0);
break;
case TEXTURE_DATA_UNSPECIFIED:
u.u = strtoul(line, &rest, 0);
if (rest && *rest == '.')
u.f = strtof(line, &rest);
break;
}
if (rest == line) if (rest == line)
break; break;
@@ -699,7 +674,7 @@ static void parse_input_layout_directive(struct shader_runner *runner, const cha
fatal_error("Malformed input layout directive '%s'.\n", line); fatal_error("Malformed input layout directive '%s'.\n", line);
line = rest; line = rest;
element->format = parse_format(line, NULL, &element->texel_size, NULL, &line); element->format = parse_format(line, &element->texel_size, NULL, &line);
if (!(rest = strpbrk(line, " \n"))) if (!(rest = strpbrk(line, " \n")))
rest = line + strlen(line); rest = line + strlen(line);
@@ -785,7 +760,6 @@ static void set_default_target(struct shader_runner *runner)
params.desc.type = RESOURCE_TYPE_RENDER_TARGET; params.desc.type = RESOURCE_TYPE_RENDER_TARGET;
params.desc.dimension = RESOURCE_DIMENSION_2D; params.desc.dimension = RESOURCE_DIMENSION_2D;
params.desc.format = DXGI_FORMAT_R32G32B32A32_FLOAT; params.desc.format = DXGI_FORMAT_R32G32B32A32_FLOAT;
params.data_type = TEXTURE_DATA_UNSPECIFIED;
params.desc.texel_size = 16; params.desc.texel_size = 16;
params.desc.width = RENDER_TARGET_WIDTH; params.desc.width = RENDER_TARGET_WIDTH;
params.desc.height = RENDER_TARGET_HEIGHT; params.desc.height = RENDER_TARGET_HEIGHT;
@@ -2383,7 +2357,6 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_c
current_resource.desc.slot = index; current_resource.desc.slot = index;
current_resource.desc.type = RESOURCE_TYPE_RENDER_TARGET; current_resource.desc.type = RESOURCE_TYPE_RENDER_TARGET;
current_resource.desc.format = DXGI_FORMAT_R32G32B32A32_FLOAT; current_resource.desc.format = DXGI_FORMAT_R32G32B32A32_FLOAT;
current_resource.data_type = TEXTURE_DATA_UNSPECIFIED;
current_resource.desc.texel_size = 16; current_resource.desc.texel_size = 16;
current_resource.desc.level_count = 1; current_resource.desc.level_count = 1;
} }
@@ -2397,7 +2370,6 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_c
current_resource.desc.type = RESOURCE_TYPE_DEPTH_STENCIL; current_resource.desc.type = RESOURCE_TYPE_DEPTH_STENCIL;
current_resource.desc.format = DXGI_FORMAT_D32_FLOAT; current_resource.desc.format = DXGI_FORMAT_D32_FLOAT;
current_resource.is_shadow = true; current_resource.is_shadow = true;
current_resource.data_type = TEXTURE_DATA_UNSPECIFIED;
current_resource.desc.texel_size = 4; current_resource.desc.texel_size = 4;
current_resource.desc.level_count = 1; current_resource.desc.level_count = 1;
} }
@@ -2410,7 +2382,6 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_c
current_resource.desc.slot = index; current_resource.desc.slot = index;
current_resource.desc.type = RESOURCE_TYPE_TEXTURE; current_resource.desc.type = RESOURCE_TYPE_TEXTURE;
current_resource.desc.format = DXGI_FORMAT_R32G32B32A32_FLOAT; current_resource.desc.format = DXGI_FORMAT_R32G32B32A32_FLOAT;
current_resource.data_type = TEXTURE_DATA_UNSPECIFIED;
current_resource.desc.texel_size = 16; current_resource.desc.texel_size = 16;
current_resource.desc.level_count = 1; current_resource.desc.level_count = 1;
} }
@@ -2423,7 +2394,6 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_c
current_resource.desc.slot = index; current_resource.desc.slot = index;
current_resource.desc.type = RESOURCE_TYPE_UAV; current_resource.desc.type = RESOURCE_TYPE_UAV;
current_resource.desc.format = DXGI_FORMAT_R32G32B32A32_FLOAT; current_resource.desc.format = DXGI_FORMAT_R32G32B32A32_FLOAT;
current_resource.data_type = TEXTURE_DATA_UNSPECIFIED;
current_resource.desc.texel_size = 16; current_resource.desc.texel_size = 16;
current_resource.desc.level_count = 1; current_resource.desc.level_count = 1;
} }
@@ -2436,7 +2406,6 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_c
current_resource.desc.slot = index; current_resource.desc.slot = index;
current_resource.desc.type = RESOURCE_TYPE_VERTEX_BUFFER; current_resource.desc.type = RESOURCE_TYPE_VERTEX_BUFFER;
current_resource.desc.dimension = RESOURCE_DIMENSION_BUFFER; current_resource.desc.dimension = RESOURCE_DIMENSION_BUFFER;
current_resource.data_type = TEXTURE_DATA_UNSPECIFIED;
} }
else if (!strcmp(line, "[test]\n")) else if (!strcmp(line, "[test]\n"))
{ {

View File

@@ -63,14 +63,6 @@ enum shader_type
const char *shader_type_string(enum shader_type type); const char *shader_type_string(enum shader_type type);
enum texture_data_type
{
TEXTURE_DATA_UNSPECIFIED,
TEXTURE_DATA_FLOAT,
TEXTURE_DATA_SINT,
TEXTURE_DATA_UINT,
};
struct sampler struct sampler
{ {
unsigned int slot; unsigned int slot;
@@ -116,7 +108,6 @@ struct resource_params
bool is_raw; bool is_raw;
bool is_uav_counter; bool is_uav_counter;
bool explicit_format; bool explicit_format;
enum texture_data_type data_type;
unsigned int stride; unsigned int stride;
uint8_t *data; uint8_t *data;