On 08/13/2015 12:14 PM, Tapani Pälli wrote:
On 08/13/2015 11:54 AM, Timothy Arceri wrote:I've sent a couple of follow-up patches I notice when reviewing this. On Thu, 2015-08-13 at 09:30 +0300, Tapani Pälli wrote:v2: code cleanup Signed-off-by: Tapani Pälli <tapani.pa...@intel.com> --- src/mesa/main/teximage.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index d35dc12..add7438 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, unsigned dims) +{ + GET_CURRENT_CONTEXT(ctx); + + if (_mesa_tex_storage_invalid_dim(width, height, depth) || samples < 1)Rather than do the samples < 1 check here you should move it to _mesa_texture_image_multisample as the spec says "An INVALID_VALUE error is generated ifsamplesis zero." for glTexImage*Multisample too._mesa_texture_image_multisample uses _mesa_check_sample_count() which errors on negative values like some of the functions are specified, I'll need to go through the funcs again to see which one it was but there was inconsistency, some require < 0 and some already error on 0.
It was RenderbufferStorageMultisample that should error on < 0, I guess nothing else (?) It could use it's own check and rest could use generic sample check. Would need to see also what possible Piglit tests for these are expecting and correct those if they are according to old specs.
With that change you could change all the calls below to something like if (_mesa_tex_storage_invalid_dim(width, height, depth)) { _mesa_error(ctx, GL_INVALID_VALUE, "glTexStorage2DMultisample()" return; }{ + _mesa_error(ctx, GL_INVALID_VALUE, "glTexStorage%uDMultisample()", dims); + return false; + } + return true; +} void GLAPIENTRY _mesa_TexStorage2DMultisample(GLenum target, GLsizei samples, @@ -5795,6 +5807,9 @@ _mesa_TexStorage2DMultisample(GLenum target, GLsizei samples, if (!texObj) return; + if (!valid_texstorage_ms_parameters(width, height, 1, samples, 2)) + return; + _mesa_texture_image_multisample(ctx, 2, texObj, target, samples, internalformat, width, height, 1, fixedsamplelocations, GL_TRUE, @@ -5814,6 +5829,9 @@ _mesa_TexStorage3DMultisample(GLenum target, GLsizei samples, if (!texObj) return; + if (!valid_texstorage_ms_parameters(width, height, depth, samples, 3)) + return; + _mesa_texture_image_multisample(ctx, 3, texObj, target, samples, internalformat, width, height, depth, fixedsamplelocations, GL_TRUE, @@ -5834,6 +5852,9 @@ _mesa_TextureStorage2DMultisample(GLuint texture, GLsizei samples, if (!texObj) return; + if (!valid_texstorage_ms_parameters(width, height, 1, samples, 2)) + return; + _mesa_texture_image_multisample(ctx, 2, texObj, texObj->Target, samples, internalformat, width, height, 1, fixedsamplelocations, GL_TRUE, @@ -5855,6 +5876,9 @@ _mesa_TextureStorage3DMultisample(GLuint texture, GLsizei samples, if (!texObj) return; + if (!valid_texstorage_ms_parameters(width, height, depth, samples, 3)) + return; + _mesa_texture_image_multisample(ctx, 3, texObj, texObj->Target, samples, internalformat, width, height, depth, fixedsamplelocations, GL_TRUE,_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev