[Mesa-dev] [PATCH 1/6] mesa: add ARB_enhanced_layouts
Emil Velikov
emil.l.velikov at gmail.com
Sun Nov 8 04:03:04 PST 2015
Hi Tim,
On 6 November 2015 at 21:09, Timothy Arceri <t_arceri at yahoo.com.au> wrote:
> On Fri, 2015-11-06 at 13:02 +0000, Emil Velikov wrote:
>> Hi Tim,
>>
>> A few comments below
>>
>> On 5 November 2015 at 11:17, Timothy Arceri <t_arceri at yahoo.com.au> wrote:
>> > From: Timothy Arceri <timothy.arceri at collabora.com>
>> >
>> > Set to dummy_false until the remaining features are added.
>> > ---
>> > src/glsl/glcpp/glcpp-parse.y | 1 +
>> > src/glsl/glsl_parser_extras.cpp | 1 +
>> > src/glsl/glsl_parser_extras.h | 2 ++
>> > src/mesa/main/extensions.c | 1 +
>> > 4 files changed, 5 insertions(+)
>> >
>> > diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y
>> > index 4acccf7..6aa7abe 100644
>> > --- a/src/glsl/glcpp/glcpp-parse.y
>> > +++ b/src/glsl/glcpp/glcpp-parse.y
>> > @@ -2387,6 +2387,7 @@
>> > _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t
>> > versio
>> > }
>> > } else {
>> > add_builtin_define(parser, "GL_ARB_draw_buffers", 1);
>> > + add_builtin_define(parser, "GL_ARB_enhanced_layouts", 1);
>> > add_builtin_define(parser, "GL_ARB_separate_shader_objects",
>> > 1);
>> > add_builtin_define(parser, "GL_ARB_texture_rectangle", 1);
>> > add_builtin_define(parser, "GL_AMD_shader_trinary_minmax", 1);
>> > diff --git a/src/glsl/glsl_parser_extras.cpp
>> > b/src/glsl/glsl_parser_extras.cpp
>> > index 14cb9fc..be344d6 100644
>> > --- a/src/glsl/glsl_parser_extras.cpp
>> > +++ b/src/glsl/glsl_parser_extras.cpp
>> > @@ -594,6 +594,7 @@ static const _mesa_glsl_extension
>> > _mesa_glsl_supported_extensions[] = {
>> > EXT(ARB_derivative_control, true, false,
>> > ARB_derivative_control),
>> > EXT(ARB_draw_buffers, true, false, dummy_true),
>> > EXT(ARB_draw_instanced, true, false,
>> > ARB_draw_instanced),
>> > + EXT(ARB_enhanced_layouts, true, false, dummy_true),
>> > EXT(ARB_explicit_attrib_location, true, false,
>> > ARB_explicit_attrib_location),
>> > EXT(ARB_explicit_uniform_location, true, false,
>> > ARB_explicit_uniform_location),
>> > EXT(ARB_fragment_coord_conventions, true, false,
>> > ARB_fragment_coord_conventions),
>> > diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h
>> > index b54c535..684b917 100644
>> > --- a/src/glsl/glsl_parser_extras.h
>> > +++ b/src/glsl/glsl_parser_extras.h
>> > @@ -499,6 +499,8 @@ struct _mesa_glsl_parse_state {
>> > bool ARB_draw_buffers_warn;
>> > bool ARB_draw_instanced_enable;
>> > bool ARB_draw_instanced_warn;
>> > + bool ARB_enhanced_layouts_enable;
>> > + bool ARB_enhanced_layouts_warn;
>> > bool ARB_explicit_attrib_location_enable;
>> > bool ARB_explicit_attrib_location_warn;
>> > bool ARB_explicit_uniform_location_enable;
>> > diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
>> > index bdc6817..b8556aa 100644
>> > --- a/src/mesa/main/extensions.c
>> > +++ b/src/mesa/main/extensions.c
>> > @@ -111,6 +111,7 @@ static const struct extension extension_table[] = {
>> > { "GL_ARB_draw_elements_base_vertex",
>> > o(ARB_draw_elements_base_vertex), GL, 2009 },
>> > { "GL_ARB_draw_indirect", o(ARB_draw_indirect),
>> > GLC, 2010 },
>> > { "GL_ARB_draw_instanced", o(ARB_draw_instanced),
>> > GL, 2008 },
>> > + { "GL_ARB_enhanced_layouts", o(dummy_false),
>> > GLC, 2013 },
>> > { "GL_ARB_explicit_attrib_location",
>> > o(ARB_explicit_attrib_location), GL, 2009 },
>> > { "GL_ARB_explicit_uniform_location",
>> > o(ARB_explicit_uniform_location), GL, 2012 },
>> > { "GL_ARB_fragment_coord_conventions",
>> > o(ARB_fragment_coord_conventions), GL, 2009 },
>> Please add gl_extensions::ARB_enhanced_layouts and use it in the above
>> two tables. Otherwise the extension override won't work.
>
> Are you sure? MESA_EXTENSION_OVERRIDE=GL_ARB_enhanced_layouts has been working
> for my testing without it.
>
>From what I recall is that (as I was trying to use this for explicit
offsets) _mesa_glsl_extension::compatible_with_state() was failing as,
it directly dives into gl_extensions, and with the above it was
constantly reading the dummy_false.
Fwiw I would follow the approach set by other extensions - add it for
now and nuke it as/if needed.
-Emil
More information about the mesa-dev
mailing list