[Mesa-dev] [PATCH V2 02/12] mesa: Add new functions and enums required by GL_ARB_sample_shading
Anuj Phogat
anuj.phogat at gmail.com
Mon Oct 28 18:54:35 CET 2013
On Mon, Oct 28, 2013 at 10:29 AM, Ian Romanick <idr at freedesktop.org> wrote:
> On 10/25/2013 04:44 PM, Anuj Phogat wrote:
>> New functions added by GL_ARB_sample_shading:
>> glMinSampleShadingARB()
>>
>> New enums:
>> GL_SAMPLE_SHADING_ARB
>> GL_MIN_SAMPLE_SHADING_VALUE_ARB
>>
>> V2: Update comments.
>> Create new GL4x.xml.
>> Remove redundant code in get.c.
>> Update the API_XML list in Makefile.am.
>> Add extra_gl40_ARB_sample_shading predicate to get.c.
>>
>> Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
>> Reviewed-by: Ken Graunke <kenneth at whitecape.org>
>> ---
>> src/mapi/glapi/gen/ARB_sample_shading.xml | 19 +++++++++++++++++++
>> src/mapi/glapi/gen/GL4x.xml | 21 +++++++++++++++++++++
>> src/mapi/glapi/gen/Makefile.am | 4 +++-
>> src/mapi/glapi/gen/gl_API.xml | 3 ++-
>> src/mesa/main/enable.c | 16 ++++++++++++++++
>> src/mesa/main/get.c | 8 ++++++++
>> src/mesa/main/get_hash_params.py | 3 +++
>> src/mesa/main/mtypes.h | 2 ++
>> src/mesa/main/multisample.c | 18 ++++++++++++++++++
>> src/mesa/main/multisample.h | 2 ++
>> src/mesa/main/tests/dispatch_sanity.cpp | 2 +-
>> 11 files changed, 95 insertions(+), 3 deletions(-)
>> create mode 100644 src/mapi/glapi/gen/ARB_sample_shading.xml
>> create mode 100644 src/mapi/glapi/gen/GL4x.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/GL4x.xml b/src/mapi/glapi/gen/GL4x.xml
>> new file mode 100644
>> index 0000000..367741f
>> --- /dev/null
>> +++ b/src/mapi/glapi/gen/GL4x.xml
>> @@ -0,0 +1,21 @@
>> +<?xml version="1.0"?>
>> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
>> +
>> +<!-- Note: no GLX protocol info yet. -->
>> +
>> +<OpenGLAPI>
>> +
>> +<category name="4.0">
>> + <enum name="SAMPLE_SHADING" value="0x8C36"/>
>> + <enum name="MIN_SAMPLE_SHADING_VALUE" value="0x8C37"/>
>> +
>> + <function name="MinSampleShading" offset="assign">
>> + <param name="value" type="GLclampf"/>
>> + </function>
>> +</category>
>> +
>> +<category name="4.3">
>> +
>> +</category>
>> +
>> +</OpenGLAPI>
>> diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am
>> index d71d5d2..b8d280c 100644
>> --- a/src/mapi/glapi/gen/Makefile.am
>> +++ b/src/mapi/glapi/gen/Makefile.am
>> @@ -108,6 +108,7 @@ API_XML = \
>> ARB_invalidate_subdata.xml \
>> ARB_map_buffer_range.xml \
>> ARB_robustness.xml \
>> + ARB_sample_shading.xml \
>> ARB_sampler_objects.xml \
>> ARB_seamless_cube_map.xml \
>> ARB_sync.xml \
>> @@ -142,7 +143,8 @@ API_XML = \
>> NV_primitive_restart.xml \
>> NV_texture_barrier.xml \
>> OES_EGL_image.xml \
>> - GL3x.xml
>> + GL3x.xml \
>> + GL4x.xml
>>
>>
>> COMMON = $(API_XML) \
>> diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
>> index 48fce36..f0eea9b 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 -->
>> @@ -13150,4 +13150,5 @@
>>
>> <xi:include href="EXT_transform_feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
>>
>> +<xi:include href="GL4x.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
>> </OpenGLAPI>
>> diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c
>> index 5e2fd80..c9ccfd2 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:
>> + 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:
>> + 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..9ad87c4 100644
>> --- a/src/mesa/main/get.c
>> +++ b/src/mesa/main/get.c
>> @@ -131,6 +131,7 @@ enum value_extra {
>> EXTRA_VERSION_30,
>> EXTRA_VERSION_31,
>> EXTRA_VERSION_32,
>> + EXTRA_VERSION_40,
>> EXTRA_API_GL,
>> EXTRA_API_GL_CORE,
>> EXTRA_API_ES2,
>> @@ -384,6 +385,7 @@ extra_NV_primitive_restart[] = {
>> static const int extra_version_30[] = { EXTRA_VERSION_30, EXTRA_END };
>> static const int extra_version_31[] = { EXTRA_VERSION_31, EXTRA_END };
>> static const int extra_version_32[] = { EXTRA_VERSION_32, EXTRA_END };
>> +static const int extra_version_40[] = { EXTRA_VERSION_40, EXTRA_END };
>>
>> static const int extra_gl30_es3[] = {
>> EXTRA_VERSION_30,
>> @@ -403,6 +405,12 @@ static const int extra_gl32_ARB_geometry_shader4[] = {
>> EXTRA_END
>> };
>>
>> +static const int extra_gl40_ARB_sample_shading[] = {
>> + EXTRA_VERSION_40,
>> + EXT(ARB_sample_shading),
>> + EXTRA_END
>> +};
>> +
>> static const int
>> extra_ARB_vertex_program_api_es2[] = {
>> EXT(ARB_vertex_program),
>> diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py
>> index 9c54af0..2fe0615 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), extra_gl40_ARB_sample_shading" ],
>> +
>> # 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 67f1bf6..8306969 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..9824c0e 100644
>> --- a/src/mesa/main/multisample.c
>> +++ b/src/mesa/main/multisample.c
>> @@ -119,6 +119,24 @@ _mesa_SampleMaski(GLuint index, GLbitfield mask)
>> ctx->Multisample.SampleMaskValue = mask;
>> }
>>
>> +/**
>> + * Called via glMinSampleShadingARB
>> + */
>> +void GLAPIENTRY
>> +_mesa_MinSampleShading(GLclampf value)
>> +{
>> + GET_CURRENT_CONTEXT(ctx);
>> +
>> + if (!ctx->Extensions.ARB_sample_shading) {
>> + _mesa_error(ctx, GL_INVALID_OPERATION, "glMinSampleShading");
>> + return;
>> + }
>> +
>> + FLUSH_VERTICES(ctx, 0);
>> +
>> + ctx->Multisample.MinSampleShadingValue = 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..771efd9 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 }, // XXX: Add to xml
>> // { "glBlendEquationi", 40, -1 }, // XXX: Add to xml
>> // { "glBlendEquationSeparatei", 40, -1 }, // XXX: Add to xml
>> // { "glBlendFunci", 40, -1 }, // XXX: Add to xml
>>
>
> Pretty sure this isn't correct... or the feedback I give you in v1. Did
> you actually run 'make check' successfully?
Sorry, I misunderstood your comment in v1. and I didn't run make check :(.
I'l make the hunk look like:
/* GL 4.0 */
-// { "glMinSampleShading", 40, -1 }, // XXX: Add to xml
+ { "glMinSampleShading", 40, -1 }, // XXX: Add to xml
More information about the mesa-dev
mailing list