New functions added by GL_ARB_sample_shading: glMinSampleShadingARB() New enums: GL_SAMPLE_SHADING_ARB GL_MIN_SAMPLE_SHADING_VALUE_ARB
Signed-off-by: Anuj Phogat <anuj.pho...@gmail.com> --- src/mapi/glapi/gen/ARB_sample_shading.xml | 19 +++++++++++++++++++ src/mapi/glapi/gen/GL3x.xml | 5 +++++ src/mapi/glapi/gen/gl_API.xml | 2 +- src/mesa/main/enable.c | 16 ++++++++++++++++ src/mesa/main/get.c | 4 ++++ src/mesa/main/get_hash_params.py | 3 +++ src/mesa/main/mtypes.h | 2 ++ src/mesa/main/multisample.c | 13 +++++++++++++ src/mesa/main/multisample.h | 2 ++ src/mesa/main/tests/dispatch_sanity.cpp | 4 ++-- 10 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 src/mapi/glapi/gen/ARB_sample_shading.xml diff --git a/src/mapi/glapi/gen/ARB_sample_shading.xml b/src/mapi/glapi/gen/ARB_sample_shading.xml new file mode 100644 index 0000000..a87a517 --- /dev/null +++ b/src/mapi/glapi/gen/ARB_sample_shading.xml @@ -0,0 +1,19 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd"> + +<!-- Note: no GLX protocol info yet. --> + +<OpenGLAPI> + +<category name="GL_ARB_sample_shading" number="70"> + + <enum name="SAMPLE_SHADING_ARB" value="0x8C36"/> + <enum name="MIN_SAMPLE_SHADING_VALUE_ARB" value="0x8C37"/> + + <function name="MinSampleShadingARB" alias="MinSampleShading"> + <param name="value" type="GLclampf"/> + </function> + +</category> + +</OpenGLAPI> diff --git a/src/mapi/glapi/gen/GL3x.xml b/src/mapi/glapi/gen/GL3x.xml index 5078f7b..4ec4749 100644 --- a/src/mapi/glapi/gen/GL3x.xml +++ b/src/mapi/glapi/gen/GL3x.xml @@ -630,6 +630,11 @@ <param name="divisor" type="GLuint"/> </function> + <function name="MinSampleShading" offset="assign"> + <param name="value" type="GLclampf"/> + </function> + + </category> </OpenGLAPI> diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml index 48fce36..8919852 100644 --- a/src/mapi/glapi/gen/gl_API.xml +++ b/src/mapi/glapi/gen/gl_API.xml @@ -8187,7 +8187,7 @@ <xi:include href="ARB_draw_buffers_blend.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> <xi:include href="AMD_draw_buffers_blend.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> -<!-- 70. GL_ARB_sample_shading --> +<xi:include href="ARB_sample_shading.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> <xi:include href="ARB_texture_cube_map_array.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> <xi:include href="ARB_texture_gather.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> <!-- 73. GL_ARB_texture_query_lod --> diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c index 5e2fd80..83c59ee 100644 --- a/src/mesa/main/enable.c +++ b/src/mesa/main/enable.c @@ -802,6 +802,15 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state) ctx->Multisample.SampleCoverageInvert = state; break; + /*GL_ARB_sample_shading*/ + case GL_SAMPLE_SHADING_ARB: + CHECK_EXTENSION(ARB_sample_shading, cap); + if (ctx->Multisample.SampleShading == state) + return; + FLUSH_VERTICES(ctx, _NEW_MULTISAMPLE); + ctx->Multisample.SampleShading = state; + break; + /* GL_IBM_rasterpos_clip */ case GL_RASTER_POSITION_UNCLIPPED_IBM: if (ctx->API != API_OPENGL_COMPAT) @@ -1594,6 +1603,13 @@ _mesa_IsEnabled( GLenum cap ) CHECK_EXTENSION(ARB_texture_multisample); return ctx->Multisample.SampleMask; + /* ARB_sample_shading */ + case GL_SAMPLE_SHADING_ARB: + if (!_mesa_is_desktop_gl(ctx)) + goto invalid_enum_error; + CHECK_EXTENSION(ARB_sample_shading); + return ctx->Multisample.SampleShading; + default: goto invalid_enum_error; } diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index 89b3bf0..c52133e 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -894,6 +894,10 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu _mesa_problem(ctx, "driver doesn't implement GetTimestamp"); } break; + /* GL_ARB_sample_shading */ + case GL_MIN_SAMPLE_SHADING_VALUE_ARB: + v->value_float = ctx->Multisample.MinSampleShadingValue; + break; } } diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py index 9c54af0..0d7effb 100644 --- a/src/mesa/main/get_hash_params.py +++ b/src/mesa/main/get_hash_params.py @@ -83,6 +83,9 @@ descriptor=[ [ "SAMPLE_BUFFERS_ARB", "BUFFER_INT(Visual.sampleBuffers), extra_new_buffers" ], [ "SAMPLES_ARB", "BUFFER_INT(Visual.samples), extra_new_buffers" ], +# GL_ARB_sample_shading + [ "MIN_SAMPLE_SHADING_VALUE_ARB", "CONTEXT_FLOAT(Multisample.MinSampleShadingValue), NO_EXTRA" ], + # GL_SGIS_generate_mipmap [ "GENERATE_MIPMAP_HINT_SGIS", "CONTEXT_ENUM(Hint.GenerateMipmap), NO_EXTRA" ], diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 053514d..5520e86 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -872,6 +872,8 @@ struct gl_multisample_attrib GLboolean SampleCoverage; GLfloat SampleCoverageValue; GLboolean SampleCoverageInvert; + GLboolean SampleShading; + GLfloat MinSampleShadingValue; /* ARB_texture_multisample / GL3.2 additions */ GLboolean SampleMask; diff --git a/src/mesa/main/multisample.c b/src/mesa/main/multisample.c index bd97c50..892525e 100644 --- a/src/mesa/main/multisample.c +++ b/src/mesa/main/multisample.c @@ -119,6 +119,19 @@ _mesa_SampleMaski(GLuint index, GLbitfield mask) ctx->Multisample.SampleMaskValue = mask; } +/** + * Called via glMinSampleShadingARB + */ +void GLAPIENTRY +_mesa_MinSampleShading(GLclampf value) +{ + GET_CURRENT_CONTEXT(ctx); + + FLUSH_VERTICES(ctx, 0); + + ctx->Multisample.MinSampleShadingValue = (GLfloat) CLAMP(value, 0.0, 1.0); + ctx->NewState |= _NEW_MULTISAMPLE; +} /** * Helper for checking a requested sample count against the limit diff --git a/src/mesa/main/multisample.h b/src/mesa/main/multisample.h index 66848d2..7441d3e 100644 --- a/src/mesa/main/multisample.h +++ b/src/mesa/main/multisample.h @@ -44,6 +44,8 @@ _mesa_GetMultisamplefv(GLenum pname, GLuint index, GLfloat* val); extern void GLAPIENTRY _mesa_SampleMaski(GLuint index, GLbitfield mask); +extern void GLAPIENTRY +_mesa_MinSampleShading(GLclampf value); extern GLenum _mesa_check_sample_count(struct gl_context *ctx, GLenum target, diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp index 244173a..19a77db 100644 --- a/src/mesa/main/tests/dispatch_sanity.cpp +++ b/src/mesa/main/tests/dispatch_sanity.cpp @@ -542,7 +542,7 @@ const struct function gl_core_functions_possible[] = { { "glVertexAttribDivisor", 33, -1 }, /* GL 4.0 */ -// { "glMinSampleShading", 40, -1 }, // XXX: Add to xml + { "glMinSampleShadingARB", 40, -1 }, // { "glBlendEquationi", 40, -1 }, // XXX: Add to xml // { "glBlendEquationSeparatei", 40, -1 }, // XXX: Add to xml // { "glBlendFunci", 40, -1 }, // XXX: Add to xml @@ -603,7 +603,7 @@ const struct function gl_core_functions_possible[] = { { "glBlendEquationSeparateiARB", 43, -1 }, { "glBlendFunciARB", 43, -1 }, { "glBlendFuncSeparateiARB", 43, -1 }, -// { "glMinSampleShadingARB", 43, -1 }, // XXX: Add to xml + { "glMinSampleShadingARB", 43, -1 }, // { "glNamedStringARB", 43, -1 }, // XXX: Add to xml // { "glDeleteNamedStringARB", 43, -1 }, // XXX: Add to xml // { "glCompileShaderIncludeARB", 43, -1 }, // XXX: Add to xml -- 1.8.1.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev