[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,
> - ¶mList->ParameterValues[i][0].f);
> + ¶mList->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