[Mesa-dev] [PATCH 23/25] glsl: Implement the required built-in functions when OES_shader_image_atomic is enabled.

Jose Fonseca jfonseca at vmware.com
Wed Aug 26 10:28:56 PDT 2015


On 17/08/15 18:14, Matt Turner wrote:
> On Mon, Aug 17, 2015 at 9:46 AM, Francisco Jerez <currojerez at riseup.net> wrote:
>> This is basically just the same atomic functions exposed by
>> ARB_shader_image_load_store, with one exception:
>>
>>      "highp float imageAtomicExchange(
>>           coherent IMAGE_PARAMS,
>>           float data);"
>>
>> There's no float atomic exchange overload in the original
>> ARB_shader_image_load_store or GL 4.2, so this seems like new
>> functionality that requires specific back-end support and a separate
>> availability condition in the built-in function generator.
>> ---
>>   src/glsl/builtin_functions.cpp | 25 ++++++++++++++++++++-----
>>   1 file changed, 20 insertions(+), 5 deletions(-)
>>
>> diff --git a/src/glsl/builtin_functions.cpp b/src/glsl/builtin_functions.cpp
>> index c53858e..444d0ee 100644
>> --- a/src/glsl/builtin_functions.cpp
>> +++ b/src/glsl/builtin_functions.cpp
>> @@ -401,8 +401,16 @@ shader_image_load_store(const _mesa_glsl_parse_state *state)
>>   static bool
>>   shader_image_atomic(const _mesa_glsl_parse_state *state)
>>   {
>> -   return (state->is_version(420, 0) ||
>> -           state->ARB_shader_image_load_store_enable);
>> +   return (state->is_version(420, 320) ||
>> +           state->ARB_shader_image_load_store_enable ||
>> +           state->OES_shader_image_atomic_enable);
>> +}
>> +
>> +static bool
>> +shader_image_atomic_exchange_float(const _mesa_glsl_parse_state *state)
>> +{
>> +   return (state->is_version(450, 320) ||
>> +           state->OES_shader_image_atomic_enable);
>>   }
>>
>>   static bool
>> @@ -506,7 +514,8 @@ private:
>>         IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE = (1 << 3),
>>         IMAGE_FUNCTION_READ_ONLY = (1 << 4),
>>         IMAGE_FUNCTION_WRITE_ONLY = (1 << 5),
>> -      IMAGE_FUNCTION_AVAIL_ATOMIC = (1 << 6)
>> +      IMAGE_FUNCTION_AVAIL_ATOMIC = (1 << 6),
>> +      IMAGE_FUNCTION_AVAIL_ATOMIC_EXCHANGE = (1 << 7)
>
> I wonder if MSVC is okay with a trailing comma here?
>

Yes, MSVC is OK with additional commas on enums.

Jose

PS: I was on PTO last week and I'm still catching up on email.



More information about the mesa-dev mailing list