Mesa (radeon-rewrite): radeon: setup pipes for r300

Dave Airlie airlied at kemper.freedesktop.org
Mon Mar 23 23:32:09 UTC 2009


Module: Mesa
Branch: radeon-rewrite
Commit: 28e082197d158206b58da62940cf57796abe565a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=28e082197d158206b58da62940cf57796abe565a

Author: Dave Airlie <airlied at redhat.com>
Date:   Tue Mar 24 09:28:52 2009 +1000

radeon: setup pipes for r300

---

 src/mesa/drivers/dri/radeon/radeon_screen.c |   31 +++++++++++++++++++++++++++
 1 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c
index 78f769e..3817007 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.c
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
@@ -1047,6 +1047,7 @@ radeonCreateScreen2(__DRIscreenPrivate *sPriv)
    int i;
    int ret;
    uint32_t device_id;
+   uint32_t temp = 0;
 
    /* Allocate the private area */
    screen = (radeonScreenPtr) CALLOC( sizeof(*screen) );
@@ -1083,6 +1084,36 @@ radeonCreateScreen2(__DRIscreenPrivate *sPriv)
    if (ret == -1)
      return NULL;
 
+   if (screen->chip_family >= CHIP_FAMILY_R300) {
+       ret = radeonGetParam( sPriv->fd, RADEON_PARAM_NUM_GB_PIPES,
+			     &temp);
+       if (ret) {
+	   fprintf(stderr, "Unable to get num_pipes, need newer drm\n");
+	   switch (screen->chip_family) {
+	   case CHIP_FAMILY_R300:
+	   case CHIP_FAMILY_R350:
+	       screen->num_gb_pipes = 2;
+	       break;
+	   case CHIP_FAMILY_R420:
+	   case CHIP_FAMILY_R520:
+	   case CHIP_FAMILY_R580:
+	   case CHIP_FAMILY_RV560:
+	   case CHIP_FAMILY_RV570:
+	       screen->num_gb_pipes = 4;
+	       break;
+	   case CHIP_FAMILY_RV350:
+	   case CHIP_FAMILY_RV515:
+	   case CHIP_FAMILY_RV530:
+	   case CHIP_FAMILY_RV410:
+	   default:
+	       screen->num_gb_pipes = 1;
+	       break;
+	   }
+       } else {
+	   screen->num_gb_pipes = temp;
+       }
+   }
+
    if (screen->chip_family <= CHIP_FAMILY_RS200)
       screen->chip_flags |= RADEON_CLASS_R100;
    else if (screen->chip_family <= CHIP_FAMILY_RV280)




More information about the mesa-commit mailing list