--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+
+<category name="GL_NV_alpha_to_coverage_dither_control" number="500" no_error="true">
+
+ <enum name="ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV" value="0x934D" />
+ <enum name="ALPHA_TO_COVERAGE_DITHER_ENABLE_NV" value="0x934E" />
+ <enum name="ALPHA_TO_COVERAGE_DITHER_DISABLE_NV" value="0x934F" />
+
+ <enum name="ALPHA_TO_COVERAGE_DITHER_MODE_NV" value="0x92BF"/>
+
+ <function name="AlphaToCoverageDitherControlNV">
+ <param name="mode" type="GLenum"/>
+ </function>
+
+</category>
+
+</OpenGLAPI>
<xi:include href="INTEL_performance_query.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+<xi:include href="NV_alpha_to_coverage_dither_control.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
<category name="GL_EXT_polygon_offset_clamp" number="460">
<enum name="POLYGON_OFFSET_CLAMP_EXT" value="0x8E1B">
<size name="Get" mode="get"/>
'KHR_robustness.xml',
'KHR_robustness_es.xml',
'KHR_texture_compression_astc.xml',
+ 'NV_alpha_to_coverage_dither_control.xml',
'NV_copy_image.xml',
'NV_conditional_render.xml',
'NV_primitive_restart.xml',
"EGLImageTargetTextureStorageEXT" : 1606,
"CopyImageSubDataNV": 1607,
"ViewportSwizzleNV": 1608,
+ "AlphaToCoverageDitherControlNV": 1609,
}
functions = [
_mesa_SampleCoverage(ms->SampleCoverageValue,
ms->SampleCoverageInvert);
+
+ _mesa_AlphaToCoverageDitherControlNV(ms->SampleAlphaToCoverageDitherControl);
}
break;
EXT(NVX_gpu_memory_info , NVX_gpu_memory_info , GLL, GLC, x , x , 2013)
+EXT(NV_alpha_to_coverage_dither_control , NV_alpha_to_coverage_dither_control , GLL, GLC, x , ES2, 2017)
EXT(NV_blend_square , dummy_true , GLL, x , x , x , 1999)
EXT(NV_compute_shader_derivatives , NV_compute_shader_derivatives , GLL, GLC, x , 32, 2018)
EXT(NV_conditional_render , NV_conditional_render , GLL, GLC, x , ES2, 2008)
[ "MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD", "CONTEXT_INT(Const.MaxDepthStencilFramebufferSamples), extra_AMD_framebuffer_multisample_advanced" ],
[ "NUM_SUPPORTED_MULTISAMPLE_MODES_AMD", "CONTEXT_INT(Const.NumSupportedMultisampleModes), extra_AMD_framebuffer_multisample_advanced" ],
[ "SUPPORTED_MULTISAMPLE_MODES_AMD", "LOC_CUSTOM, TYPE_INT_N, 0, extra_AMD_framebuffer_multisample_advanced" ],
+
+# GL_NV_alpha_to_coverage_dither_control
+ [ "ALPHA_TO_COVERAGE_DITHER_MODE_NV", "CONTEXT_ENUM(Multisample.SampleAlphaToCoverageDitherControl ), NO_EXTRA" ],
]},
# GLES3 is not a typo.
/** The GL spec defines this as an array but >32x MSAA is madness */
GLbitfield SampleMaskValue;
+
+ /* NV_alpha_to_coverage_dither_control */
+ GLenum SampleAlphaToCoverageDitherControl;
};
GLboolean EXT_shader_framebuffer_fetch_non_coherent;
GLboolean MESA_shader_integer_functions;
GLboolean MESA_ycbcr_texture;
+ GLboolean NV_alpha_to_coverage_dither_control;
GLboolean NV_compute_shader_derivatives;
GLboolean NV_conditional_render;
GLboolean NV_copy_image;
{
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;
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)");
+ }
+}
GLenum internalFormat, GLsizei samples,
GLsizei storageSamples);
+extern void GLAPIENTRY
+_mesa_AlphaToCoverageDitherControlNV_no_error(GLenum mode);
+
+extern void GLAPIENTRY
+_mesa_AlphaToCoverageDitherControlNV(GLenum mode);
+
#endif
{ "glDepthRangeArrayv", 43, -1 },
{ "glDepthRangeIndexed", 43, -1 },
+/* GL 4.4 */
+ /* GL_NV_alpha_to_coverage_dither_control */
+ { "glAlphaToCoverageDitherControlNV", 44, -1 },
+
/* GL 4.5 */
/* aliased versions checked above */
//{ "glGetGraphicsResetStatus", 45, -1 },
*/
blend->alpha_to_coverage = ctx->Multisample.SampleAlphaToCoverage;
blend->alpha_to_one = ctx->Multisample.SampleAlphaToOne;
+ blend->alpha_to_coverage_dither =
+ ctx->Multisample.SampleAlphaToCoverageDitherControl !=
+ GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV;
}
cso_set_blend(st->cso_context, blend);
{ o(INTEL_conservative_rasterization), PIPE_CAP_CONSERVATIVE_RASTER_INNER_COVERAGE },
{ o(INTEL_shader_atomic_float_minmax), PIPE_CAP_ATOMIC_FLOAT_MINMAX },
{ o(MESA_tile_raster_order), PIPE_CAP_TILE_RASTER_ORDER },
+ { o(NV_alpha_to_coverage_dither_control), PIPE_CAP_ALPHA_TO_COVERAGE_DITHER_CONTROL },
{ o(NV_compute_shader_derivatives), PIPE_CAP_COMPUTE_SHADER_DERIVATIVES },
{ o(NV_conditional_render), PIPE_CAP_CONDITIONAL_RENDER },
{ o(NV_fill_rectangle), PIPE_CAP_POLYGON_MODE_FILL_RECTANGLE },