mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 07:18:17 +02:00
mesa: Pass gl_constant_value union into _mesa_fetch_state().
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@whitecape.org>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Cc: mesa-stable@lists.freedesktop.org
(cherry picked from commit 8b408972ff)
This commit is contained in:
parent
7d41c8aa25
commit
a9647850d1
1 changed files with 5 additions and 3 deletions
|
|
@ -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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue