On Mon, Jan 30, 2012 at 12:52 PM, Anuj Phogat <anuj.pho...@gmail.com> wrote: > width, height parameter of glTexImage2D() includes: texture image > width + 2 * border (if any). So when doing the texture size check > in _mesa_test_proxy_teximage() width and height should not exceed > maximum supported size for target texture type + 2 * border. > i.e. 1 << (ctx->Const.MaxTextureLevels - 1) + 2 * border > > Texture border is anyway stripped out before it is given to intel > hardware driver. > > This patch fixes Intel oglconform test case: max_values > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44970 > > Note: This is a candidate for mesa 8.0 branch. > > Signed-off-by: Anuj Phogat <anuj.pho...@gmail.com> > --- > Made the changes as per comments by Jose. This patch fixes the > segfault issue on intel h/w. I'll soon add a piglit testcase > which tests this patch. > > src/mesa/main/teximage.c | 22 +++++++++++----------- > 1 files changed, 11 insertions(+), 11 deletions(-) > > diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c > index d11425d..1b45d66 100644 > --- a/src/mesa/main/teximage.c > +++ b/src/mesa/main/teximage.c > @@ -1179,7 +1179,7 @@ _mesa_test_proxy_teximage(struct gl_context *ctx, > GLenum target, GLint level, > switch (target) { > case GL_PROXY_TEXTURE_1D: > maxSize = 1 << (ctx->Const.MaxTextureLevels - 1); > - if (width < 2 * border || width > 2 + maxSize) > + if (width < 2 * border || width > 2 * border + maxSize) > return GL_FALSE; > if (level >= ctx->Const.MaxTextureLevels) > return GL_FALSE; > @@ -1191,9 +1191,9 @@ _mesa_test_proxy_teximage(struct gl_context *ctx, > GLenum target, GLint level, > > case GL_PROXY_TEXTURE_2D: > maxSize = 1 << (ctx->Const.MaxTextureLevels - 1); > - if (width < 2 * border || width > 2 + maxSize) > + if (width < 2 * border || width > 2 * border + maxSize) > return GL_FALSE; > - if (height < 2 * border || height > 2 + maxSize) > + if (height < 2 * border || height > 2 * border + maxSize) > return GL_FALSE; > if (level >= ctx->Const.MaxTextureLevels) > return GL_FALSE; > @@ -1207,11 +1207,11 @@ _mesa_test_proxy_teximage(struct gl_context *ctx, > GLenum target, GLint level, > > case GL_PROXY_TEXTURE_3D: > maxSize = 1 << (ctx->Const.Max3DTextureLevels - 1); > - if (width < 2 * border || width > 2 + maxSize) > + if (width < 2 * border || width > 2 * border + maxSize) > return GL_FALSE; > - if (height < 2 * border || height > 2 + maxSize) > + if (height < 2 * border || height > 2 * border + maxSize) > return GL_FALSE; > - if (depth < 2 * border || depth > 2 + maxSize) > + if (depth < 2 * border || depth > 2 * border + maxSize) > return GL_FALSE; > if (level >= ctx->Const.Max3DTextureLevels) > return GL_FALSE; > @@ -1237,9 +1237,9 @@ _mesa_test_proxy_teximage(struct gl_context *ctx, > GLenum target, GLint level, > > case GL_PROXY_TEXTURE_CUBE_MAP_ARB: > maxSize = 1 << (ctx->Const.MaxCubeTextureLevels - 1); > - if (width < 2 * border || width > 2 + maxSize) > + if (width < 2 * border || width > 2 * border + maxSize) > return GL_FALSE; > - if (height < 2 * border || height > 2 + maxSize) > + if (height < 2 * border || height > 2 * border + maxSize) > return GL_FALSE; > if (level >= ctx->Const.MaxCubeTextureLevels) > return GL_FALSE; > @@ -1253,7 +1253,7 @@ _mesa_test_proxy_teximage(struct gl_context *ctx, > GLenum target, GLint level, > > case GL_PROXY_TEXTURE_1D_ARRAY_EXT: > maxSize = 1 << (ctx->Const.MaxTextureLevels - 1); > - if (width < 2 * border || width > 2 + maxSize) > + if (width < 2 * border || width > 2 * border + maxSize) > return GL_FALSE; > if (height < 1 || height > ctx->Const.MaxArrayTextureLayers) > return GL_FALSE; > @@ -1267,9 +1267,9 @@ _mesa_test_proxy_teximage(struct gl_context *ctx, > GLenum target, GLint level, > > case GL_PROXY_TEXTURE_2D_ARRAY_EXT: > maxSize = 1 << (ctx->Const.MaxTextureLevels - 1); > - if (width < 2 * border || width > 2 + maxSize) > + if (width < 2 * border || width > 2 * border + maxSize) > return GL_FALSE; > - if (height < 2 * border || height > 2 + maxSize) > + if (height < 2 * border || height > 2 * border + maxSize) > return GL_FALSE; > if (depth < 1 || depth > ctx->Const.MaxArrayTextureLayers) > return GL_FALSE;
Looks good to me. You should probably wait for Jose to double-check though. Reviewed-by: Brian Paul <bri...@vmware.com> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev