[Mesa-dev] [PATCH] mesa: Avoid C99 indexed initializers.
Jose Fonseca
jfonseca at vmware.com
Wed Oct 10 06:34:06 PDT 2012
----- Original Message -----
> On Wed, 2012-10-10 at 12:25 +0100, jfonseca at vmware.com wrote:
> > From: José Fonseca <jfonseca at vmware.com>
> >
> > Not supported by MSVC.
> >
> > Just compiled tested.
> > ---
>
> My mistake, I wasn't aware of such limitations
No prob, Imre. Yeah, MSVC has its quirks, but unfortunately we need to support it.
Thanks for the review.
Jose
> and I haven't checked
> whether things work with MSVC. In any case it looks ok:
>
> Reviewed-by: Imre Deak <imre.deak at intel.com>
>
> > src/mesa/main/get_hash_generator.py | 31
> > ++++++++++++++++++++++++++-----
> > src/mesa/main/mtypes.h | 3 +++
> > 2 files changed, 29 insertions(+), 5 deletions(-)
> >
> > diff --git a/src/mesa/main/get_hash_generator.py
> > b/src/mesa/main/get_hash_generator.py
> > index 770093c..4b3f5f4 100644
> > --- a/src/mesa/main/get_hash_generator.py
> > +++ b/src/mesa/main/get_hash_generator.py
> > @@ -61,16 +61,32 @@ def print_params(params):
> > def api_name(api):
> > return "API_OPEN%s" % api
> >
> > +# This must match gl_api enum in src/mesa/main/mtypes.h
> > +api_enum = [
> > + 'GL',
> > + 'GLES',
> > + 'GLES2',
> > + 'GL_CORE',
> > +]
> > +
> > +def api_index(api):
> > + return api_enum.index(api)
> > +
> > def table_name(api):
> > return "table_" + api_name(api)
> >
> > def print_table(api, table):
> > print "static table_t %s = {" % (table_name(api))
> >
> > + # convert sparse (index, value) table into a dense table
> > + dense_table = [0] * hash_table_size
> > + for i, v in table:
> > + dense_table[i] = v
> > +
> > row_size = 4
> > - for i in range(0, len(table), row_size):
> > - row = table[i : i + row_size]
> > - idx_val = ["[%4d] = %4d" % iv for iv in row]
> > + for i in range(0, hash_table_size, row_size):
> > + row = dense_table[i : i + row_size]
> > + idx_val = ["%4d" % v for v in row]
> > print " " * 4 + ", ".join(idx_val) + ","
> >
> > print "};\n"
> > @@ -79,11 +95,16 @@ def print_tables(tables):
> > for table in tables:
> > print_table(table["apis"][0], table["indices"])
> >
> > - print "static table_t *table_set[] = {"
> > + dense_tables = ['NULL'] * len(api_enum)
> > for table in tables:
> > tname = table_name(table["apis"][0])
> > for api in table["apis"]:
> > - print " [%s] = &%s," % (api_name(api), tname)
> > + i = api_index(api)
> > + dense_tables[i] = "&%s" % (tname)
> > +
> > + print "static table_t *table_set[] = {"
> > + for expr in dense_tables:
> > + print " %s," % expr
> > print "};\n"
> >
> > print "#define table(api) (*table_set[api])"
> > diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> > index 40a802f..b154b95 100644
> > --- a/src/mesa/main/mtypes.h
> > +++ b/src/mesa/main/mtypes.h
> > @@ -3334,6 +3334,9 @@ struct gl_debug_state
> >
> > /**
> > * Enum for the OpenGL APIs we know about and may support.
> > + *
> > + * NOTE: This must match the api_enum table in
> > + * src/mesa/main/get_hash_generator.py
> > */
> > typedef enum
> > {
>
>
>
More information about the mesa-dev
mailing list