[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