[Mesa-dev] [PATCH 21/25] mesa: Add extension enable and table entry for OES_shader_image_atomic.

Tapani Pälli tapani.palli at intel.com
Thu Aug 20 03:02:07 PDT 2015



On 08/19/2015 02:36 PM, Francisco Jerez wrote:
> Ian Romanick <idr at freedesktop.org> writes:
>
>> On 08/17/2015 09:56 AM, Ilia Mirkin wrote:
>>> On Mon, Aug 17, 2015 at 12:46 PM, Francisco Jerez <currojerez at riseup.net> wrote:
>>>> ---
>>>>   src/mesa/main/extensions.c | 1 +
>>>>   src/mesa/main/mtypes.h     | 1 +
>>>>   2 files changed, 2 insertions(+)
>>>>
>>>> diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
>>>> index d934d19..38c7bc8 100644
>>>> --- a/src/mesa/main/extensions.c
>>>> +++ b/src/mesa/main/extensions.c
>>>> @@ -319,6 +319,7 @@ static const struct extension extension_table[] = {
>>>>      { "GL_OES_query_matrix",                        o(dummy_true),                                   ES1,       2003 },
>>>>      { "GL_OES_read_format",                         o(dummy_true),                              GL | ES1,       2003 },
>>>>      { "GL_OES_rgb8_rgba8",                          o(dummy_true),                                   ES1 | ES2, 2005 },
>>>> +   { "GL_OES_shader_image_atomic",                 o(OES_shader_image_atomic),                      ES3,       2015 },
>>>>      { "GL_OES_single_precision",                    o(dummy_true),                                   ES1,       2003 },
>>>>      { "GL_OES_standard_derivatives",                o(OES_standard_derivatives),                           ES2, 2005 },
>>>>      { "GL_OES_stencil1",                            o(dummy_false),                     DISABLE,                2005 },
>>>> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
>>>> index 9964fb4..b489f8c 100644
>>>> --- a/src/mesa/main/mtypes.h
>>>> +++ b/src/mesa/main/mtypes.h
>>>> @@ -3970,6 +3970,7 @@ struct gl_extensions
>>>>      GLboolean OES_draw_texture;
>>>>      GLboolean OES_depth_texture_cube_map;
>>>>      GLboolean OES_EGL_image_external;
>>>> +   GLboolean OES_shader_image_atomic;
>>>
>>> Does this add any functionality over ARB_shader_image_load_store? I
>>> guess extension bools are cheap, but... seems unnecessary.
>>
>> Yes and no.  In terms of functionality, all desktop hardware that can do
>> GL_ARB_shader_image_load_store can do this extension.
>
> Yeah, in principle they should, although it might need non-trivial
> driver changes if the hardware doesn't support atomic operations at all
> on floating-point surfaces.  You may need to lie to the hardware and
> pretend that the surface contains integer data.
>
> If we don't expect to have to deal with hardware that can do image loads
> and stores at the GLES 3.1 level but without native support for atomics,
> Ilia may be right and the OES_shader_image_atomic extension enable may
> be redundant.  I'd be fine with removing it, in which case the
> ARB_shader_image_load_store enable would really mean
> MESA_shader_image_load_store, largely equivalent to
> ARB_shader_image_load_store but with the additional atomic built-in
> required for OES_shader_image_atomic support.


I vote for keeping the boolean, this is part of ES32 and extension on 
3.1, I think we might have some more of similar cases when enabling 32.

Reviewed-by: Tapani Palli <tapani.palli at intel.com>


>> However, this extension has one annoying bit of text:
>>
>>      "OpenGL ES 3.1 and GLSL ES 3.10 are required."
>>
>> We may need an ES31 tag.  Right now several drivers support OpenGL ES
>> 3.0, and they could incorrectly advertise this extension.  This may be a
>> transient state, so it may not matter much in the long run.
>>
> Sounds reasonable to me, I'll add an ES31 tag and squash this into this
> commit:
> | --- a/src/mesa/main/extensions.c
> | +++ b/src/mesa/main/extensions.c
> | @@ -319,7 +320,7 @@ static const struct extension extension_table[] = {
> |     { "GL_OES_query_matrix",                        o(dummy_true),                                   ES1,       2003 },
> |     { "GL_OES_read_format",                         o(dummy_true),                              GL | ES1,       2003 },
> |     { "GL_OES_rgb8_rgba8",                          o(dummy_true),                                   ES1 | ES2, 2005 },
> | -   { "GL_OES_shader_image_atomic",                 o(OES_shader_image_atomic),                      ES3,       2015 },
> | +   { "GL_OES_shader_image_atomic",                 o(OES_shader_image_atomic),                            ES31,2015 },
> |     { "GL_OES_single_precision",                    o(dummy_true),                                   ES1,       2003 },
> |     { "GL_OES_standard_derivatives",                o(OES_standard_derivatives),                           ES2, 2005 },
> |     { "GL_OES_stencil1",                            o(dummy_false),                     DISABLE,                2005 },
>
>>>>      GLboolean OES_texture_float;
>>>>      GLboolean OES_texture_float_linear;
>>>>      GLboolean OES_texture_half_float;
>>>> --
>>>> 2.4.6
>>>>
>>>> _______________________________________________
>>>> mesa-dev mailing list
>>>> mesa-dev at lists.freedesktop.org
>>>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>>
>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list