[Mesa-dev] [PATCH 01/13] Add ES 3 handling to get.c and get_hash_generator.py
Ian Romanick
idr at freedesktop.org
Tue Dec 11 11:15:29 PST 2012
On 12/10/2012 02:28 PM, Matt Turner wrote:
Other than the comments on 6, 11, and 12, the series is
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
> ---
> src/mesa/main/get.c | 16 ++++++++++++++++
> src/mesa/main/get_hash_generator.py | 8 +++++++-
> src/mesa/main/mtypes.h | 1 +
> 3 files changed, 24 insertions(+), 1 deletions(-)
>
> diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
> index cd239a6..146612c 100644
> --- a/src/mesa/main/get.c
> +++ b/src/mesa/main/get.c
> @@ -130,6 +130,7 @@ enum value_extra {
> EXTRA_VERSION_32,
> EXTRA_API_GL,
> EXTRA_API_ES2,
> + EXTRA_API_ES3,
> EXTRA_NEW_BUFFERS,
> EXTRA_NEW_FRAG_CLAMP,
> EXTRA_VALID_DRAW_BUFFER,
> @@ -873,6 +874,12 @@ check_extra(struct gl_context *ctx, const char *func, const struct value_desc *d
> enabled++;
> }
> break;
> + case EXTRA_API_ES3:
> + if (_mesa_is_gles3(ctx)) {
> + total++;
> + enabled++;
> + }
> + break;
> case EXTRA_API_GL:
> if (_mesa_is_desktop_gl(ctx)) {
> total++;
> @@ -966,6 +973,15 @@ find_value(const char *func, GLenum pname, void **p, union value *v)
> int api;
>
> api = ctx->API;
> + /* We index into the table_set[] list of per-API hash tables using the API's
> + * value in the gl_api enum. Since GLES 3 doesn't have an API_OPENGL* enum
> + * value since it's compatible with GLES2 its entry in table_set[] is at the
> + * end.
> + */
> + STATIC_ASSERT(Elements(table_set) == API_OPENGL_LAST + 2);
> + if (_mesa_is_gles3(ctx)) {
> + api = API_OPENGL_LAST + 1;
> + }
> mask = Elements(table(api)) - 1;
> hash = (pname * prime_factor);
> while (1) {
> diff --git a/src/mesa/main/get_hash_generator.py b/src/mesa/main/get_hash_generator.py
> index 4b3f5f4..04bf9ff 100644
> --- a/src/mesa/main/get_hash_generator.py
> +++ b/src/mesa/main/get_hash_generator.py
> @@ -44,7 +44,7 @@ prime_factor = 89
> prime_step = 281
> hash_table_size = 1024
>
> -gl_apis=set(["GL", "GL_CORE", "GLES", "GLES2"])
> +gl_apis=set(["GL", "GL_CORE", "GLES", "GLES2", "GLES3"])
>
> def print_header():
> print "typedef const unsigned short table_t[%d];\n" % (hash_table_size)
> @@ -67,6 +67,7 @@ api_enum = [
> 'GLES',
> 'GLES2',
> 'GL_CORE',
> + 'GLES3', # Not in gl_api enum in mtypes.h
> ]
>
> def api_index(api):
> @@ -166,6 +167,9 @@ def generate_hash_tables(enum_list, enabled_apis, param_descriptors):
>
> for api in valid_apis:
> add_to_hash_table(tables[api], hash_val, len(params))
> + # Also add GLES2 items to the GLES3 hash table
> + if api == "GLES2":
> + add_to_hash_table(tables["GLES3"], hash_val, len(params))
>
> params.append(["GL_" + enum_name, param[1]])
>
> @@ -183,6 +187,8 @@ def opt_to_apis(feature):
> apis = set([_map[feature]])
> if "GL" in apis:
> apis.add("GL_CORE")
> + if "GLES2" in apis:
> + apis.add("GLES3")
>
> return apis
>
> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> index 57dddf8..bd180a5 100644
> --- a/src/mesa/main/mtypes.h
> +++ b/src/mesa/main/mtypes.h
> @@ -3335,6 +3335,7 @@ typedef enum
> API_OPENGLES,
> API_OPENGLES2,
> API_OPENGL_CORE,
> + API_OPENGL_LAST = API_OPENGL_CORE,
> } gl_api;
>
> /**
>
More information about the mesa-dev
mailing list