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

Tapani Pälli tapani.palli at intel.com
Mon Aug 10 02:48:32 PDT 2015



On 08/10/2015 12:04 PM, Timothy Arceri wrote:
> 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?

I would personally prefer to have the check only in one place.

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

Yep, I can change this.

>>
>>   /**
>>    * 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