[Mesa-dev] [PATCH] Add NV_fragment_shader_interlock support.
Manolova, Plamena
plamena.manolova at intel.com
Tue Aug 21 09:06:09 UTC 2018
Sure thing!
-Pam
On Mon, Aug 20, 2018 at 3:25 PM, Kevin Rogovin <kevin.rogovin at gmail.com>
wrote:
> Hi Plamena,
>
> Thankyou for the fast review. Can you push it or have someone push it? (I
> do not have push rights)
>
> -Keviv
>
> On Mon, Aug 20, 2018 at 2:50 PM, Manolova, Plamena <
> plamena.manolova at intel.com> wrote:
>
>> Hi Kevin,
>> This looks good to me :)
>>
>> Reviewed-by: Plamena Manolova <plamena.manolova at intel.com>
>>
>> On Wed, Aug 15, 2018 at 2:29 PM, <kevin.rogovin at intel.com> wrote:
>>
>>> From: Kevin Rogovin <kevin.rogovin at gmail.com>
>>>
>>> The main purpose for having NV_fragment_shader_interlock
>>> extension is because that extension is also for GLES31 while
>>> the ARB extension is for GL only.
>>> ---
>>> src/compiler/glsl/builtin_functions.cpp | 18 ++++++++++++++++++
>>> src/compiler/glsl/glsl_parser.yy | 6 ++++--
>>> src/compiler/glsl/glsl_parser_extras.cpp | 1 +
>>> src/compiler/glsl/glsl_parser_extras.h | 2 ++
>>> src/mesa/main/extensions_table.h | 1 +
>>> 5 files changed, 26 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/src/compiler/glsl/builtin_functions.cpp
>>> b/src/compiler/glsl/builtin_functions.cpp
>>> index 7119903795..e7b78c0158 100644
>>> --- a/src/compiler/glsl/builtin_functions.cpp
>>> +++ b/src/compiler/glsl/builtin_functions.cpp
>>> @@ -519,6 +519,12 @@ supports_arb_fragment_shader_interlock(const
>>> _mesa_glsl_parse_state *state)
>>> return state->ARB_fragment_shader_interlock_enable;
>>> }
>>>
>>> +static bool
>>> +supports_nv_fragment_shader_interlock(const _mesa_glsl_parse_state
>>> *state)
>>> +{
>>> + return state->NV_fragment_shader_interlock_enable;
>>> +}
>>> +
>>> static bool
>>> shader_clock(const _mesa_glsl_parse_state *state)
>>> {
>>> @@ -3331,6 +3337,18 @@ builtin_builder::create_builtins()
>>> supports_arb_fragment_shader_interlock),
>>> NULL);
>>>
>>> + add_function("beginInvocationInterlockNV",
>>> + _invocation_interlock(
>>> + "__intrinsic_begin_invocation_interlock",
>>> + supports_nv_fragment_shader_interlock),
>>> + NULL);
>>> +
>>> + add_function("endInvocationInterlockNV",
>>> + _invocation_interlock(
>>> + "__intrinsic_end_invocation_interlock",
>>> + supports_nv_fragment_shader_interlock),
>>> + NULL);
>>> +
>>> add_function("anyInvocationARB",
>>> _vote("__intrinsic_vote_any", vote),
>>> NULL);
>>> diff --git a/src/compiler/glsl/glsl_parser.yy
>>> b/src/compiler/glsl/glsl_parser.yy
>>> index cb7376995d..bc2571b684 100644
>>> --- a/src/compiler/glsl/glsl_parser.yy
>>> +++ b/src/compiler/glsl/glsl_parser.yy
>>> @@ -1450,10 +1450,12 @@ layout_qualifier_id:
>>> "only valid in fragment shader input layout
>>> declaration.");
>>> } else if (pixel_interlock_ordered + pixel_interlock_unordered +
>>> sample_interlock_ordered + sample_interlock_unordered
>>> > 0 &&
>>> - !state->ARB_fragment_shader_interlock_enable) {
>>> + !state->ARB_fragment_shader_interlock_enable &&
>>> + !state->NV_fragment_shader_interlock_enable) {
>>> _mesa_glsl_error(& @1, state,
>>> "interlock layout qualifier present, but the "
>>> - "GL_ARB_fragment_shader_interlock extension
>>> is not "
>>> + "GL_ARB_fragment_shader_interlock or "
>>> + "GL_NV_fragment_shader_interlock extension
>>> is not "
>>> "enabled.");
>>> } else {
>>> $$.flags.q.pixel_interlock_ordered = pixel_interlock_ordered;
>>> diff --git a/src/compiler/glsl/glsl_parser_extras.cpp
>>> b/src/compiler/glsl/glsl_parser_extras.cpp
>>> index 6d92f24ea2..393942b62c 100644
>>> --- a/src/compiler/glsl/glsl_parser_extras.cpp
>>> +++ b/src/compiler/glsl/glsl_parser_extras.cpp
>>> @@ -724,6 +724,7 @@ static const _mesa_glsl_extension
>>> _mesa_glsl_supported_extensions[] = {
>>> EXT_AEP(EXT_texture_cube_map_array),
>>> EXT(INTEL_conservative_rasterization),
>>> EXT(MESA_shader_integer_functions),
>>> + EXT(NV_fragment_shader_interlock),
>>> EXT(NV_image_formats),
>>> };
>>>
>>> diff --git a/src/compiler/glsl/glsl_parser_extras.h
>>> b/src/compiler/glsl/glsl_parser_extras.h
>>> index 59a173418b..3b17b54f0a 100644
>>> --- a/src/compiler/glsl/glsl_parser_extras.h
>>> +++ b/src/compiler/glsl/glsl_parser_extras.h
>>> @@ -810,6 +810,8 @@ struct _mesa_glsl_parse_state {
>>> bool INTEL_conservative_rasterization_warn;
>>> bool MESA_shader_integer_functions_enable;
>>> bool MESA_shader_integer_functions_warn;
>>> + bool NV_fragment_shader_interlock_enable;
>>> + bool NV_fragment_shader_interlock_warn;
>>> bool NV_image_formats_enable;
>>> bool NV_image_formats_warn;
>>> /*@}*/
>>> diff --git a/src/mesa/main/extensions_table.h
>>> b/src/mesa/main/extensions_table.h
>>> index af5ce118da..746e821886 100644
>>> --- a/src/mesa/main/extensions_table.h
>>> +++ b/src/mesa/main/extensions_table.h
>>> @@ -346,6 +346,7 @@ EXT(NV_draw_buffers ,
>>> dummy_true
>>> EXT(NV_fbo_color_attachments , dummy_true
>>> , x , x , x , ES2, 2010)
>>> EXT(NV_fill_rectangle , NV_fill_rectangle
>>> , GLL, GLC, x , x , 2015)
>>> EXT(NV_fog_distance , NV_fog_distance
>>> , GLL, x , x , x , 2001)
>>> +EXT(NV_fragment_shader_interlock ,
>>> ARB_fragment_shader_interlock , GLL, GLC, x , 31, 2015)
>>> EXT(NV_image_formats ,
>>> ARB_shader_image_load_store , x , x , x , 31, 2014)
>>> EXT(NV_light_max_exponent , dummy_true
>>> , GLL, x , x , x , 1999)
>>> EXT(NV_packed_depth_stencil , dummy_true
>>> , GLL, GLC, x , x , 2000)
>>> --
>>> 2.17.1
>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180821/3db4ba56/attachment-0001.html>
More information about the mesa-dev
mailing list