[Mesa-dev] [PATCH 1/4] mesa: expose dimension check for glTex*Storage functions

Timothy Arceri t_arceri at yahoo.com.au
Mon Aug 10 02:04:19 PDT 2015


On Mon, 2015-08-10 at 11:06 +0300, Tapani Pälli wrote:
> This is done so that following patch can use it to verify dimenstions
> for multisample variants of glTex*Storage.
> 
> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
> ---
>  src/mesa/main/texstorage.c | 22 +++++++++++++++++++++-
>  src/mesa/main/texstorage.h |  3 +++
>  2 files changed, 24 insertions(+), 1 deletion(-)
> 
> diff --git a/src/mesa/main/texstorage.c b/src/mesa/main/texstorage.c
> index 4a2cc60..9a321cc 100644
> --- a/src/mesa/main/texstorage.c
> +++ b/src/mesa/main/texstorage.c
> @@ -266,6 +266,26 @@ _mesa_AllocTextureStorage_sw(struct gl_context *ctx,
>     return GL_TRUE;
>  }
>  
> +/**
> + * Texture width, height and depth check shared with the
> + * multisample variants of TexStorage functions.
> + *
> + * From OpenGL 4.5 Core spec, page 260 (section 8.19)
> + *
> + *     "An INVALID_VALUE error is generated if width, height, depth
> + *     or levels are less than 1, for commands with the corresponding
> + *     parameters."
> + *
> + * (referring to TextureStorage* commands, these also match values
> + * specified for OpenGL ES 3.1.)
> + */
> +GLboolean
> +_mesa_tex_storage_invalid_dim(GLsizei width, GLsizei height, GLsizei depth)
> +{
> +   if (width < 1 || height < 1 || depth < 1)
> +      return true;
> +   return false;
> +}

Since its only used in one other place I'm not sure if this is an improvement
over just using width < 1 || height < 1 || depth < 1 in the next patch. Or is
this used elsewhere in your branch?

It would probably make sense to move it to texstorage.h and inline it.

>  
>  /**
>   * Do error checking for calls to glTexStorage1/2/3D().
> @@ -287,7 +307,7 @@ tex_storage_error_check(struct gl_context *ctx,
>      * order to allow meta functions to use legacy formats. */
>  
>     /* size check */
> -   if (width < 1 || height < 1 || depth < 1) {
> +   if (_mesa_tex_storage_invalid_dim(width, height, depth)) {
>        _mesa_error(ctx, GL_INVALID_VALUE,
>                    "glTex%sStorage%uD(width, height or depth < 1)",
>                    suffix, dims);
> diff --git a/src/mesa/main/texstorage.h b/src/mesa/main/texstorage.h
> index 6f5495f..62108a8 100644
> --- a/src/mesa/main/texstorage.h
> +++ b/src/mesa/main/texstorage.h
> @@ -98,4 +98,7 @@ _mesa_AllocTextureStorage_sw(struct gl_context *ctx,
>                               GLsizei levels, GLsizei width,
>                               GLsizei height, GLsizei depth);
>  
> +extern GLboolean
> +_mesa_tex_storage_invalid_dim(GLsizei width, GLsizei height, GLsizei 
> depth);
> +
>  #endif /* TEXSTORAGE_H */


More information about the mesa-dev mailing list