[Mesa-dev] [PATCH 2/4] mesa: validate size parameters for glTexStorage*Multisample

Timothy Arceri t_arceri at yahoo.com.au
Fri Aug 14 15:21:05 PDT 2015


On Fri, 2015-08-14 at 10:43 -0700, Anuj Phogat wrote:
> On Fri, Aug 14, 2015 at 10:30 AM, Anuj Phogat <anuj.phogat at gmail.com> wrote:
> > On Mon, Aug 10, 2015 at 1:06 AM, Tapani Pälli <tapani.palli at intel.com> 
> > wrote:
> > > Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
> > > ---
> > >  src/mesa/main/teximage.c | 28 ++++++++++++++++++++++++++++
> > >  1 file changed, 28 insertions(+)
> > > 
> > > diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
> > > index fc69387..3ea7b2a 100644
> > > --- a/src/mesa/main/teximage.c
> > > +++ b/src/mesa/main/teximage.c
> > > @@ -5782,6 +5782,18 @@ _mesa_TexImage3DMultisample(GLenum target, 
> > > GLsizei samples,
> > >                                     "glTexImage3DMultisample");
> > >  }
> > > 
> > > +static bool
> > > +valid_texstorage_ms_parameters(GLsizei width, GLsizei height, GLsizei 
> > > depth,
> > > +                               GLsizei samples, const char *func)
> > > +{
> > > +   GET_CURRENT_CONTEXT(ctx);
> > > +
> > > +   if (_mesa_tex_storage_invalid_dim(width, height, depth) || samples < 
> > > 1) {
> > > +      _mesa_error(ctx, GL_INVALID_VALUE, "%s()", func);
> > > +      return false;
> > > +   }
> > > +   return true;
> > > +}
> > > 
> > I think samples = 0 is acceptable by the spec. samples < 0 or samples
> > > max_samples is what generate GL_INVALID_VALUE error. samples
> > count check is anyway taken care of by _mesa_check_sample_count()
> > in _mesa_texture_image_multisample(). So, no need of a helper function
> > here. Just do _mesa_valid_tex_storage_dim() checks.
> > 
> Now I noticed that samples = 0 is not acceptable in GLES 3.1 but don't see
> it in GL. Add an ES 3.1 check here.

You seem to have reviewed v1 of the series. Tapani has sent a v2.

The GL 4.5 spec says that samples = 0 is not acceptable for either
*Storage*Multisample or *Image*Multisample. See my comenets on v2 of the
patch.


> 
> > >  void GLAPIENTRY
> > >  _mesa_TexStorage2DMultisample(GLenum target, GLsizei samples,
> > > @@ -5795,6 +5807,10 @@ _mesa_TexStorage2DMultisample(GLenum target, 
> > > GLsizei samples,
> > >     if (!texObj)
> > >        return;
> > > 
> > > +   if (!valid_texstorage_ms_parameters(width, height, 1, samples,
> > > +                                       "glTexStorage2DMultisample"))
> > > +      return;
> > > +
> > >     _mesa_texture_image_multisample(ctx, 2, texObj, target, samples,
> > >                                     internalformat, width, height, 1,
> > >                                     fixedsamplelocations, GL_TRUE,
> > > @@ -5814,6 +5830,10 @@ _mesa_TexStorage3DMultisample(GLenum target, 
> > > GLsizei samples,
> > >     if (!texObj)
> > >        return;
> > > 
> > > +   if (!valid_texstorage_ms_parameters(width, height, depth, samples,
> > > +                                       "glTexStorage3DMultisample"))
> > > +      return;
> > > +
> > >     _mesa_texture_image_multisample(ctx, 3, texObj, target, samples,
> > >                                     internalformat, width, height, 
> > > depth,
> > >                                     fixedsamplelocations, GL_TRUE,
> > > @@ -5834,6 +5854,10 @@ _mesa_TextureStorage2DMultisample(GLuint texture, 
> > > GLsizei samples,
> > >     if (!texObj)
> > >        return;
> > > 
> > > +   if (!valid_texstorage_ms_parameters(width, height, 1, samples,
> > > +                                      
> > >  "glTextureStorage2DMultisample"))
> > > +      return;
> > > +
> > >     _mesa_texture_image_multisample(ctx, 2, texObj, texObj->Target, 
> > > samples,
> > >                                     internalformat, width, height, 1,
> > >                                     fixedsamplelocations, GL_TRUE,
> > > @@ -5855,6 +5879,10 @@ _mesa_TextureStorage3DMultisample(GLuint texture, 
> > > GLsizei samples,
> > >     if (!texObj)
> > >        return;
> > > 
> > > +   if (!valid_texstorage_ms_parameters(width, height, depth, samples,
> > > +                                      
> > >  "glTextureStorage3DMultisample"))
> > > +      return;
> > > +
> > >     _mesa_texture_image_multisample(ctx, 3, texObj, texObj->Target, 
> > > samples,
> > >                                     internalformat, width, height, 
> > > depth,
> > >                                     fixedsamplelocations, GL_TRUE,
> > > --
> > > 2.1.0
> > > 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list