[Mesa-dev] [PATCH 2/8] mesa: Add new functions and enums required by GL_ARB_sample_shading

Anuj Phogat anuj.phogat at gmail.com
Tue Oct 15 01:26:47 CEST 2013


On Mon, Oct 14, 2013 at 11:05 AM, Matt Turner <mattst88 at gmail.com> wrote:
> On Mon, Oct 14, 2013 at 10:12 AM, Anuj Phogat <anuj.phogat at gmail.com> wrote:
>> 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>
>
> Does this need to be inside a new <category name="4.0"> since
> MinSampleShading is new in GL 4.0?
>
That looks like right thing to do.

>> 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 },
>
> Two instances of glMinSampleShadingARB? I think this might have been a
> mistake in the code as it was.
Yeah, one of them seems redundant. I'll remove it.


More information about the mesa-dev mailing list