[Mesa-dev] [PATCH] mesa: Avoid C99 indexed initializers.
Imre Deak
imre.deak at intel.com
Wed Oct 10 06:31:44 PDT 2012
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 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