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

Francisco Jerez currojerez at riseup.net
Thu Aug 20 03:41:12 PDT 2015


Tapani Pälli <tapani.palli at intel.com> writes:

> 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>
>
Thanks!

>
>>> 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 212 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150820/9677ac38/attachment.sig>


More information about the mesa-dev mailing list