mesa: implement clamping controls (ARB_color_buffer_float)
Squashed commit of the following: Author: Marek Olšák <maraeo@gmail.com> mesa: fix getteximage so that it doesn't clamp values mesa: update the compute_version function mesa: add display list support for ARB_color_buffer_float mesa: fix glGet query with GL_ALPHA_TEST_REF and ARB_color_buffer_float commit b2f6ddf907935b2594d2831ddab38cf57a1729ce Author: Luca Barbieri <luca@luca-barbieri.com> Date: Tue Aug 31 16:50:57 2010 +0200 mesa: document known possible deviations from ARB_color_buffer_float commit 5458935be800c1b19d1c9d1569dc4fa30a97e8b8 Author: Luca Barbieri <luca@luca-barbieri.com> Date: Tue Aug 24 21:54:56 2010 +0200 mesa: expose GL_ARB_color_buffer_float commit aef5c3c6be6edd076e955e37c80905bc447f8a82 Author: Luca Barbieri <luca@luca-barbieri.com> Date: Thu Aug 26 18:12:34 2010 +0200 mesa, mesa/st: handle read color clamping properly (I'll squash the st/mesa part to a separate commit. -Marek) We set IMAGE_CLAMP_BIT in the caller based on _ClampReadColor, where the operation mandates it. TODO: did I get the set of operations mandating it right? commit 3a9cb5e59b676b6148c50907ce6eef5441677e36 Author: Luca Barbieri <luca@luca-barbieri.com> Date: Thu Aug 26 18:09:41 2010 +0200 mesa: respect color clamping in texenv programs (v2) Changes in v2: - Fix attributes other than vertex color sometimes getting clamped commit de26f9e47e886e176aab6e5a2c3d4481efb64362 Author: Luca Barbieri <luca@luca-barbieri.com> Date: Thu Aug 26 18:05:53 2010 +0200 mesa: restore color clamps on glPopAttrib commit a55ac3c300c189616627c05d924c40a8b55bfafa Author: Luca Barbieri <luca@luca-barbieri.com> Date: Thu Aug 26 18:04:26 2010 +0200 mesa: clamp color queries if and only if fragment clamping is enabled commit 9940a3e31c2fb76cc3d28b15ea78dde369825107 Author: Luca Barbieri <luca@luca-barbieri.com> Date: Wed Aug 25 00:00:16 2010 +0200 mesa: introduce derived _ClampXxxColor state resolving FIXED_ONLY To do this, we make ClampColor call FLUSH_VERTICES with the appropriate _NEW flag. We introduce _NEW_FRAG_CLAMP since fragment clamping has wide-ranging effects, despite being in the Color attrib group. This may be easily changed by s/_NEW_FRAG_CLAMP/_NEW_COLOR/g commit 6244c446e3beed5473b4e811d10787e4019f59d6 Author: Luca Barbieri <luca@luca-barbieri.com> Date: Thu Aug 26 17:58:24 2010 +0200 mesa: add unclamped color parameters
This commit is contained in:
@@ -237,11 +237,17 @@ _mesa_fetch_state(struct gl_context *ctx, const gl_state_index state[],
|
||||
{
|
||||
/* state[1] is the texture unit */
|
||||
const GLuint unit = (GLuint) state[1];
|
||||
COPY_4V(value, ctx->Texture.Unit[unit].EnvColor);
|
||||
if(ctx->Color._ClampFragmentColor)
|
||||
COPY_4V(value, ctx->Texture.Unit[unit].EnvColor);
|
||||
else
|
||||
COPY_4V(value, ctx->Texture.Unit[unit].EnvColorUnclamped);
|
||||
}
|
||||
return;
|
||||
case STATE_FOG_COLOR:
|
||||
COPY_4V(value, ctx->Fog.Color);
|
||||
if(ctx->Color._ClampFragmentColor)
|
||||
COPY_4V(value, ctx->Fog.Color);
|
||||
else
|
||||
COPY_4V(value, ctx->Fog.ColorUnclamped);
|
||||
return;
|
||||
case STATE_FOG_PARAMS:
|
||||
value[0] = ctx->Fog.Density;
|
||||
@@ -399,6 +405,22 @@ _mesa_fetch_state(struct gl_context *ctx, const gl_state_index state[],
|
||||
}
|
||||
return;
|
||||
|
||||
case STATE_CURRENT_ATTRIB_MAYBE_VP_CLAMPED:
|
||||
{
|
||||
const GLuint idx = (GLuint) state[2];
|
||||
if(ctx->Light._ClampVertexColor &&
|
||||
(idx == VERT_ATTRIB_COLOR0 ||
|
||||
idx == VERT_ATTRIB_COLOR1)) {
|
||||
value[0] = CLAMP(ctx->Current.Attrib[idx][0], 0.0f, 1.0f);
|
||||
value[1] = CLAMP(ctx->Current.Attrib[idx][1], 0.0f, 1.0f);
|
||||
value[2] = CLAMP(ctx->Current.Attrib[idx][2], 0.0f, 1.0f);
|
||||
value[3] = CLAMP(ctx->Current.Attrib[idx][3], 0.0f, 1.0f);
|
||||
}
|
||||
else
|
||||
COPY_4V(value, ctx->Current.Attrib[idx]);
|
||||
}
|
||||
return;
|
||||
|
||||
case STATE_NORMAL_SCALE:
|
||||
ASSIGN_4V(value,
|
||||
ctx->_ModelViewInvScale,
|
||||
@@ -649,10 +671,12 @@ _mesa_program_state_flags(const gl_state_index state[STATE_LENGTH])
|
||||
return _NEW_LIGHT;
|
||||
|
||||
case STATE_TEXGEN:
|
||||
case STATE_TEXENV_COLOR:
|
||||
return _NEW_TEXTURE;
|
||||
case STATE_TEXENV_COLOR:
|
||||
return _NEW_TEXTURE | _NEW_BUFFERS | _NEW_FRAG_CLAMP;
|
||||
|
||||
case STATE_FOG_COLOR:
|
||||
return _NEW_FOG | _NEW_BUFFERS | _NEW_FRAG_CLAMP;
|
||||
case STATE_FOG_PARAMS:
|
||||
return _NEW_FOG;
|
||||
|
||||
@@ -688,6 +712,8 @@ _mesa_program_state_flags(const gl_state_index state[STATE_LENGTH])
|
||||
switch (state[1]) {
|
||||
case STATE_CURRENT_ATTRIB:
|
||||
return _NEW_CURRENT_ATTRIB;
|
||||
case STATE_CURRENT_ATTRIB_MAYBE_VP_CLAMPED:
|
||||
return _NEW_CURRENT_ATTRIB | _NEW_LIGHT | _NEW_BUFFERS;
|
||||
|
||||
case STATE_NORMAL_SCALE:
|
||||
return _NEW_MODELVIEW;
|
||||
|
Reference in New Issue
Block a user