[PATCH vkd3d v2 1/7] tests: Test casts to float.

Giovanni Mascellani gmascellani at codeweavers.com
Wed Sep 15 02:58:20 CDT 2021


Signed-off-by: Giovanni Mascellani <gmascellani at codeweavers.com>

Il 10/09/21 04:11, Zebediah Figura ha scritto:
> Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
> ---
>   Makefile.am                     |  2 ++
>   tests/cast-to-float.shader_test | 29 +++++++++++++++++++++++++++++
>   tests/shader_runner_d3d12.c     | 29 ++++++++++++++++++++++++++++-
>   3 files changed, 59 insertions(+), 1 deletion(-)
>   create mode 100644 tests/cast-to-float.shader_test
> 
> diff --git a/Makefile.am b/Makefile.am
> index 05d9f00c6..d707a26b3 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 000000000..75822e527
> --- /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 2221c0f87..d5c0380e8 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-devel mailing list