Hi Kevin, This looks good to me :) Reviewed-by: Plamena Manolova <plamena.manol...@intel.com>
On Wed, Aug 15, 2018 at 2:29 PM, <kevin.rogo...@intel.com> wrote: > From: Kevin Rogovin <kevin.rogo...@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@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev