[Mesa-dev] [PATCH] glsl: reuse main extension table to appropriate restrict extensions

Ilia Mirkin imirkin at alum.mit.edu
Mon Jun 13 16:43:48 UTC 2016


On Mon, Jun 13, 2016 at 12:39 PM, Nanley Chery <nanleychery at gmail.com> wrote:
>
>
> On Mon, Jun 13, 2016 at 9:16 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>>
>> On Mon, Jun 13, 2016 at 12:11 PM, Emil Velikov <emil.l.velikov at gmail.com>
>> wrote:
>> > Hi Ilia,
>> >
>> > On 13 June 2016 at 00:23, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>> >
>> >> @@ -81,6 +81,7 @@ MAIN_FILES = \
>> >>         main/execmem.c \
>> >>         main/extensions.c \
>> >>         main/extensions.h \
>> >> +       main/extensions_table.c \
>> > From a build perspective everything looks amazing. Thank you !
>>
>> Thanks for checking.
>>
>> >
>> >
>> >> --- a/src/mesa/main/extensions.c
>> >> +++ b/src/mesa/main/extensions.c
>> >> @@ -49,25 +49,15 @@ static char *extra_extensions = NULL;
>> >>  #define o(x) offsetof(struct gl_extensions, x)
>> >>
>> >>
>> >> -/**
>> >> - * \brief Table of supported OpenGL extensions for all API's.
>> >> - */
>> >> -const struct mesa_extension _mesa_extension_table[] = {
>> >> +static bool extension_table_size[] = {
>> >>  #define EXT(name_str, driver_cap, gll_ver, glc_ver, gles_ver,
>> >> gles2_ver, yyyy) \
>> >> -        { .name = "GL_" #name_str, .offset = o(driver_cap), \
>> >> -          .version = { \
>> >> -            [API_OPENGL_COMPAT] = gll_ver, \
>> >> -            [API_OPENGL_CORE]   = glc_ver, \
>> >> -            [API_OPENGLES]      = gles_ver, \
>> >> -            [API_OPENGLES2]     = gles2_ver, \
>> >> -           }, \
>> >> -           .year = yyyy \
>> >> -        },
>> >> +   0,
>> >> +
>> >>  #include "extensions_table.h"
>> >>  #undef EXT
>> >>  };
>> >>
>> > An alternative idea to the one proposed by Eric:
>> > Explicitly set the array size (ideally as a macro in the relevant
>> > header) and use that instead of having a dummy array, only to know the
>> > array size.
>>
>> I couldn't come up with a non-horrible way of doing that. Are you
>> basically suggesting I add a
>>
>> #define EXTENSIONS_COUNT 10000
>>
>> in extensions_table.h, and expect someone to increment it every time
>> an extension was being added?
>>
>> I guess it could be enforced via a STATIC_ASSERT in the new
>> extensions_table.c, but it feels really dirty. I guess a cleverer
>> thing would be to count by doing something horrible for the compiler,
>> e.g.
>>
>> static const int foo = 0 +1+1+1+1+1+1......
>>
>> Probably nicer than my array of 0's though. Open to other ideas.
>>
>
> You can add an entry to the end of the enum defined in extensions.h called
> "MESA_EXTENSION_COUNT"  or similar.

Duh. Of course. Much better!


More information about the mesa-dev mailing list