mesa: set _NEW_FRAG_CLAMP only when needed
authorMathias Fröhlich <mathias.froehlich@web.de>
Thu, 27 Feb 2020 07:13:07 +0000 (08:13 +0100)
committerMarge Bot <eric+marge@anholt.net>
Thu, 30 Apr 2020 22:01:55 +0000 (22:01 +0000)
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4314>

src/mesa/main/blend.c

index 0bf27b1f46efa24e2ece9e75aeb7577a5c35c4dd..1b84c9077f0f7d89f35f9bdd95fda32fc9d9caab 100644 (file)
@@ -1063,9 +1063,10 @@ _mesa_ClampColor(GLenum target, GLenum clamp)
    case GL_CLAMP_FRAGMENT_COLOR_ARB:
       if (ctx->API == API_OPENGL_CORE)
          goto invalid_enum;
-      FLUSH_VERTICES(ctx, _NEW_FRAG_CLAMP);
-      ctx->Color.ClampFragmentColor = clamp;
-      _mesa_update_clamp_fragment_color(ctx, ctx->DrawBuffer);
+      if (ctx->Color.ClampFragmentColor != clamp) {
+         ctx->Color.ClampFragmentColor = clamp;
+         _mesa_update_clamp_fragment_color(ctx, ctx->DrawBuffer);
+      }
       break;
    case GL_CLAMP_READ_COLOR_ARB:
       ctx->Color.ClampReadColor = clamp;
@@ -1137,6 +1138,7 @@ _mesa_update_clamp_fragment_color(struct gl_context *ctx,
    if (ctx->Color._ClampFragmentColor == clamp)
       return;
 
+   ctx->NewState |= _NEW_FRAG_CLAMP; /* for state constants */
    ctx->NewDriverState |= ctx->DriverFlags.NewFragClamp;
    ctx->Color._ClampFragmentColor = clamp;
 }