tests/hlsl: Attempt to deduce the data type of unspecified type texture data.

Try parsing first as integer, and if the parse stops at a decimal separator, parse as float.
This commit is contained in:
Victor Chiletto 2025-03-17 19:23:09 -03:00 committed by Henri Verbeet
parent 7b21183f45
commit cc9f4ac587
Notes: Henri Verbeet 2025-04-08 20:55:13 +02:00
Approved-by: Francisco Casas (@fcasas)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1428
7 changed files with 28 additions and 21 deletions

View File

@ -10,8 +10,8 @@ address clamp clamp clamp
[srv 0]
size (2d, 2, 2)
1 1 0 1 0 1 1 1
1 0 0 1 1 0 1 1
1.0 1.0 0.0 1.0 0.0 1.0 1.0 1.0
1.0 0.0 0.0 1.0 1.0 0.0 1.0 1.0
[vertex shader]
float4 main(out float2 t : texcoord) : sv_position

View File

@ -62,10 +62,10 @@ probe (0, 0) rgba (10.0, 8.0, 7.0, 3.0)
0 r32g32b32a32-float COLOR 2
[vb 0]
-1.0 -1.0 0 1 1 1 0 1 0 0 0 1 0 1
-1.0 1.0 0 1 1 1 0 1 0 0 0 1 0 1
1.0 -1.0 0 1 1 1 0 1 0 0 0 1 0 1
1.0 1.0 0 1 1 1 0 1 0 0 0 1 0 1
-1.0 -1.0 0.0 1.0 1.0 1.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 1.0
-1.0 1.0 0.0 1.0 1.0 1.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 1.0
1.0 -1.0 0.0 1.0 1.0 1.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 1.0
1.0 1.0 0.0 1.0 1.0 1.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 1.0
[vertex shader]
uint3 index;

View File

@ -6,8 +6,8 @@ shader model < 4.0
0 r32-float psize
[vb 0]
-0.5 0 20
0.5 0 40
-0.5 0.0 20.0
0.5 0.0 40.0
[vertex shader fail]
void main(inout float4 pos : position, out float2 size : psize)

View File

@ -7,10 +7,10 @@ shader model >= 4.0
[srv 0]
size (2d, 4, 4)
1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4
5 5 5 5 6 6 6 6 7 7 7 7 8 8 8 8
9 9 9 9 10 10 10 10 11 11 11 11 12 12 12 12
13 13 13 13 14 14 14 14 14 15 15 15 16 16 16 16
1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0 3.0 3.0 3.0 3.0 4.0 4.0 4.0 4.0
5.0 5.0 5.0 5.0 6.0 6.0 6.0 6.0 7.0 7.0 7.0 7.0 8.0 8.0 8.0 8.0
9.0 9.0 9.0 9.0 10.0 10.0 10.0 10.0 11.0 11.0 11.0 11.0 12.0 12.0 12.0 12.0
13.0 13.0 13.0 13.0 14.0 14.0 14.0 14.0 14.0 15.0 15.0 15.0 16.0 16.0 16.0 16.0
[pixel shader]

View File

@ -3,9 +3,9 @@ shader model >= 4.0
[srv 0]
size (2d, 3, 3)
0 0 0 1 1 0 0 1 2 0 0 1
0 1 0 1 1 1 0 1 2 1 0 1
0 2 0 1 1 2 0 1 2 2 0 1
0.0 0.0 0.0 1.0 1.0 0.0 0.0 1.0 2.0 0.0 0.0 1.0
0.0 1.0 0.0 1.0 1.0 1.0 0.0 1.0 2.0 1.0 0.0 1.0
0.0 2.0 0.0 1.0 1.0 2.0 0.0 1.0 2.0 2.0 0.0 1.0
[pixel shader]

View File

@ -663,6 +663,12 @@ static void parse_resource_directive(struct resource_params *resource, const cha
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)
@ -779,7 +785,7 @@ static void set_default_target(struct shader_runner *runner)
params.desc.type = RESOURCE_TYPE_RENDER_TARGET;
params.desc.dimension = RESOURCE_DIMENSION_2D;
params.desc.format = DXGI_FORMAT_R32G32B32A32_FLOAT;
params.data_type = TEXTURE_DATA_FLOAT;
params.data_type = TEXTURE_DATA_UNSPECIFIED;
params.desc.texel_size = 16;
params.desc.width = RENDER_TARGET_WIDTH;
params.desc.height = RENDER_TARGET_HEIGHT;
@ -2377,7 +2383,7 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_c
current_resource.desc.slot = index;
current_resource.desc.type = RESOURCE_TYPE_RENDER_TARGET;
current_resource.desc.format = DXGI_FORMAT_R32G32B32A32_FLOAT;
current_resource.data_type = TEXTURE_DATA_FLOAT;
current_resource.data_type = TEXTURE_DATA_UNSPECIFIED;
current_resource.desc.texel_size = 16;
current_resource.desc.level_count = 1;
}
@ -2391,7 +2397,7 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_c
current_resource.desc.type = RESOURCE_TYPE_DEPTH_STENCIL;
current_resource.desc.format = DXGI_FORMAT_D32_FLOAT;
current_resource.is_shadow = true;
current_resource.data_type = TEXTURE_DATA_FLOAT;
current_resource.data_type = TEXTURE_DATA_UNSPECIFIED;
current_resource.desc.texel_size = 4;
current_resource.desc.level_count = 1;
}
@ -2404,7 +2410,7 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_c
current_resource.desc.slot = index;
current_resource.desc.type = RESOURCE_TYPE_TEXTURE;
current_resource.desc.format = DXGI_FORMAT_R32G32B32A32_FLOAT;
current_resource.data_type = TEXTURE_DATA_FLOAT;
current_resource.data_type = TEXTURE_DATA_UNSPECIFIED;
current_resource.desc.texel_size = 16;
current_resource.desc.level_count = 1;
}
@ -2417,7 +2423,7 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_c
current_resource.desc.slot = index;
current_resource.desc.type = RESOURCE_TYPE_UAV;
current_resource.desc.format = DXGI_FORMAT_R32G32B32A32_FLOAT;
current_resource.data_type = TEXTURE_DATA_FLOAT;
current_resource.data_type = TEXTURE_DATA_UNSPECIFIED;
current_resource.desc.texel_size = 16;
current_resource.desc.level_count = 1;
}
@ -2430,7 +2436,7 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_c
current_resource.desc.slot = index;
current_resource.desc.type = RESOURCE_TYPE_VERTEX_BUFFER;
current_resource.desc.dimension = RESOURCE_DIMENSION_BUFFER;
current_resource.data_type = TEXTURE_DATA_FLOAT;
current_resource.data_type = TEXTURE_DATA_UNSPECIFIED;
}
else if (!strcmp(line, "[test]\n"))
{

View File

@ -65,6 +65,7 @@ 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,