[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