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

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


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.

  -ilia


More information about the mesa-dev mailing list