st/mesa: restore the stObj's size if it was cleared out
authorIlia Mirkin <imirkin@alum.mit.edu>
Sun, 17 Jan 2016 21:25:00 +0000 (16:25 -0500)
committerIlia Mirkin <imirkin@alum.mit.edu>
Mon, 18 Jan 2016 22:52:07 +0000 (17:52 -0500)
An issue could still occur if the base level is set, but fixing that
would require a lot more logic.

This fixes the recently-failing texelFetch 3D tests because the mipmaps
were no longer being generated, which in turn caused the copying logic
to be hit, which in turn didn't work because of the broken
width/height/depth.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/mesa/state_tracker/st_cb_texture.c

index f8b367989e7430485d06f8d39e3cb985f126e6e7..0ceb37027e101b7c317bdcb8d01cbea5e37d3868 100644 (file)
@@ -1670,6 +1670,12 @@ st_finalize_texture(struct gl_context *ctx,
          width = stObj->width0;
          height = stObj->height0;
          depth = stObj->depth0;
+      } else {
+         /* The width/height/depth may have been previously reset in
+          * guess_and_alloc_texture. */
+         stObj->width0 = width;
+         stObj->height0 = height;
+         stObj->depth0 = depth;
       }
       /* convert GL dims to Gallium dims */
       st_gl_texture_dims_to_pipe_dims(stObj->base.Target, width, height, depth,