st/mesa: only minify height if target != 1D array in st_finalize_texture

The st_texture_object documentation says:
  "the number of 1D array layers will be in height0"

We can't minify that.

Spotted by luck. No app is known to hit this issue.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
Marek Olšák 2016-03-21 12:18:40 +01:00
parent 50d653c2bb
commit 21c479256a

View file

@ -2886,12 +2886,17 @@ st_finalize_texture(struct gl_context *ctx,
/* Need to import images in main memory or held in other textures.
*/
if (stImage && stObj->pt != stImage->pt) {
GLuint height = stObj->height0;
GLuint depth = stObj->depth0;
if (stObj->base.Target != GL_TEXTURE_1D_ARRAY)
height = u_minify(height, level);
if (stObj->base.Target == GL_TEXTURE_3D)
depth = u_minify(depth, level);
if (level == 0 ||
(stImage->base.Width == u_minify(stObj->width0, level) &&
stImage->base.Height == u_minify(stObj->height0, level) &&
stImage->base.Height == height &&
stImage->base.Depth == depth)) {
/* src image fits expected dest mipmap level size */
copy_image_data_to_texture(st, stObj, level, stImage);