mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
tests: Import invalid HLSL shader tests from Wine.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
57a8a90856
commit
ce4c7a1634
@ -53,6 +53,7 @@ vkd3d_shader_tests = \
|
||||
tests/conditional.shader_test \
|
||||
tests/hlsl-array-dimension.shader_test \
|
||||
tests/hlsl-comma.shader_test \
|
||||
tests/hlsl-invalid.shader_test \
|
||||
tests/hlsl-majority-pragma.shader_test \
|
||||
tests/hlsl-majority-typedef.shader_test \
|
||||
tests/hlsl-return-implicit-conversion.shader_test \
|
||||
@ -194,6 +195,7 @@ XFAIL_TESTS = \
|
||||
tests/conditional.shader_test \
|
||||
tests/hlsl-array-dimension.shader_test \
|
||||
tests/hlsl-comma.shader_test \
|
||||
tests/hlsl-invalid.shader_test \
|
||||
tests/hlsl-majority-pragma.shader_test \
|
||||
tests/hlsl-majority-typedef.shader_test \
|
||||
tests/hlsl-return-implicit-conversion.shader_test \
|
||||
|
117
tests/hlsl-invalid.shader_test
Normal file
117
tests/hlsl-invalid.shader_test
Normal file
@ -0,0 +1,117 @@
|
||||
[pixel shader fail]
|
||||
float4 main() : sv_target
|
||||
{
|
||||
return y;
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
float4 main() : sv_target
|
||||
{
|
||||
float4 x = float4(0, 0, 0, 0);
|
||||
x.xzzx = float4(1, 2, 3, 4);
|
||||
return x;
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
float4 main(float2 pos : TEXCOORD0) : sv_target
|
||||
{
|
||||
float4 x = pos;
|
||||
return x;
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
float4 563r(float2 45s : TEXCOORD0) : sv_target
|
||||
{
|
||||
float4 x = 45s;
|
||||
return float4(x.x, x.y, 0, 0);
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
float4 main() : sv_target
|
||||
{
|
||||
struct { int b,c; } x = {0};
|
||||
return x;
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
float4 main() : sv_target
|
||||
{
|
||||
struct {} x = {};
|
||||
return x;
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
float4 main(float2 pos : TEXCOORD0) : sv_target
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
void main(float2 pos : TEXCOORD0)
|
||||
{
|
||||
return pos;
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
float4 main(float2 pos : TEXCOORD0) : sv_target
|
||||
{
|
||||
return pos;
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
float4 main() : sv_target
|
||||
{
|
||||
float a[0];
|
||||
return 0;
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
float4 main() : sv_target
|
||||
{
|
||||
float a[65537];
|
||||
return 0;
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
float4 main() : sv_target
|
||||
{
|
||||
int x;
|
||||
float a[(x = 2)];
|
||||
return 0;
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
uniform float4 main() : sv_target
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
typedef row_major float4x4 matrix_t;
|
||||
typedef column_major matrix_t matrix2_t;
|
||||
|
||||
float4 main() : sv_target
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
float4 main()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
float4 main(out float4 o : sv_target)
|
||||
{
|
||||
o = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
[pixel shader fail]
|
||||
struct {float4 a;};
|
||||
|
||||
float4 main() : sv_target
|
||||
{
|
||||
return 0;
|
||||
}
|
@ -102,6 +102,7 @@ static ID3D10Blob *compile_shader(const char *source, const char *target)
|
||||
enum parse_state
|
||||
{
|
||||
STATE_NONE,
|
||||
STATE_SHADER_INVALID_PIXEL,
|
||||
STATE_SHADER_PIXEL,
|
||||
STATE_TEST,
|
||||
};
|
||||
@ -269,10 +270,10 @@ START_TEST(shader_runner_d3d12)
|
||||
};
|
||||
size_t shader_source_size = 0, shader_source_len = 0;
|
||||
enum parse_state state = STATE_NONE;
|
||||
unsigned int i, line_number = 0;
|
||||
struct shader_context context;
|
||||
const char *filename = NULL;
|
||||
char *shader_source = NULL;
|
||||
unsigned int i;
|
||||
char line[256];
|
||||
FILE *f;
|
||||
|
||||
@ -304,12 +305,13 @@ START_TEST(shader_runner_d3d12)
|
||||
memset(&context, 0, sizeof(context));
|
||||
init_test_context(&context.c, &desc);
|
||||
|
||||
while (fgets(line, sizeof(line), f))
|
||||
for (;;)
|
||||
{
|
||||
if (line[0] == '\n')
|
||||
continue;
|
||||
char *ret = fgets(line, sizeof(line), f);
|
||||
|
||||
if (line[0] == '[')
|
||||
++line_number;
|
||||
|
||||
if (!ret || line[0] == '[')
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
@ -322,14 +324,43 @@ START_TEST(shader_runner_d3d12)
|
||||
return;
|
||||
shader_source_len = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case STATE_SHADER_INVALID_PIXEL:
|
||||
{
|
||||
ID3D10Blob *blob = NULL, *errors = NULL;
|
||||
HRESULT hr;
|
||||
|
||||
hr = D3DCompile(shader_source, strlen(shader_source), NULL,
|
||||
NULL, NULL, "main", "ps_4_0", 0, 0, &blob, &errors);
|
||||
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
|
||||
ok(!blob, "Expected no compiled shader blob.\n");
|
||||
ok(!!errors, "Expected non-NULL error blob.\n");
|
||||
|
||||
if (vkd3d_test_state.debug_level)
|
||||
trace("%s\n", (char *)ID3D10Blob_GetBufferPointer(errors));
|
||||
ID3D10Blob_Release(errors);
|
||||
|
||||
shader_source_len = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!ret)
|
||||
break;
|
||||
|
||||
if (line[0] == '[')
|
||||
{
|
||||
if (!strcmp(line, "[pixel shader]\n"))
|
||||
state = STATE_SHADER_PIXEL;
|
||||
else if (!strcmp(line, "[pixel shader fail]\n"))
|
||||
state = STATE_SHADER_INVALID_PIXEL;
|
||||
else if (!strcmp(line, "[test]\n"))
|
||||
state = STATE_TEST;
|
||||
|
||||
vkd3d_test_set_context("Section %.*s, line %u", strlen(line) - 1, line, line_number);
|
||||
}
|
||||
else
|
||||
else if (line[0] != '\n')
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
@ -338,6 +369,7 @@ START_TEST(shader_runner_d3d12)
|
||||
fprintf(stderr, "Ignoring line '%s' in %s.\n", line, argv[1]);
|
||||
break;
|
||||
|
||||
case STATE_SHADER_INVALID_PIXEL:
|
||||
case STATE_SHADER_PIXEL:
|
||||
{
|
||||
size_t len = strlen(line);
|
||||
@ -356,7 +388,8 @@ START_TEST(shader_runner_d3d12)
|
||||
}
|
||||
}
|
||||
|
||||
ID3D10Blob_Release(context.ps_code);
|
||||
if (context.ps_code)
|
||||
ID3D10Blob_Release(context.ps_code);
|
||||
destroy_test_context(&context.c);
|
||||
|
||||
fclose(f);
|
||||
|
Loading…
x
Reference in New Issue
Block a user