From: Zebediah Figura zfigura@codeweavers.com
--- Makefile.am | 1 + tests/bool-semantics.shader_test | 53 ++++++++++++++++++++++++++++++++ tests/shader_runner.c | 6 ++-- 3 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 tests/bool-semantics.shader_test
diff --git a/Makefile.am b/Makefile.am index 549354b4..e5bec8fd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -53,6 +53,7 @@ vkd3d_shader_tests = \ tests/array-parameters.shader_test \ tests/asuint.shader_test \ tests/bitwise.shader_test \ + tests/bool-semantics.shader_test \ tests/cast-broadcast.shader_test \ tests/cast-componentwise-compatible.shader_test \ tests/cast-componentwise-equal.shader_test \ diff --git a/tests/bool-semantics.shader_test b/tests/bool-semantics.shader_test new file mode 100644 index 00000000..0e42fdf9 --- /dev/null +++ b/tests/bool-semantics.shader_test @@ -0,0 +1,53 @@ +[require] +shader model >= 4.0 + +[input layout] +0 r32g32b32a32 uint apple +0 r32g32 int sv_position + +[vertex buffer 0] +format r32 uint +0 1 0x80000000 0xffffffff -2 -2 +0 1 0x80000000 0xffffffff -2 2 +0 1 0x80000000 0xffffffff 2 -2 +0 1 0x80000000 0xffffffff 2 2 + +[vertex shader] + +struct input +{ + bool4 apple : apple; + int4 pos : sv_position; +}; + +struct output +{ + bool4 apple : apple; + int4 fapple : apple1; + float4 pos : sv_position; +}; + +void main(in struct input i, out struct output o, uint id : SV_VertexID) +{ + o.apple = i.apple; + o.fapple = i.apple; + o.pos = i.pos; +} + +[pixel shader] + +struct input +{ + bool4 apple : apple; + int4 fapple : apple1; + float4 pos : sv_position; +}; + +float4 main(struct input i) : sv_target +{ + return i.apple + i.fapple; +} + +[test] +draw triangle strip 4 +todo probe all rgba (0.0, 2.0, 2.0, 2.0) diff --git a/tests/shader_runner.c b/tests/shader_runner.c index 8e66948e..cf1c1266 100644 --- a/tests/shader_runner.c +++ b/tests/shader_runner.c @@ -151,7 +151,9 @@ static DXGI_FORMAT parse_format(const char *line, enum texture_data_type *data_t formats[] = { {"r32g32b32a32 float", TEXTURE_DATA_FLOAT, 16, DXGI_FORMAT_R32G32B32A32_FLOAT}, + {"r32g32b32a32 uint", TEXTURE_DATA_UINT, 16, DXGI_FORMAT_R32G32B32A32_UINT}, {"r32g32 float", TEXTURE_DATA_FLOAT, 8, DXGI_FORMAT_R32G32_FLOAT}, + {"r32g32 int", TEXTURE_DATA_SINT, 8, DXGI_FORMAT_R32G32_SINT}, {"r32g32 uint", TEXTURE_DATA_UINT, 8, DXGI_FORMAT_R32G32_UINT}, {"r32 float", TEXTURE_DATA_FLOAT, 4, DXGI_FORMAT_R32_FLOAT}, {"r32 sint", TEXTURE_DATA_SINT, 4, DXGI_FORMAT_R32_SINT}, @@ -269,11 +271,11 @@ static void parse_resource_directive(struct resource_params *resource, const cha break;
case TEXTURE_DATA_SINT: - u.i = strtol(line, &rest, 10); + u.i = strtol(line, &rest, 0); break;
case TEXTURE_DATA_UINT: - u.u = strtoul(line, &rest, 10); + u.u = strtoul(line, &rest, 0); break; }