Reviewed-by: Fredrik Höglund <fred...@kde.org> On Wednesday 04 March 2015, Laura Ekstrand wrote: > --- > src/mesa/main/blend.c | 19 ++++++++++--------- > src/mesa/main/blend.h | 6 ++++-- > src/mesa/main/framebuffer.c | 2 +- > src/mesa/main/get.c | 8 ++++---- > src/mesa/main/texenv.c | 2 +- > src/mesa/main/texparam.c | 2 +- > src/mesa/program/prog_statevars.c | 4 ++-- > 7 files changed, 23 insertions(+), 20 deletions(-) > > diff --git a/src/mesa/main/blend.c b/src/mesa/main/blend.c > index ee76b47..2342555 100644 > --- a/src/mesa/main/blend.c > +++ b/src/mesa/main/blend.c > @@ -778,7 +778,7 @@ _mesa_ClampColor(GLenum target, GLenum clamp) > } > FLUSH_VERTICES(ctx, _NEW_FRAG_CLAMP); > ctx->Color.ClampFragmentColor = clamp; > - _mesa_update_clamp_fragment_color(ctx); > + _mesa_update_clamp_fragment_color(ctx, ctx->DrawBuffer); > break; > case GL_CLAMP_READ_COLOR_ARB: > ctx->Color.ClampReadColor = clamp; > @@ -807,10 +807,10 @@ get_clamp_color(const struct gl_framebuffer *fb, GLenum > clamp) > } > > GLboolean > -_mesa_get_clamp_fragment_color(const struct gl_context *ctx) > +_mesa_get_clamp_fragment_color(const struct gl_context *ctx, > + const struct gl_framebuffer *drawFb) > { > - return get_clamp_color(ctx->DrawBuffer, > - ctx->Color.ClampFragmentColor); > + return get_clamp_color(drawFb, ctx->Color.ClampFragmentColor); > } > > GLboolean > @@ -830,19 +830,20 @@ _mesa_get_clamp_read_color(const struct gl_context *ctx) > * Update the ctx->Color._ClampFragmentColor field > */ > void > -_mesa_update_clamp_fragment_color(struct gl_context *ctx) > +_mesa_update_clamp_fragment_color(struct gl_context *ctx, > + const struct gl_framebuffer *drawFb) > { > - struct gl_framebuffer *fb = ctx->DrawBuffer; > - > /* Don't clamp if: > * - there is no colorbuffer > * - all colorbuffers are unsigned normalized, so clamping has no effect > * - there is an integer colorbuffer > */ > - if (!fb || !fb->_HasSNormOrFloatColorBuffer || fb->_IntegerColor) > + if (!drawFb || !drawFb->_HasSNormOrFloatColorBuffer || > + drawFb->_IntegerColor) > ctx->Color._ClampFragmentColor = GL_FALSE; > else > - ctx->Color._ClampFragmentColor = _mesa_get_clamp_fragment_color(ctx); > + ctx->Color._ClampFragmentColor = > + _mesa_get_clamp_fragment_color(ctx, drawFb); > } > > /** > diff --git a/src/mesa/main/blend.h b/src/mesa/main/blend.h > index 9c1ef7e..58e6673 100644 > --- a/src/mesa/main/blend.h > +++ b/src/mesa/main/blend.h > @@ -102,7 +102,8 @@ extern void GLAPIENTRY > _mesa_ClampColor(GLenum target, GLenum clamp); > > extern GLboolean > -_mesa_get_clamp_fragment_color(const struct gl_context *ctx); > +_mesa_get_clamp_fragment_color(const struct gl_context *ctx, > + const struct gl_framebuffer *drawFb); > > extern GLboolean > _mesa_get_clamp_vertex_color(const struct gl_context *ctx, > @@ -112,7 +113,8 @@ extern GLboolean > _mesa_get_clamp_read_color(const struct gl_context *ctx); > > extern void > -_mesa_update_clamp_fragment_color(struct gl_context *ctx); > +_mesa_update_clamp_fragment_color(struct gl_context *ctx, > + const struct gl_framebuffer *drawFb); > > extern void > _mesa_update_clamp_vertex_color(struct gl_context *ctx, > diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c > index 22db72a..eee457d 100644 > --- a/src/mesa/main/framebuffer.c > +++ b/src/mesa/main/framebuffer.c > @@ -692,7 +692,7 @@ _mesa_update_framebuffer(struct gl_context *ctx, > update_framebuffer(ctx, readFb); > > _mesa_update_clamp_vertex_color(ctx, drawFb); > - _mesa_update_clamp_fragment_color(ctx); > + _mesa_update_clamp_fragment_color(ctx, drawFb); > } > > > diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c > index a881bc5..c37d9db 100644 > --- a/src/mesa/main/get.c > +++ b/src/mesa/main/get.c > @@ -909,13 +909,13 @@ find_custom_value(struct gl_context *ctx, const struct > value_desc *d, union valu > break; > > case GL_FOG_COLOR: > - if (_mesa_get_clamp_fragment_color(ctx)) > + if (_mesa_get_clamp_fragment_color(ctx, ctx->DrawBuffer)) > COPY_4FV(v->value_float_4, ctx->Fog.Color); > else > COPY_4FV(v->value_float_4, ctx->Fog.ColorUnclamped); > break; > case GL_COLOR_CLEAR_VALUE: > - if (_mesa_get_clamp_fragment_color(ctx)) { > + if (_mesa_get_clamp_fragment_color(ctx, ctx->DrawBuffer)) { > v->value_float_4[0] = CLAMP(ctx->Color.ClearColor.f[0], 0.0F, 1.0F); > v->value_float_4[1] = CLAMP(ctx->Color.ClearColor.f[1], 0.0F, 1.0F); > v->value_float_4[2] = CLAMP(ctx->Color.ClearColor.f[2], 0.0F, 1.0F); > @@ -924,13 +924,13 @@ find_custom_value(struct gl_context *ctx, const struct > value_desc *d, union valu > COPY_4FV(v->value_float_4, ctx->Color.ClearColor.f); > break; > case GL_BLEND_COLOR_EXT: > - if (_mesa_get_clamp_fragment_color(ctx)) > + if (_mesa_get_clamp_fragment_color(ctx, ctx->DrawBuffer)) > COPY_4FV(v->value_float_4, ctx->Color.BlendColor); > else > COPY_4FV(v->value_float_4, ctx->Color.BlendColorUnclamped); > break; > case GL_ALPHA_TEST_REF: > - if (_mesa_get_clamp_fragment_color(ctx)) > + if (_mesa_get_clamp_fragment_color(ctx, ctx->DrawBuffer)) > v->value_float = ctx->Color.AlphaRef; > else > v->value_float = ctx->Color.AlphaRefUnclamped; > diff --git a/src/mesa/main/texenv.c b/src/mesa/main/texenv.c > index ec521e6..3edafc0 100644 > --- a/src/mesa/main/texenv.c > +++ b/src/mesa/main/texenv.c > @@ -646,7 +646,7 @@ _mesa_GetTexEnvfv( GLenum target, GLenum pname, GLfloat > *params ) > if (pname == GL_TEXTURE_ENV_COLOR) { > if(ctx->NewState & (_NEW_BUFFERS | _NEW_FRAG_CLAMP)) > _mesa_update_state(ctx); > - if (_mesa_get_clamp_fragment_color(ctx)) > + if (_mesa_get_clamp_fragment_color(ctx, ctx->DrawBuffer)) > COPY_4FV( params, texUnit->EnvColor ); > else > COPY_4FV( params, texUnit->EnvColorUnclamped ); > diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c > index 1ef7286..dfc8a0a 100644 > --- a/src/mesa/main/texparam.c > +++ b/src/mesa/main/texparam.c > @@ -1710,7 +1710,7 @@ get_tex_parameterfv(struct gl_context *ctx, > > if (ctx->NewState & (_NEW_BUFFERS | _NEW_FRAG_CLAMP)) > _mesa_update_state_locked(ctx); > - if (_mesa_get_clamp_fragment_color(ctx)) { > + if (_mesa_get_clamp_fragment_color(ctx, ctx->DrawBuffer)) { > params[0] = CLAMP(obj->Sampler.BorderColor.f[0], 0.0F, 1.0F); > params[1] = CLAMP(obj->Sampler.BorderColor.f[1], 0.0F, 1.0F); > params[2] = CLAMP(obj->Sampler.BorderColor.f[2], 0.0F, 1.0F); > diff --git a/src/mesa/program/prog_statevars.c > b/src/mesa/program/prog_statevars.c > index 4cde744..19a55c3 100644 > --- a/src/mesa/program/prog_statevars.c > +++ b/src/mesa/program/prog_statevars.c > @@ -243,14 +243,14 @@ _mesa_fetch_state(struct gl_context *ctx, const > gl_state_index state[], > { > /* state[1] is the texture unit */ > const GLuint unit = (GLuint) state[1]; > - if (_mesa_get_clamp_fragment_color(ctx)) > + if (_mesa_get_clamp_fragment_color(ctx, ctx->DrawBuffer)) > COPY_4V(value, ctx->Texture.Unit[unit].EnvColor); > else > COPY_4V(value, ctx->Texture.Unit[unit].EnvColorUnclamped); > } > return; > case STATE_FOG_COLOR: > - if (_mesa_get_clamp_fragment_color(ctx)) > + if (_mesa_get_clamp_fragment_color(ctx, ctx->DrawBuffer)) > COPY_4V(value, ctx->Fog.Color); > else > COPY_4V(value, ctx->Fog.ColorUnclamped); >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev