xf86-video-ati: Branch 'master'

Dave Airlie airlied at kemper.freedesktop.org
Tue Nov 24 19:25:55 PST 2009


 man/radeon.man   |   11 +++++------
 src/radeon.h     |    4 ++--
 src/radeon_exa.c |    4 ++--
 src/radeon_kms.c |   24 ++++++++++--------------
 4 files changed, 19 insertions(+), 24 deletions(-)

New commits:
commit 8b28534bcf877557a5681fa3b4f107c74615d3de
Author: Dave Airlie <airlied at redhat.com>
Date:   Wed Nov 25 13:24:44 2009 +1000

    radeon/exa: change option to determine exa pixmap usage.
    
    This moves to a boolean instead of using VRAM sizing.
    
    as per Michel's suggestions on list.
    
    Signed-off-by: Dave Airlie <airlied at redhat.com>

diff --git a/man/radeon.man b/man/radeon.man
index 5f6d9fb..0ea866f 100644
--- a/man/radeon.man
+++ b/man/radeon.man
@@ -607,14 +607,13 @@ This option enables modesetting on R/RV4xx chips using atombios.
 The default is
 .B off.
 .TP 
-.BI "Option \*qEXALowVRAM\*q \*q" integer \*q
+.BI "Option \*qEXAPixmaps\*q \*q" boolean \*q
 (KMS Only) Under kernel modesetting to avoid thrashing pixmaps in/out
-of VRAM on low memory cards, we set a threshhold for the amount of VRAM
-a GPU should have before we start using VRAM to accelerate pixmaps that
-aren't required to be used by the GPU. Value is in MB. This shouldn't
-really be changed apart from testing.
+of VRAM on low memory cards, we use a heuristic based on VRAM amount,
+to determine whether to allow EXA to use VRAM for non-essential pixmaps.
+This option allows us to override the heurisitc.
 The default is
-.B 32.
+.B on with > 32MB VRAM, off with < 32MB.
 
 .SH TEXTURED VIDEO ATTRIBUTES
 The driver supports the following X11 Xv attributes for Textured Video.
diff --git a/src/radeon.h b/src/radeon.h
index 4ee37b5..71357b3 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -173,7 +173,7 @@ typedef enum {
     OPTION_PCIAPER_SIZE,
 #ifdef USE_EXA
     OPTION_ACCEL_DFS,
-    OPTION_EXA_LOW_VRAM,
+    OPTION_EXA_PIXMAPS,
 #endif
 #endif
     OPTION_IGNORE_EDID,
@@ -898,6 +898,7 @@ typedef struct {
     Bool              accelOn;
     Bool              useEXA;
 #ifdef USE_EXA
+    Bool	      exa_pixmaps;
     Bool              exa_force_create;
     XF86ModReqInfo    exaReq;
 #endif
@@ -1009,7 +1010,6 @@ typedef struct {
     uint64_t vram_size;
     uint64_t gart_size;
     drmmode_rec drmmode;
-    int exa_low_vram_threshhold_mb;
 #else
     /* fake bool */
     Bool cs;
diff --git a/src/radeon_exa.c b/src/radeon_exa.c
index b53f318..bff6ec0 100644
--- a/src/radeon_exa.c
+++ b/src/radeon_exa.c
@@ -394,7 +394,7 @@ void *RADEONEXACreatePixmap(ScreenPtr pScreen, int size, int align)
 #ifdef EXA_MIXED_PIXMAPS
     if (info->accel_state->exa->flags & EXA_MIXED_PIXMAPS) {
         if (size != 0 && !info->exa_force_create &&
-	    info->vram_size <= (info->exa_low_vram_threshhold_mb*1024*1024))
+	    info->exa_pixmaps == FALSE)
             return NULL;
     }
 #endif
@@ -433,7 +433,7 @@ void *RADEONEXACreatePixmap2(ScreenPtr pScreen, int width, int height,
 #ifdef EXA_MIXED_PIXMAPS
     if (info->accel_state->exa->flags & EXA_MIXED_PIXMAPS) {
 	if (width != 0 && height != 0 && !info->exa_force_create &&
-	    info->vram_size <= (info->exa_low_vram_threshhold_mb*1024*1024))
+	    info->exa_pixmaps == FALSE)
             return NULL;
     }
 #endif
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index 68a6345..9ee08f3 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -67,7 +67,7 @@ const OptionInfoRec RADEONOptions_KMS[] = {
     { OPTION_DRI,            "DRI",       	 OPTV_BOOLEAN, {0}, FALSE },
     { OPTION_TVSTD,          "TVStandard",         OPTV_STRING,  {0}, FALSE },
     { OPTION_EXA_VSYNC,         "EXAVSync",        OPTV_BOOLEAN, {0}, FALSE },
-    { OPTION_EXA_LOW_VRAM,   "EXALowVRAM",	OPTV_INTEGER,   {0}, FALSE },
+    { OPTION_EXA_PIXMAPS,   "EXAPixmaps",	OPTV_BOOLEAN,   {0}, FALSE },
     { -1,                    NULL,               OPTV_NONE,    {0}, FALSE }
 };
 
@@ -460,19 +460,15 @@ Bool RADEONPreInit_KMS(ScrnInfoPtr pScrn, int flags)
 	}
     }
 
-    info->exa_low_vram_threshhold_mb = 32;
-    if (xf86GetOptValInteger(info->Options, OPTION_EXA_LOW_VRAM,
-			     &(info->exa_low_vram_threshhold_mb))) {
-	if (info->exa_low_vram_threshhold_mb < 0 ||
-	    info->exa_low_vram_threshhold_mb > (info->vram_size * 1024 * 1024)) {
-	    xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-		       "Illegal Low VRAM limit selected %d, total %u\n",
-		       info->exa_low_vram_threshhold_mb,
-		       (unsigned int)(info->vram_size / (1024*1024)));
-	    info->exa_low_vram_threshhold_mb = 32;
-	}
-    }
-    
+    info->exa_pixmaps = xf86ReturnOptValBool(info->Options,
+                                             OPTION_EXA_PIXMAPS, 
+					     (info->vram_size > (32 * 1024 * 1024)));
+    if (info->exa_pixmaps)
+    	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+		"EXA: Driver will allow EXA pixmaps in VRAM\n");
+    else
+    	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+		"EXA: Driver will not allow EXA pixmaps in VRAM\n");
     RADEONSetPitch(pScrn);
 
     /* Set display resolution */


More information about the xorg-commit mailing list