From: Michel Dänzer <[email protected]>

Fixes piglit sanity.tests (with 3D drivers which allocate depth buffers from
the X server).

Signed-off-by: Michel Dänzer <[email protected]>
---

Tested on RV350.

 src/drmmode_display.c |  4 +++-
 src/radeon.h          |  1 +
 src/radeon_dri2.c     | 10 ++++++++--
 3 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index aade98f..e4757ad 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -1205,7 +1205,9 @@ int drmmode_get_height_align(ScrnInfoPtr scrn, uint32_t 
tiling)
                else
                        height_align = 8;
        } else {
-               if (tiling)
+               if (tiling & RADEON_TILING_MICRO_SQUARE)
+                       height_align =  32;
+               else if (tiling)
                        height_align = 16;
                else
                        height_align = 1;
diff --git a/src/radeon.h b/src/radeon.h
index ad50d5d..f986347 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -775,6 +775,7 @@ enum {
     RADEON_CREATE_PIXMAP_TILING_MICRO = 0x20000000,
     RADEON_CREATE_PIXMAP_DEPTH = 0x40000000, /* for r200 */
     RADEON_CREATE_PIXMAP_SZBUFFER = 0x80000000, /* for eg */
+    RADEON_CREATE_PIXMAP_TILING_MICRO_SQUARE = 0x8000000,
 };
 
 
diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
index 36a44e4..443d908 100644
--- a/src/radeon_dri2.c
+++ b/src/radeon_dri2.c
@@ -221,7 +221,9 @@ radeon_dri2_create_buffer2(ScreenPtr pScreen,
                }
                if (info->ChipFamily >= CHIP_FAMILY_CEDAR)
                    flags |= RADEON_CREATE_PIXMAP_SZBUFFER;
-           } else
+           } else if (cpp == 2 && info->ChipFamily >= CHIP_FAMILY_R300)
+               flags = RADEON_CREATE_PIXMAP_TILING_MACRO | 
RADEON_CREATE_PIXMAP_TILING_MICRO_SQUARE;
+           else
                flags = RADEON_CREATE_PIXMAP_TILING_MACRO | 
RADEON_CREATE_PIXMAP_TILING_MICRO;
            if (IS_R200_3D || info->ChipFamily == CHIP_FAMILY_RV200 || 
info->ChipFamily == CHIP_FAMILY_RADEON)
                flags |= RADEON_CREATE_PIXMAP_DEPTH;
@@ -238,7 +240,9 @@ radeon_dri2_create_buffer2(ScreenPtr pScreen,
                }
                if (info->ChipFamily >= CHIP_FAMILY_CEDAR)
                    flags |= RADEON_CREATE_PIXMAP_SZBUFFER;
-           } else
+           } else if (cpp == 2 && info->ChipFamily >= CHIP_FAMILY_R300)
+               flags = RADEON_CREATE_PIXMAP_TILING_MACRO | 
RADEON_CREATE_PIXMAP_TILING_MICRO_SQUARE;
+           else
                flags = RADEON_CREATE_PIXMAP_TILING_MACRO | 
RADEON_CREATE_PIXMAP_TILING_MICRO;
            if (IS_R200_3D || info->ChipFamily == CHIP_FAMILY_RV200 || 
info->ChipFamily == CHIP_FAMILY_RADEON)
                flags |= RADEON_CREATE_PIXMAP_DEPTH;
@@ -265,6 +269,8 @@ radeon_dri2_create_buffer2(ScreenPtr pScreen,
 
        if (flags & RADEON_CREATE_PIXMAP_TILING_MICRO)
            tiling |= RADEON_TILING_MICRO;
+       if (flags & RADEON_CREATE_PIXMAP_TILING_MICRO_SQUARE)
+           tiling |= RADEON_TILING_MICRO_SQUARE;
        if (flags & RADEON_CREATE_PIXMAP_TILING_MACRO)
            tiling |= RADEON_TILING_MACRO;
 
-- 
1.8.1

_______________________________________________
xorg-driver-ati mailing list
[email protected]
http://lists.x.org/mailman/listinfo/xorg-driver-ati

Reply via email to