[Mesa-dev] [PATCH 12/13] mesa: Support querying GL_MAX_ELEMENT_INDEX in ES 3

Ian Romanick idr at freedesktop.org
Tue Dec 11 11:00:47 PST 2012


On 12/10/2012 02:28 PM, Matt Turner wrote:
> The ES 3 spec says that the minumum allowable value is 2^24-1, but the
> GL 4.3 and ARB_ES3_compatibility specs require 2^32-1, so return 2^32-1.
>
> Fixes es3conform's element_index_uint_constants test.
> ---
>   src/mesa/main/context.c          |    3 +++
>   src/mesa/main/get.c              |    1 +
>   src/mesa/main/get_hash_params.py |    3 +++
>   src/mesa/main/mtypes.h           |    3 +++
>   4 files changed, 10 insertions(+), 0 deletions(-)
>
> diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
> index fc2db12..241a1f9 100644
> --- a/src/mesa/main/context.c
> +++ b/src/mesa/main/context.c
> @@ -656,6 +656,9 @@ _mesa_init_constants(struct gl_context *ctx)
>
>      /* PrimitiveRestart */
>      ctx->Const.PrimitiveRestartInSoftware = GL_FALSE;
> +
> +   /* ES 3.0 or ARB_ES3_compatibility */
> +   ctx->Const.MaxElementIndex = UINT_MAX;

This should explicitly be 0x0ffffffff.  It is possible for UINT_MAX to 
have some other value.  It seems like madness these days, but stranger 
things have happened.

>   }
>
>
> diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
> index 115d3c5..c7f8ada 100644
> --- a/src/mesa/main/get.c
> +++ b/src/mesa/main/get.c
> @@ -304,6 +304,7 @@ static const int extra_ARB_uniform_buffer_object_and_geometry_shader[] = {
>
>
>   EXTRA_EXT(ARB_ES2_compatibility);
> +EXTRA_EXT(ARB_ES3_compatibility);
>   EXTRA_EXT(ARB_texture_cube_map);
>   EXTRA_EXT(MESA_texture_array);
>   EXTRA_EXT2(EXT_secondary_color, ARB_vertex_program);
> diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py
> index d0e8a76..cb58394 100644
> --- a/src/mesa/main/get_hash_params.py
> +++ b/src/mesa/main/get_hash_params.py
> @@ -321,6 +321,9 @@ descriptor=[
>
>   # Enums in  OpenGL and ES 3.0
>   { "apis": ["GL", "GL_CORE", "GLES3"], "params": [
> +# GL_ARB_ES3_compatibility
> +  [ "MAX_ELEMENT_INDEX", "CONTEXT_INT64(Const.MaxElementIndex), extra_ARB_ES3_compatibility"],
> +
>   # GL_ARB_fragment_shader
>     [ "MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB", "CONTEXT_INT(Const.FragmentProgram.MaxUniformComponents), extra_ARB_fragment_shader" ],
>
> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> index bd180a5..c9bef15 100644
> --- a/src/mesa/main/mtypes.h
> +++ b/src/mesa/main/mtypes.h
> @@ -2940,6 +2940,9 @@ struct gl_constants
>
>      /** GL_ARB_map_buffer_alignment */
>      GLuint MinMapBufferAlignment;
> +
> +   /** ES 3.0 or GL_ARB_ES3_compatibility */
> +   GLint64 MaxElementIndex;

In addition to Brian's comment, I'm not a huge fan of the way we comment 
structure fields like this.  I'd much rather see some description of 
what the field means than what extension it is for.  Something like:

    /**
     * Maximum value supported for an index in DrawElements and friends.
     *
     * This must be at least (1ull<<24)-1.  The default value is
     * (1ull<<32)-1.
     *
     * \since ES 3.0 or GL_ARB_ES3_compatibility
     * \sa _mesa_init_constants
     */

>   };
>
>
>



More information about the mesa-dev mailing list