Mesa (master): r300g: add winsys flag CAN_AACOMPRESS

Marek Olšák mareko at kemper.freedesktop.org
Thu Jan 27 22:23:15 UTC 2011


Module: Mesa
Branch: master
Commit: 39f16e2aa72d96286296cc0242122a1c5e92897b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=39f16e2aa72d96286296cc0242122a1c5e92897b

Author: Marek Olšák <maraeo at gmail.com>
Date:   Thu Jan 27 23:13:28 2011 +0100

r300g: add winsys flag CAN_AACOMPRESS

---

 src/gallium/drivers/r300/r300_winsys.h            |    3 +-
 src/gallium/winsys/radeon/drm/radeon_drm_common.c |   25 +++++++++++++-------
 src/gallium/winsys/radeon/drm/radeon_r300.c       |    2 +
 src/gallium/winsys/radeon/drm/radeon_winsys.h     |    3 ++
 4 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_winsys.h b/src/gallium/drivers/r300/r300_winsys.h
index 35ed35c..05b5728 100644
--- a/src/gallium/drivers/r300/r300_winsys.h
+++ b/src/gallium/drivers/r300/r300_winsys.h
@@ -54,7 +54,8 @@ enum r300_value_id {
     R300_VID_DRM_2_3_0, /* R500 VAP regs, MSPOS regs, fixed tex3D size checking */
     R300_VID_DRM_2_6_0, /* Hyper-Z, GB_Z_PEQ_CONFIG on rv350->r4xx, R500 FG_ALPHA_VALUE */
     R300_VID_DRM_2_8_0, /* R500 US_FORMAT regs, R500 ARGB2101010 colorbuffer */
-    R300_CAN_HYPERZ,
+    R300_CAN_HYPERZ,     /* ZMask + HiZ */
+    R300_CAN_AACOMPRESS, /* CMask */
 };
 
 enum r300_reference_domain { /* bitfield */
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_common.c b/src/gallium/winsys/radeon/drm/radeon_drm_common.c
index 3663c1f..ba548c4 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_common.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_common.c
@@ -43,22 +43,21 @@
 #include <xf86drm.h>
 #include <stdio.h>
 
-
-/* Enable/disable Hyper-Z access. Return TRUE on success. */
-static boolean radeon_set_hyperz_access(int fd, boolean enable)
-{
 #ifndef RADEON_INFO_WANT_HYPERZ
 #define RADEON_INFO_WANT_HYPERZ 7
 #endif
+#ifndef RADEON_INFO_WANT_CMASK
+#define RADEON_INFO_WANT_CMASK 8
+#endif
 
+/* Enable/disable feature access. Return TRUE on success. */
+static boolean radeon_set_fd_access(int fd, unsigned request, boolean enable)
+{
     struct drm_radeon_info info = {0};
     unsigned value = enable ? 1 : 0;
 
-    if (!debug_get_bool_option("RADEON_HYPERZ", FALSE))
-        return FALSE;
-
     info.value = (unsigned long)&value;
-    info.request = RADEON_INFO_WANT_HYPERZ;
+    info.request = request;
 
     if (drmCommandWriteRead(fd, DRM_RADEON_INFO, &info, sizeof(info)) != 0)
         return FALSE;
@@ -148,7 +147,15 @@ static void do_ioctls(struct radeon_drm_winsys *winsys)
     }
     winsys->z_pipes = target;
 
-    winsys->hyperz = radeon_set_hyperz_access(winsys->fd, TRUE);
+    if (debug_get_bool_option("RADEON_HYPERZ", FALSE)) {
+        winsys->hyperz = radeon_set_fd_access(winsys->fd,
+                                              RADEON_INFO_WANT_HYPERZ, TRUE);
+    }
+
+    if (debug_get_bool_option("RADEON_CMASK", FALSE)) {
+        winsys->aacompress = radeon_set_fd_access(winsys->fd,
+                                                  RADEON_INFO_WANT_CMASK, TRUE);
+    }
 
     retval = drmCommandWriteRead(winsys->fd, DRM_RADEON_GEM_INFO,
             &gem_info, sizeof(gem_info));
diff --git a/src/gallium/winsys/radeon/drm/radeon_r300.c b/src/gallium/winsys/radeon/drm/radeon_r300.c
index 307ae01..91746ba 100644
--- a/src/gallium/winsys/radeon/drm/radeon_r300.c
+++ b/src/gallium/winsys/radeon/drm/radeon_r300.c
@@ -155,6 +155,8 @@ static uint32_t radeon_get_value(struct r300_winsys_screen *rws,
         return ws->drm_2_8_0;
     case R300_CAN_HYPERZ:
         return ws->hyperz;
+    case R300_CAN_AACOMPRESS:
+        return ws->aacompress;
     }
     return 0;
 }
diff --git a/src/gallium/winsys/radeon/drm/radeon_winsys.h b/src/gallium/winsys/radeon/drm/radeon_winsys.h
index 76954d5..59e12ff 100644
--- a/src/gallium/winsys/radeon/drm/radeon_winsys.h
+++ b/src/gallium/winsys/radeon/drm/radeon_winsys.h
@@ -53,8 +53,11 @@ struct radeon_drm_winsys {
     boolean drm_2_6_0;
     /* DRM 2.8.0 (US_FORMAT regs, ARGB2101010 colorbuffer) */
     boolean drm_2_8_0;
+
     /* Hyper-Z user */
     boolean hyperz;
+    /* AA compression (CMask) */
+    boolean aacompress;
 };
 
 static INLINE struct radeon_drm_winsys *




More information about the mesa-commit mailing list