From: Mikko Juola Date: Tue, 30 Jul 2013 03:19:59 +0000 (+0300) Subject: mesa: fix number of mipmaps calculation for proxy textures X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=de7e3741ebca9fb794b890e00b5fed5b2bbb62a2;p=mesa.git mesa: fix number of mipmaps calculation for proxy textures The function _mesa_get_tex_max_num_levels() is supposed to calculate the number of mipmap levels but it was not written to handle proxy textures, at best returning a maximum of 1 mipmap level. Because of this, at least glTexStorage*() calls would incorrectly fail when used with proxy textures with more than one mipmap level. Reviewed-by: Brian Paul Cc: mesa-stable@lists.freedesktop.org --- diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 11184965513..b719fc856a1 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -1097,24 +1097,34 @@ _mesa_get_tex_max_num_levels(GLenum target, GLsizei width, GLsizei height, switch (target) { case GL_TEXTURE_1D: case GL_TEXTURE_1D_ARRAY: + case GL_PROXY_TEXTURE_1D: + case GL_PROXY_TEXTURE_1D_ARRAY: size = width; break; case GL_TEXTURE_CUBE_MAP: case GL_TEXTURE_CUBE_MAP_ARRAY: + case GL_PROXY_TEXTURE_CUBE_MAP: + case GL_PROXY_TEXTURE_CUBE_MAP_ARRAY: ASSERT(width == height); size = width; break; case GL_TEXTURE_2D: case GL_TEXTURE_2D_ARRAY: + case GL_PROXY_TEXTURE_2D: + case GL_PROXY_TEXTURE_2D_ARRAY: size = MAX2(width, height); break; case GL_TEXTURE_3D: + case GL_PROXY_TEXTURE_3D: size = MAX3(width, height, depth); break; case GL_TEXTURE_RECTANGLE: case GL_TEXTURE_EXTERNAL_OES: case GL_TEXTURE_2D_MULTISAMPLE: case GL_TEXTURE_2D_MULTISAMPLE_ARRAY: + case GL_PROXY_TEXTURE_RECTANGLE: + case GL_PROXY_TEXTURE_2D_MULTISAMPLE: + case GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY: return 1; default: assert(0);