[Mesa-dev] [PATCH 1/5] mesa: Pass gl_constant_value union into _mesa_fetch_state().

Dave Airlie airlied at gmail.com
Thu Jun 2 21:26:55 UTC 2016


On 3 June 2016 at 07:09, Kenneth Graunke <kenneth at whitecape.org> wrote:
> We've had some trouble in the past with copying integers around via
> float pointers, as the C compiler sometimes uses x87 floating point
> registers to load values on 32-bit systems.  Passing the
> gl_constant_value union should be safer.
>
> To avoid churn, this patch creates a "GLfloat *value" variable so
> existing uses can stay the same.
>
> Not observed to fix anything, but I was in the area adding more integer
> state vars, and thought it'd be wise.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> Cc: mesa-stable at lists.freedesktop.org

Reviewed-by: Dave Airlie <airlied at redhat.com>

> ---
>  src/mesa/program/prog_statevars.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/src/mesa/program/prog_statevars.c b/src/mesa/program/prog_statevars.c
> index 03ece67..27ff333 100644
> --- a/src/mesa/program/prog_statevars.c
> +++ b/src/mesa/program/prog_statevars.c
> @@ -55,8 +55,10 @@
>   */
>  static void
>  _mesa_fetch_state(struct gl_context *ctx, const gl_state_index state[],
> -                  GLfloat *value)
> +                  gl_constant_value *val)
>  {
> +   GLfloat *value = &val->f;
> +
>     switch (state[0]) {
>     case STATE_MATERIAL:
>        {
> @@ -353,7 +355,7 @@ _mesa_fetch_state(struct gl_context *ctx, const gl_state_index state[],
>        }
>        return;
>     case STATE_NUM_SAMPLES:
> -      ((int *)value)[0] = MAX2(1, _mesa_geometric_samples(ctx->DrawBuffer));
> +      val[0].i = MAX2(1, _mesa_geometric_samples(ctx->DrawBuffer));
>        return;
>     case STATE_DEPTH_RANGE:
>        value[0] = ctx->ViewportArray[0].Near;                /* near       */
> @@ -1071,7 +1073,7 @@ _mesa_load_state_parameters(struct gl_context *ctx,
>        if (paramList->Parameters[i].Type == PROGRAM_STATE_VAR) {
>           _mesa_fetch_state(ctx,
>                            paramList->Parameters[i].StateIndexes,
> -                           &paramList->ParameterValues[i][0].f);
> +                           &paramList->ParameterValues[i][0]);
>        }
>     }
>  }
> --
> 2.8.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list