Zebediah Figura : tests: Test casts to float.
Alexandre Julliard
julliard at winehq.org
Wed Sep 15 16:20:12 CDT 2021
Module: vkd3d
Branch: master
Commit: 9d1f9746b78f8307718bc1ae7050f38542f73b62
URL: https://source.winehq.org/git/vkd3d.git/?a=commit;h=9d1f9746b78f8307718bc1ae7050f38542f73b62
Author: Zebediah Figura <zfigura at codeweavers.com>
Date: Thu Sep 9 21:11:32 2021 -0500
tests: Test casts to float.
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
Makefile.am | 2 ++
tests/cast-to-float.shader_test | 29 +++++++++++++++++++++++++++++
tests/shader_runner_d3d12.c | 29 ++++++++++++++++++++++++++++-
3 files changed, 59 insertions(+), 1 deletion(-)
diff --git a/Makefile.am b/Makefile.am
index 05d9f00..d707a26 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -54,6 +54,7 @@ vkd3d_shader_runners = \
tests/shader_runner_d3d12
vkd3d_shader_tests = \
+ tests/cast-to-float.shader_test \
tests/conditional.shader_test \
tests/hlsl-array-dimension.shader_test \
tests/hlsl-bool-cast.shader_test \
@@ -266,6 +267,7 @@ tests_vkd3d_api_LDADD = libvkd3d.la @VULKAN_LIBS@
tests_vkd3d_shader_api_LDADD = libvkd3d-shader.la
SHADER_TEST_LOG_COMPILER = tests/shader_runner_d3d12
XFAIL_TESTS = \
+ tests/cast-to-float.shader_test \
tests/conditional.shader_test \
tests/hlsl-array-dimension.shader_test \
tests/hlsl-bool-cast.shader_test \
diff --git a/tests/cast-to-float.shader_test b/tests/cast-to-float.shader_test
new file mode 100644
index 0000000..75822e5
--- /dev/null
+++ b/tests/cast-to-float.shader_test
@@ -0,0 +1,29 @@
+[pixel shader]
+
+float4 main(uniform int i, uniform uint u, uniform bool b, uniform half h) : sv_target
+{
+ return float4(((float)i) + 1.5, ((float)u) - 2.5, ((float)b) / 2, h);
+}
+
+[test]
+uniform 0 int -1
+uniform 1 uint 3
+uniform 2 int -2
+uniform 3 float 0.5
+draw quad
+probe all rgba (0.5, 0.5, 0.5, 0.5)
+
+[pixel shader]
+
+float4 main() : sv_target
+{
+ int i = -1;
+ uint u = 3;
+ bool b = true;
+ half h = 0.5;
+ return float4(((float)i) + 1.5, ((float)u) - 2.5, ((float)b) / 2, h);
+}
+
+[test]
+draw quad
+probe all rgba (0.5, 0.5, 0.5, 0.5)
diff --git a/tests/shader_runner_d3d12.c b/tests/shader_runner_d3d12.c
index 2221c0f..d5c0380 100644
--- a/tests/shader_runner_d3d12.c
+++ b/tests/shader_runner_d3d12.c
@@ -242,11 +242,38 @@ static void parse_test_directive(struct shader_context *context, const char *lin
}
memcpy(context->uniforms + offset, &v, sizeof(v));
}
+ else if (match_string(line, "float", &line))
+ {
+ float f;
+
+ if (sscanf(line, "%f", &f) < 1)
+ goto err;
+ if (offset + 1 > context->uniform_count)
+ {
+ context->uniform_count = offset + 1;
+ context->uniforms = realloc(context->uniforms, context->uniform_count * sizeof(*context->uniforms));
+ }
+ memcpy(context->uniforms + offset, &f, sizeof(f));
+ }
+ else if (match_string(line, "int", &line))
+ {
+ int i;
+
+ if (sscanf(line, "%i", &i) < 1)
+ goto err;
+ if (offset + 1 > context->uniform_count)
+ {
+ context->uniform_count = offset + 1;
+ context->uniforms = realloc(context->uniforms, context->uniform_count * sizeof(*context->uniforms));
+ }
+ memcpy(context->uniforms + offset, &i, sizeof(i));
+ }
else if (match_string(line, "uint", &line))
{
unsigned int u;
- sscanf(line, "%u", &u);
+ if (sscanf(line, "%u", &u) < 1)
+ goto err;
if (offset + 1 > context->uniform_count)
{
context->uniform_count = offset + 1;
More information about the wine-cvs
mailing list