[Piglit] [PATCH 2/2] arb_gpu_shader_fp64: Explicit conversion from double to float

Ian Romanick idr at freedesktop.org
Mon Feb 22 20:23:35 UTC 2016


On 02/20/2016 03:38 AM, Andres Gomez wrote:
> Double and float derived types also need explicit
> conversions.
> 
> Signed-off-by: Andres Gomez <agomez at igalia.com>
> ---
>  .../gen_constant_array_size_tests_fp64.py          |  2 +-
>  .../compiler/double-loop-iterator.vert             |  4 +--
>  .../compiler/implicit-conversion-bad.vert          | 30 ----------------------
>  .../compiler/implicit-conversion-double-float.vert | 20 +++++++++++++++
>  .../compiler/implicit-conversion-dvec2-vec2.vert   | 20 +++++++++++++++
>  .../compiler/implicit-conversion-dvec3-vec3.vert   | 20 +++++++++++++++
>  .../compiler/implicit-conversion-dvec4-vec4.vert   | 20 +++++++++++++++

I'd like to see "bad" in the names of these tests.  It makes it a little
more obvious which result is expected.  Either way, this series is

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

>  .../execution/check-explicit-location.c            |  2 +-
>  8 files changed, 84 insertions(+), 34 deletions(-)
>  delete mode 100644 tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-bad.vert
>  create mode 100644 tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-double-float.vert
>  create mode 100644 tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-dvec2-vec2.vert
>  create mode 100644 tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-dvec3-vec3.vert
>  create mode 100644 tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-dvec4-vec4.vert
> 
> diff --git a/generated_tests/gen_constant_array_size_tests_fp64.py b/generated_tests/gen_constant_array_size_tests_fp64.py
> index fb9d801..72407c6 100644
> --- a/generated_tests/gen_constant_array_size_tests_fp64.py
> +++ b/generated_tests/gen_constant_array_size_tests_fp64.py
> @@ -165,7 +165,7 @@ class ParserTest(object):
>              shader += '  double[{0} ? 1 : -1] array{1};\n'.format(
>                  self.make_condition(test_vector), i)
>              lengths.append('array{0}.length()'.format(i))
> -        shader += '  {0} = dvec4({1});\n'.format(
> +        shader += '  {0} = vec4({1});\n'.format(
>              self.output_var(), ' + '.join(lengths))
>          shader += '}\n'
>          return shader
> diff --git a/tests/spec/arb_gpu_shader_fp64/compiler/double-loop-iterator.vert b/tests/spec/arb_gpu_shader_fp64/compiler/double-loop-iterator.vert
> index 7756c8b..9c691f0 100644
> --- a/tests/spec/arb_gpu_shader_fp64/compiler/double-loop-iterator.vert
> +++ b/tests/spec/arb_gpu_shader_fp64/compiler/double-loop-iterator.vert
> @@ -12,11 +12,11 @@
>  void test() {
>  
>  	double k;
> -	vec4 vertex;
> +	dvec4 vertex;
>  
>  	for (k = 0.0lf; k < 1.0lf; k += 0.1lf) {
>  		vertex.x += k;
>  	}
>  
> -	gl_Position = vertex;
> +	gl_Position = vec4(vertex);
>  }
> diff --git a/tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-bad.vert b/tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-bad.vert
> deleted file mode 100644
> index 95b85c8..0000000
> --- a/tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-bad.vert
> +++ /dev/null
> @@ -1,30 +0,0 @@
> -// [config]
> -// expect_result: fail
> -// glsl_version: 1.50
> -// require_extensions: GL_ARB_gpu_shader_fp64
> -// [end config]
> -//
> -// Test double -> float implicit conversion doesn't happen
> -// this tests a bug in mesa
> -
> -#version 150
> -#extension GL_ARB_gpu_shader_fp64 : enable
> -
> -float _float = 0.0f;
> -vec2 _vec2 = vec2(0.0f);
> -vec3 _vec3 = vec3(0.0f);
> -vec4 _vec4 = vec4(0.0f);
> -
> -double _double = 0.0lf;
> -dvec2 _dvec2 = dvec2(0.0lf);
> -dvec3 _dvec3 = dvec3(0.0lf);
> -dvec4 _dvec4 = dvec4(0.0lf);
> -
> -void test() {
> -
> -	/* int can be converted to double (and for vectors of same) */
> -	_float = _double;
> -	_vec2 = _dvec2;
> -	_vec3 = _dvec3;
> -	_vec4 = _dvec4;
> -}
> diff --git a/tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-double-float.vert b/tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-double-float.vert
> new file mode 100644
> index 0000000..3e2b15a
> --- /dev/null
> +++ b/tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-double-float.vert
> @@ -0,0 +1,20 @@
> +// [config]
> +// expect_result: fail
> +// glsl_version: 1.50
> +// require_extensions: GL_ARB_gpu_shader_fp64
> +// [end config]
> +//
> +// Test double -> float implicit conversion doesn't happen
> +
> +#version 150
> +#extension GL_ARB_gpu_shader_fp64 : enable
> +
> +float _float = 0.0f;
> +
> +double _double = 0.0lf;
> +
> +void test() {
> +
> +    /* double cannot be converted to float (and for vectors of same) */
> +    _float = _double;
> +}
> diff --git a/tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-dvec2-vec2.vert b/tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-dvec2-vec2.vert
> new file mode 100644
> index 0000000..225636d
> --- /dev/null
> +++ b/tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-dvec2-vec2.vert
> @@ -0,0 +1,20 @@
> +// [config]
> +// expect_result: fail
> +// glsl_version: 1.50
> +// require_extensions: GL_ARB_gpu_shader_fp64
> +// [end config]
> +//
> +// Test double -> float implicit conversion doesn't happen
> +
> +#version 150
> +#extension GL_ARB_gpu_shader_fp64 : enable
> +
> +vec2 _vec2 = vec2(0.0f);
> +
> +dvec2 _dvec2 = dvec2(0.0lf);
> +
> +void test() {
> +
> +    /* double cannot be converted to float (and for vectors of same) */
> +    _vec2 = _dvec2;
> +}
> diff --git a/tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-dvec3-vec3.vert b/tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-dvec3-vec3.vert
> new file mode 100644
> index 0000000..cf8583e
> --- /dev/null
> +++ b/tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-dvec3-vec3.vert
> @@ -0,0 +1,20 @@
> +// [config]
> +// expect_result: fail
> +// glsl_version: 1.50
> +// require_extensions: GL_ARB_gpu_shader_fp64
> +// [end config]
> +//
> +// Test double -> float implicit conversion doesn't happen
> +
> +#version 150
> +#extension GL_ARB_gpu_shader_fp64 : enable
> +
> +vec3 _vec3 = vec3(0.0f);
> +
> +dvec3 _dvec3 = dvec3(0.0lf);
> +
> +void test() {
> +
> +    /* double cannot be converted to float (and for vectors of same) */
> +    _vec3 = _dvec3;
> +}
> diff --git a/tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-dvec4-vec4.vert b/tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-dvec4-vec4.vert
> new file mode 100644
> index 0000000..dd394e5
> --- /dev/null
> +++ b/tests/spec/arb_gpu_shader_fp64/compiler/implicit-conversion-dvec4-vec4.vert
> @@ -0,0 +1,20 @@
> +// [config]
> +// expect_result: fail
> +// glsl_version: 1.50
> +// require_extensions: GL_ARB_gpu_shader_fp64
> +// [end config]
> +//
> +// Test double -> float implicit conversion doesn't happen
> +
> +#version 150
> +#extension GL_ARB_gpu_shader_fp64 : enable
> +
> +vec4 _vec4 = vec4(0.0f);
> +
> +dvec4 _dvec4 = dvec4(0.0lf);
> +
> +void test() {
> +
> +    /* double cannot be converted to float (and for vectors of same) */
> +    _vec4 = _dvec4;
> +}
> diff --git a/tests/spec/arb_vertex_attrib_64bit/execution/check-explicit-location.c b/tests/spec/arb_vertex_attrib_64bit/execution/check-explicit-location.c
> index 599ac8a..509f60b 100644
> --- a/tests/spec/arb_vertex_attrib_64bit/execution/check-explicit-location.c
> +++ b/tests/spec/arb_vertex_attrib_64bit/execution/check-explicit-location.c
> @@ -50,7 +50,7 @@ const char *vs_text =
>  	"flat out dvec4 fscolor;\n"
>  	"void main()\n"
>  	"{\n"
> -	"gl_Position = vertex;\n"
> +	"gl_Position = vec4(vertex);\n"
>  	"fscolor = vcolor;\n"
>  	"}\n";
>  
> 



More information about the Piglit mailing list