[Mesa-dev] [PATCH] mesa/uniform_query: add IROUNDD and use for doubles->ints (v2)

Ilia Mirkin imirkin at alum.mit.edu
Sun Jan 10 17:15:01 PST 2016


Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>

On Sun, Jan 10, 2016 at 7:57 PM, Dave Airlie <airlied at gmail.com> wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> For the case where we convert a double to an int, we should
> round the same as we do for floats.
>
> This fixes GL41-CTS.gpu_shader_fp64.state_query
>
> v2: add IROUNDD (Ilia)
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
>  src/mesa/main/imports.h         | 7 +++++++
>  src/mesa/main/uniform_query.cpp | 2 +-
>  2 files changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h
> index 042147f..ad7af5c 100644
> --- a/src/mesa/main/imports.h
> +++ b/src/mesa/main/imports.h
> @@ -151,6 +151,13 @@ static inline int IROUND(float f)
>     return (int) ((f >= 0.0F) ? (f + 0.5F) : (f - 0.5F));
>  }
>
> +/**
> + * Convert double to int by rounding to nearest integer, away from zero.
> + */
> +static inline int IROUNDD(double d)
> +{
> +   return (int) ((d >= 0.0) ? (d + 0.5) : (d - 0.5));
> +}
>
>  /**
>   * Convert float to int64 by rounding to nearest integer.
> diff --git a/src/mesa/main/uniform_query.cpp b/src/mesa/main/uniform_query.cpp
> index b2ac65f..766a465 100644
> --- a/src/mesa/main/uniform_query.cpp
> +++ b/src/mesa/main/uniform_query.cpp
> @@ -437,7 +437,7 @@ _mesa_get_uniform(struct gl_context *ctx, GLuint program, GLint location,
>                   dst[didx].i = src[sidx].i ? 1 : 0;
>                   break;
>                case GLSL_TYPE_DOUBLE:
> -                 dst[didx].i = *(double *)&src[sidx].f;
> +                 dst[didx].i = IROUNDD(*(double *)&src[sidx].f);
>                   break;
>                default:
>                   assert(!"Should not get here.");
> --
> 2.5.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list