gallium: in st_finalize_texture() check texture dimensions
authorBrian Paul <brian.paul@tungstengraphics.com>
Fri, 2 May 2008 16:38:39 +0000 (10:38 -0600)
committerBrian Paul <brian.paul@tungstengraphics.com>
Fri, 2 May 2008 16:38:39 +0000 (10:38 -0600)
Check dimensions in addition to target, format, etc.
Fixes a bug where we failed to detect a change in texture image sizes and
wound up using the old texture data.

src/mesa/state_tracker/st_cb_texture.c

index 8012254..1eabef6 100644 (file)
@@ -1483,13 +1483,16 @@ st_finalize_texture(GLcontext *ctx,
    }
 
    /* Check texture can hold all active levels.  Check texture matches
-    * target, imageFormat, etc.
+    * target, imageFormat, dimensions, etc.
     */
    if (stObj->pt &&
        (stObj->pt->target != gl_target_to_pipe(stObj->base.Target) ||
        stObj->pt->format !=
        st_mesa_format_to_pipe_format(firstImage->base.TexFormat->MesaFormat) ||
        stObj->pt->last_level < stObj->lastLevel ||
+        stObj->pt->width[0] != firstImage->base.Width2 ||
+        stObj->pt->height[0] != firstImage->base.Height2 ||
+        stObj->pt->depth[0] != firstImage->base.Depth2 ||
        stObj->pt->cpp != cpp ||
        stObj->pt->compressed != firstImage->base.IsCompressed)) {
       pipe_texture_release(&stObj->pt);