mesa: add support for AlphaToCoverageDitherControlNV
[mesa.git] / src / mesa / main / multisample.c
index d494a43ac7d55f54ff4a104877b2f947575e6370..66eb0c8b98e65beec152f2e275e6d2690de536d8 100644 (file)
@@ -63,6 +63,7 @@ _mesa_init_multisample(struct gl_context *ctx)
 {
    ctx->Multisample.Enabled = GL_TRUE;
    ctx->Multisample.SampleAlphaToCoverage = GL_FALSE;
+   ctx->Multisample.SampleAlphaToCoverageDitherControl = GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV;
    ctx->Multisample.SampleAlphaToOne = GL_FALSE;
    ctx->Multisample.SampleCoverage = GL_FALSE;
    ctx->Multisample.SampleCoverageValue = 1.0;
@@ -351,3 +352,33 @@ _mesa_check_sample_count(struct gl_context *ctx, GLenum target,
    return (GLuint) samples > ctx->Const.MaxSamples
       ? GL_INVALID_VALUE : GL_NO_ERROR;
 }
+
+void GLAPIENTRY
+_mesa_AlphaToCoverageDitherControlNV_no_error(GLenum mode)
+{
+   GET_CURRENT_CONTEXT(ctx);
+
+   FLUSH_VERTICES(ctx, ctx->DriverFlags.NewSampleAlphaToXEnable ? 0 :
+                                                   _NEW_MULTISAMPLE);
+   ctx->NewDriverState |= ctx->DriverFlags.NewSampleAlphaToXEnable;
+   ctx->Multisample.SampleAlphaToCoverageDitherControl = mode;
+}
+
+void GLAPIENTRY
+_mesa_AlphaToCoverageDitherControlNV(GLenum mode)
+{
+   GET_CURRENT_CONTEXT(ctx);
+
+   FLUSH_VERTICES(ctx, ctx->DriverFlags.NewSampleAlphaToXEnable ? 0 :
+                                                   _NEW_MULTISAMPLE);
+   ctx->NewDriverState |= ctx->DriverFlags.NewSampleAlphaToXEnable;
+   switch (mode) {
+      case GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV:
+      case GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV:
+      case GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV:
+         ctx->Multisample.SampleAlphaToCoverageDitherControl = mode;
+         break;
+      default:
+         _mesa_error(ctx, GL_INVALID_ENUM, "glAlphaToCoverageDitherControlNV(invalid parameter)");
+   }
+}