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.roman...@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; /**
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev