X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fblend.c;fp=src%2Fmesa%2Fmain%2Fblend.c;h=0bf27b1f46efa24e2ece9e75aeb7577a5c35c4dd;hb=f1538002b81493b5e4754746745db565cf6fe810;hp=0dc2fa171c354cdf3be5fe9da4f2e63cdc12ce87;hpb=eb04db734429971ddc240ba9dc6726a991cc0a14;p=mesa.git diff --git a/src/mesa/main/blend.c b/src/mesa/main/blend.c index 0dc2fa171c3..0bf27b1f46e 100644 --- a/src/mesa/main/blend.c +++ b/src/mesa/main/blend.c @@ -1121,6 +1121,8 @@ void _mesa_update_clamp_fragment_color(struct gl_context *ctx, const struct gl_framebuffer *drawFb) { + GLboolean clamp; + /* Don't clamp if: * - there is no colorbuffer * - all colorbuffers are unsigned normalized, so clamping has no effect @@ -1128,10 +1130,15 @@ _mesa_update_clamp_fragment_color(struct gl_context *ctx, */ if (!drawFb || !drawFb->_HasSNormOrFloatColorBuffer || drawFb->_IntegerBuffers) - ctx->Color._ClampFragmentColor = GL_FALSE; + clamp = GL_FALSE; else - ctx->Color._ClampFragmentColor = - _mesa_get_clamp_fragment_color(ctx, drawFb); + clamp = _mesa_get_clamp_fragment_color(ctx, drawFb); + + if (ctx->Color._ClampFragmentColor == clamp) + return; + + ctx->NewDriverState |= ctx->DriverFlags.NewFragClamp; + ctx->Color._ClampFragmentColor = clamp; } /**