Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > ce8e35731b1a9a00a5dc59325b562a5a > files > 5

xorg-x11-drv-nv-2.1.15-6.fc14.src.rpm

diff -up xf86-video-nv-2.1.6/src/nv_driver.c.jx xf86-video-nv-2.1.6/src/nv_driver.c
--- xf86-video-nv-2.1.6/src/nv_driver.c.jx	2007-09-26 20:59:50.000000000 -0400
+++ xf86-video-nv-2.1.6/src/nv_driver.c	2008-01-22 16:11:24.000000000 -0500
@@ -1148,12 +1148,19 @@ NVFreeScreen(int scrnIndex, int flags)
 static ModeStatus
 NVValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
 {
-    NVPtr pNv = NVPTR(xf86Screens[scrnIndex]);
+    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+    NVPtr pNv = NVPTR(pScrn);
 
     if(pNv->fpWidth && pNv->fpHeight)
       if((pNv->fpWidth < mode->HDisplay) || (pNv->fpHeight < mode->VDisplay))
         return (MODE_PANEL);
 
+    /* avoid starving the chip on scanout */
+    if (pNv->Architecture == NV_ARCH_04 &&
+	(mode->HDisplay * mode->VDisplay * (pScrn->bitsPerPixel / 8) >
+	    pScrn->videoRam * 952)) /* 1024 * 0.93, yay magic numbers */
+	return MODE_BANDWIDTH;
+
     return (MODE_OK);
 }