r600c: properly align mipmaps to group size
authorAlex Deucher <alexdeucher@gmail.com>
Mon, 8 Nov 2010 16:56:41 +0000 (11:56 -0500)
committerAlex Deucher <alexdeucher@gmail.com>
Mon, 8 Nov 2010 17:06:15 +0000 (12:06 -0500)
fixes:
https://bugs.freedesktop.org/show_bug.cgi?id=31400

src/mesa/drivers/dri/radeon/radeon_common_context.c
src/mesa/drivers/dri/radeon/radeon_screen.c

index 40544860b3bfb3e6aeca049fc6fa94c12713942f..1047dfae0b3d25c51ef4e47e31deab54730fc784 100644 (file)
@@ -251,9 +251,9 @@ GLboolean radeonInitContext(radeonContextPtr radeon,
                        radeon->texture_rect_row_align = 512;
                        radeon->texture_compressed_row_align = 512;
                } else {
-                       radeon->texture_row_align = 256;
-                       radeon->texture_rect_row_align = 256;
-                       radeon->texture_compressed_row_align = 256;
+                       radeon->texture_row_align = radeon->radeonScreen->group_bytes;
+                       radeon->texture_rect_row_align = radeon->radeonScreen->group_bytes;
+                       radeon->texture_compressed_row_align = radeon->radeonScreen->group_bytes;
                }
        } else if (IS_R200_CLASS(radeon->radeonScreen) ||
                   IS_R100_CLASS(radeon->radeonScreen)) {
index 43ebc810939b950faba07eb600b1559f4e51ee4c..450e33ef1348de734b16ef1c392c5ab541f031dd 100644 (file)
@@ -1138,6 +1138,8 @@ radeonCreateScreen( __DRIscreen *sPriv )
    else
           screen->chip_flags |= RADEON_CLASS_R600;
 
+   /* set group bytes for r6xx+ */
+   screen->group_bytes = 256;
    screen->cpp = dri_priv->bpp / 8;
    screen->AGPMode = dri_priv->AGPMode;
 
@@ -1382,7 +1384,8 @@ radeonCreateScreen2(__DRIscreen *sPriv)
    else
           screen->chip_flags |= RADEON_CLASS_R600;
 
-   /* r6xx+ tiling */
+   /* r6xx+ tiling, default to 256 group bytes */
+   screen->group_bytes = 256;
    if (IS_R600_CLASS(screen) && (sPriv->drm_version.minor >= 6)) {
           ret = radeonGetParam(sPriv, RADEON_INFO_TILE_CONFIG, &temp);
           if (ret)