r300g: Add some debugging, correct little bits of math in texture setup.
authorCorbin Simpson <MostAwesomeDude@gmail.com>
Fri, 24 Jul 2009 21:37:07 +0000 (14:37 -0700)
committerCorbin Simpson <MostAwesomeDude@gmail.com>
Mon, 27 Jul 2009 04:38:24 +0000 (21:38 -0700)
Simple stuff still works, but not sure about some of the more complex things.

src/gallium/drivers/r300/r300_texture.c

index 11c7858d422349f42e1f4ae665f69db1dd24f4e3..1e86020d1fc4f3921dcfe2547ddd4ac503db7144 100644 (file)
@@ -55,6 +55,9 @@ static void r300_setup_texture_state(struct r300_texture* tex,
     if (height > 2048) {
         state->format2 |= R500_TXHEIGHT_BIT11;
     }
+
+    debug_printf("r300: Set texture state (%dx%d, pitch %d, %d levels)\n",
+            width, height, pitch, levels);
 }
 
 static void r300_setup_miptree(struct r300_texture* tex)
@@ -71,19 +74,25 @@ static void r300_setup_miptree(struct r300_texture* tex)
         }
 
         base->nblocksx[i] = pf_get_nblocksx(&base->block, base->width[i]);
-        base->nblocksy[i] = pf_get_nblocksy(&base->block, base->width[i]);
+        base->nblocksy[i] = pf_get_nblocksy(&base->block, base->height[i]);
 
         /* Radeons enjoy things in multiples of 64.
          *
          * XXX
          * POT, uncompressed, unmippmapped textures can be aligned to 32,
          * instead of 64. */
-        stride = align(base->nblocksx[i] * base->block.size, 64);
+        stride = align(
+                (base->nblocksx[i] * base->block.size) / base->block.width,
+                32);
         size = stride * base->nblocksy[i] * base->depth[i];
 
-        tex->offset[i] = align(tex->size, 64);
+        tex->offset[i] = align(tex->size, 32);
         tex->size = tex->offset[i] + size;
 
+        debug_printf("r300: Texture miptree: Level %d "
+                "(%dx%dx%d px, pitch %d bytes)\n",
+                i, base->width[i], base->height[i], base->depth[i],
+                stride);
         /* Save stride of first level to the texture. */
         if (i == 0) {
             tex->stride = stride;