Radeon 9000 Pro corruption problem on PPC when DRI is enabled

Ari Entlich lmage11 at twcny.rr.com
Sat Aug 19 23:48:16 PDT 2006


On Sun, 2006-08-20 at 02:44 +0200, Roland Scheidegger wrote:
> Ari Entlich wrote:
> > Hello,
> > 
> > I am writing to ask about a video corruption problem I've been trying to
> > sort out. The problem arose after I upgraded to X.Org 7.1 from X.Org
> > 6.8.2, which didn't have this problem. It only arises when DRI is
> > enabled - changing anything to make DRI not start produces correct
> > output. I used gentoo's ppc Xorg autoconfig utility (Xorgautoconfig) to
> > generate my configuration, which can be found at
> > http://home.twcny.rr.com/fandaswebsite/xorg.conf. The only change I made
> > to that configuration was to enable UseFBDev, because my monitor acts
> > like it's not getting a signal otherwise, for some reason. I do not
> > think this is a monitor issue however because, as you might or might not
> > be able to see in the pictures, the cursor is unaffected. One thing
> > which I noticed was that changing the bit depth changes how the
> > corruption looks. Log files with DRI both on and off at bit depth 16
> > (there are no significant differences between the 16 bit and 24 bit log
> > files) can be found at
> > http://home.twcny.rr.com/fandaswebsite/xorg_log_16 and
> > http://home.twcny.rr.com/fandaswebsite/xorg_log_no_dri_16. The pictures
> > for 16 and 24 bit depths can be found at
> > http://home.twcny.rr.com/fandaswebsite/bitdepth_16.jpg and
> > http://home.twcny.rr.com/fandaswebsite/bitdepth_24.jpg (sorry about the
> > low image quality - they were taken with a digital camcorder...).
> Could be some pitch problem. You mentioned you used UseFBDev, you didn't 
> use that with Xorg 6.8.2?

I'm pretty sure I did use it in 6.8.2, actually.

> I'm not sure where the requirements for pitch are exactly coming from 
> (except when you use color tiling, which you can't due to the same 
> UseFBDev option), but maybe alignment is wrong somewhere when you're 
> using the cp accel path instead of mmio (which is what you get without 
> dri). Alex might know more about this.
> You might try to get rid of that (imho ugly and utterly useless - well 
> the idea is sound the implementation is not because way too limited) 
> UseFBDev option, that might fix things. Maybe you need to specify a 
> different modeline, I guess there was nothing in the log which indicated 
> anything wrong when UseFBDev was not used?

Here's a diff between the UseFBDev true and UseFBDev false log files
(dri off, bit depth 16):

--- xorg_fbdev_on	2006-08-20 00:03:33.000000000 -0400
+++ Xorg.0.log	2006-08-20 00:11:12.000000000 -0400
@@ -11,7 +11,7 @@
 Markers: (--) probed, (**) from config file, (==) default setting,
 	(++) from command line, (!!) notice, (II) informational,
 	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
-(==) Log file: "/var/log/Xorg.0.log", Time: Sun Aug 20 00:03:15 2006
+(==) Log file: "/var/log/Xorg.0.log", Time: Sun Aug 20 00:11:06 2006
 (==) Using config file: "/etc/X11/xorg.conf"
 (==) ServerLayout "X.Org Configured"
 (**) |-->Screen "Screen0" (0)
@@ -427,24 +427,17 @@
 (II) RADEON(0): Pixel depth = 16 bits stored in 2 bytes (16 bpp pixmaps)
 (==) RADEON(0): Default visual is TrueColor
 (**) RADEON(0): Option "EnablePageFlip" "true"
-(**) RADEON(0): Option "UseFBDev" "true"
 (II) RADEON(0): VGAAccess option set to FALSE, VGA module load skipped
 (==) RADEON(0): RGB weight 565
 (II) RADEON(0): Using 6 bits per RGB (8 bit DAC)
 (==) RADEON(0): X server will not keep DPI constant for all screen sizes
-(II) Loading sub module "fbdevhw"
-(II) LoadModule: "fbdevhw"
-(II) Loading /usr/lib/xorg/modules/linux/libfbdevhw.so
-(II) Module fbdevhw: vendor="X.Org Foundation"
-	compiled for 7.1.1, module version = 0.0.2
-	ABI class: X.Org Video Driver, version 1.0
-(**) RADEON(0): Using framebuffer device
 (--) RADEON(0): Chipset: "ATI Radeon 9000/PRO If (AGP/PCI)" (ChipID = 0x4966)
 (--) RADEON(0): Linear framebuffer at 0x98000000
 (--) RADEON(0): BIOS at 0xf1000000
 (II) RADEON(0): AGP card detected
+(II) RADEON(0): Detected total video RAM=65536K, accessible=65536K (PCI BAR=131072K)
 (--) RADEON(0): Mapped VideoRAM: 65536 kByte (128 bit DDR SDRAM)
-(WW) RADEON(0): Color tiling not supported with UseFBDev option
+(II) RADEON(0): Color tiling enabled by default
 (II) Loading sub module "ddc"
 (II) LoadModule: "ddc"
 (II) Loading /usr/lib/xorg/modules/libddc.so
@@ -475,40 +468,55 @@
  TMDS Type -- External
  DDC Type  -- NONE
 (II) RADEON(0): PLL parameters: rf=0 rd=12 min=0 max=2097152; xclk=0
-(EE) RADEON(0): MergedFB does not work with Option UseFBDev, MergedFB mode is disabled
+(WW) RADEON(0): Failed to detect secondary monitor, MergedFB/Clone mode disabled
 (==) RADEON(0): Using gamma correction (1.0, 1.0, 1.0)
 (II) RADEON(0): Validating modes on Primary head ---------
 (II) RADEON(0): Monitor0: Using hsync range of 30.00-85.00 kHz
 (II) RADEON(0): Monitor0: Using vrefresh range of 48.00-160.00 Hz
 (II) RADEON(0): Maximum clock: 20971.52 MHz
+(II) RADEON(0): Not using default mode "512x384" (bad mode clock/interlace/doublescan)
+(II) RADEON(0): Not using default mode "512x384" (bad mode clock/interlace/doublescan)
+(II) RADEON(0): Not using default mode "512x384" (bad mode clock/interlace/doublescan)
+(II) RADEON(0): Not using default mode "512x384" (bad mode clock/interlace/doublescan)
+(II) RADEON(0): Not using default mode "576x432" (bad mode clock/interlace/doublescan)
+(II) RADEON(0): Not using default mode "640x480" (bad mode clock/interlace/doublescan)
 (II) RADEON(0): Not using default mode "1280x960" (hsync out of range)
-(II) RADEON(0): Not using default mode "640x480" (hsync out of range)
+(II) RADEON(0): Not using default mode "640x480" (bad mode clock/interlace/doublescan)
+(II) RADEON(0): Not using default mode "640x512" (bad mode clock/interlace/doublescan)
+(II) RADEON(0): Not using default mode "640x512" (bad mode clock/interlace/doublescan)
 (II) RADEON(0): Not using default mode "1280x1024" (hsync out of range)
-(II) RADEON(0): Not using default mode "640x512" (hsync out of range)
+(II) RADEON(0): Not using default mode "640x512" (bad mode clock/interlace/doublescan)
+(II) RADEON(0): Not using default mode "800x600" (bad mode clock/interlace/doublescan)
+(II) RADEON(0): Not using default mode "800x600" (bad mode clock/interlace/doublescan)
 (II) RADEON(0): Not using default mode "1600x1200" (hsync out of range)
-(II) RADEON(0): Not using default mode "800x600" (hsync out of range)
+(II) RADEON(0): Not using default mode "800x600" (bad mode clock/interlace/doublescan)
 (II) RADEON(0): Not using default mode "1600x1200" (hsync out of range)
-(II) RADEON(0): Not using default mode "800x600" (hsync out of range)
+(II) RADEON(0): Not using default mode "800x600" (bad mode clock/interlace/doublescan)
 (II) RADEON(0): Not using default mode "1600x1200" (hsync out of range)
-(II) RADEON(0): Not using default mode "800x600" (hsync out of range)
+(II) RADEON(0): Not using default mode "800x600" (bad mode clock/interlace/doublescan)
+(II) RADEON(0): Not using default mode "896x672" (bad mode clock/interlace/doublescan)
 (II) RADEON(0): Not using default mode "1792x1344" (hsync out of range)
-(II) RADEON(0): Not using default mode "896x672" (hsync out of range)
+(II) RADEON(0): Not using default mode "896x672" (bad mode clock/interlace/doublescan)
 (II) RADEON(0): Not using default mode "1856x1392" (hsync out of range)
-(II) RADEON(0): Not using default mode "928x696" (hsync out of range)
+(II) RADEON(0): Not using default mode "928x696" (bad mode clock/interlace/doublescan)
 (II) RADEON(0): Not using default mode "1856x1392" (hsync out of range)
-(II) RADEON(0): Not using default mode "928x696" (hsync out of range)
+(II) RADEON(0): Not using default mode "928x696" (bad mode clock/interlace/doublescan)
 (II) RADEON(0): Not using default mode "1920x1440" (hsync out of range)
-(II) RADEON(0): Not using default mode "960x720" (hsync out of range)
+(II) RADEON(0): Not using default mode "960x720" (bad mode clock/interlace/doublescan)
 (II) RADEON(0): Not using default mode "1920x1440" (hsync out of range)
-(II) RADEON(0): Not using default mode "960x720" (hsync out of range)
+(II) RADEON(0): Not using default mode "960x720" (bad mode clock/interlace/doublescan)
+(II) RADEON(0): Not using default mode "576x384" (bad mode clock/interlace/doublescan)
+(II) RADEON(0): Not using default mode "700x525" (bad mode clock/interlace/doublescan)
+(II) RADEON(0): Not using default mode "700x525" (bad mode clock/interlace/doublescan)
+(II) RADEON(0): Not using default mode "800x512" (bad mode clock/interlace/doublescan)
 (II) RADEON(0): Not using default mode "1920x1440" (hsync out of range)
-(II) RADEON(0): Not using default mode "960x720" (hsync out of range)
+(II) RADEON(0): Not using default mode "960x720" (bad mode clock/interlace/doublescan)
 (II) RADEON(0): Not using default mode "2048x1536" (hsync out of range)
-(II) RADEON(0): Not using default mode "1024x768" (hsync out of range)
+(II) RADEON(0): Not using default mode "1024x768" (bad mode clock/interlace/doublescan)
 (II) RADEON(0): Not using default mode "2048x1536" (hsync out of range)
-(II) RADEON(0): Not using default mode "1024x768" (hsync out of range)
+(II) RADEON(0): Not using default mode "1024x768" (bad mode clock/interlace/doublescan)
 (II) RADEON(0): Not using default mode "2048x1536" (hsync out of range)
-(II) RADEON(0): Not using default mode "1024x768" (hsync out of range)
+(II) RADEON(0): Not using default mode "1024x768" (bad mode clock/interlace/doublescan)
 (II) RADEON(0): Not using default mode "1792x1344" (width too large for virtual size)
 (II) RADEON(0): Not using default mode "1600x1200" (width too large for virtual size)
 (II) RADEON(0): Not using default mode "1600x1200" (width too large for virtual size)
@@ -524,8 +532,7 @@
 (II) RADEON(0): Not using default mode "1024x768" (width too large for virtual size)
 (II) RADEON(0): Not using default mode "1024x768" (width too large for virtual size)
 (II) RADEON(0): Not using default mode "1024x768" (width too large for virtual size)
-(II) RADEON(0): Not using default mode "896x672" (width too large for virtual size)
-(--) RADEON(0): Virtual size is 832x624 (pitch 832)
+(--) RADEON(0): Virtual size is 832x624 (pitch 896)
 (**) RADEON(0): *Mode "832x624": 57.3 MHz, 49.7 kHz, 74.5 Hz
 (II) RADEON(0): Modeline "832x624"   57.28  832 864 928 1152  624 626 629 667 -hsync -vsync
 (**) RADEON(0):  Default mode "800x600": 56.3 MHz, 53.7 kHz, 85.1 Hz
@@ -534,22 +541,10 @@
 (II) RADEON(0): Modeline "800x600"   49.50  800 816 896 1056  600 601 604 625 +hsync +vsync
 (**) RADEON(0):  Default mode "800x600": 50.0 MHz, 48.1 kHz, 72.2 Hz
 (II) RADEON(0): Modeline "800x600"   50.00  800 856 976 1040  600 637 643 666 +hsync +vsync
-(**) RADEON(0):  Default mode "800x600": 87.8 MHz, 81.2 kHz, 65.0 Hz (D)
-(II) RADEON(0): Modeline "800x600"   87.75  800 832 928 1080  600 600 602 625 doublescan +hsync +vsync
 (**) RADEON(0):  Default mode "800x600": 40.0 MHz, 37.9 kHz, 60.3 Hz
 (II) RADEON(0): Modeline "800x600"   40.00  800 840 968 1056  600 601 605 628 +hsync +vsync
-(**) RADEON(0):  Default mode "800x600": 81.0 MHz, 75.0 kHz, 60.0 Hz (D)
-(II) RADEON(0): Modeline "800x600"   81.00  800 832 928 1080  600 600 602 625 doublescan +hsync +vsync
 (**) RADEON(0):  Default mode "800x600": 36.0 MHz, 35.2 kHz, 56.2 Hz
 (II) RADEON(0): Modeline "800x600"   36.00  800 824 896 1024  600 601 603 625 +hsync +vsync
-(**) RADEON(0):  Default mode "700x525": 77.9 MHz, 81.5 kHz, 74.8 Hz (D)
-(II) RADEON(0): Modeline "700x525"   77.90  700 732 892 956  525 526 532 545 doublescan +hsync +vsync
-(**) RADEON(0):  Default mode "700x525": 61.0 MHz, 64.9 kHz, 60.0 Hz (D)
-(II) RADEON(0): Modeline "700x525"   61.00  700 744 820 940  525 526 532 541 doublescan +hsync +vsync
-(**) RADEON(0):  Default mode "640x512": 67.5 MHz, 80.0 kHz, 75.0 Hz (D)
-(II) RADEON(0): Modeline "640x512"   67.50  640 648 720 844  512 512 514 533 doublescan +hsync +vsync
-(**) RADEON(0):  Default mode "640x512": 54.0 MHz, 64.0 kHz, 60.0 Hz (D)
-(II) RADEON(0): Modeline "640x512"   54.00  640 664 720 844  512 512 514 533 doublescan +hsync +vsync
 (**) RADEON(0):  Default mode "640x480": 36.0 MHz, 43.3 kHz, 85.0 Hz
 (II) RADEON(0): Modeline "640x480"   36.00  640 696 752 832  480 481 484 509 -hsync -vsync
 (**) RADEON(0):  Default mode "640x480": 31.5 MHz, 37.5 kHz, 75.0 Hz
@@ -558,26 +553,12 @@
 (II) RADEON(0): Modeline "640x480"   31.50  640 664 704 832  480 489 491 520 -hsync -vsync
 (**) RADEON(0):  Default mode "640x480": 25.2 MHz, 31.5 kHz, 60.0 Hz
 (II) RADEON(0): Modeline "640x480"   25.20  640 656 752 800  480 490 492 525 -hsync -vsync
-(**) RADEON(0):  Default mode "640x480": 54.0 MHz, 60.0 kHz, 60.0 Hz (D)
-(II) RADEON(0): Modeline "640x480"   54.00  640 688 744 900  480 480 482 500 doublescan +hsync +vsync
 (**) RADEON(0):  Default mode "720x400": 35.5 MHz, 37.9 kHz, 85.0 Hz
 (II) RADEON(0): Modeline "720x400"   35.50  720 756 828 936  400 401 404 446 -hsync +vsync
 (**) RADEON(0):  Default mode "640x400": 31.5 MHz, 37.9 kHz, 85.1 Hz
 (II) RADEON(0): Modeline "640x400"   31.50  640 672 736 832  400 401 404 445 -hsync +vsync
-(**) RADEON(0):  Default mode "576x432": 54.0 MHz, 67.5 kHz, 75.0 Hz (D)
-(II) RADEON(0): Modeline "576x432"   54.00  576 608 672 800  432 432 434 450 doublescan +hsync +vsync
 (**) RADEON(0):  Default mode "640x350": 31.5 MHz, 37.9 kHz, 85.1 Hz
 (II) RADEON(0): Modeline "640x350"   31.50  640 672 736 832  350 382 385 445 +hsync -vsync
-(**) RADEON(0):  Default mode "576x384": 32.5 MHz, 44.2 kHz, 54.8 Hz (D)
-(II) RADEON(0): Modeline "576x384"   32.50  576 589 657 736  384 385 388 403 doublescan +hsync +vsync
-(**) RADEON(0):  Default mode "512x384": 47.2 MHz, 68.7 kHz, 85.0 Hz (D)
-(II) RADEON(0): Modeline "512x384"   47.25  512 536 584 688  384 384 386 404 doublescan +hsync +vsync
-(**) RADEON(0):  Default mode "512x384": 39.4 MHz, 60.1 kHz, 75.1 Hz (D)
-(II) RADEON(0): Modeline "512x384"   39.40  512 520 568 656  384 384 386 400 doublescan +hsync +vsync
-(**) RADEON(0):  Default mode "512x384": 37.5 MHz, 56.5 kHz, 70.1 Hz (D)
-(II) RADEON(0): Modeline "512x384"   37.50  512 524 592 664  384 385 388 403 doublescan -hsync -vsync
-(**) RADEON(0):  Default mode "512x384": 32.5 MHz, 48.4 kHz, 60.0 Hz (D)
-(II) RADEON(0): Modeline "512x384"   32.50  512 524 592 672  384 385 388 403 doublescan -hsync -vsync
 (**) RADEON(0):  Default mode "512x384": 22.4 MHz, 35.5 kHz, 86.6 Hz (D)
 (II) RADEON(0): Modeline "512x384"   22.45  512 516 604 632  384 384 388 409 interlace doublescan +hsync +vsync
 (**) RADEON(0):  Default mode "416x312": 28.6 MHz, 49.7 kHz, 74.7 Hz (D)
@@ -659,19 +640,45 @@
 	[22] 0	0	0xf00003b0 - 0xf00003bb (0xc) IS[B](OprU)
 	[23] 0	0	0xf00003c0 - 0xf00003df (0x20) IS[B](OprU)
 (**) RADEON(0): RADEONScreenInit 98000000 0
+(**) RADEON(0): Map: 0x98000000, 0x04000000
 (**) RADEON(0): RADEONSave
+(**) RADEON(0): RADEONSaveMode(0x10209d6c)
+(**) RADEON(0): Read: 0x0000000c 0x00030059 0x00000000
+(**) RADEON(0): Read: rd=12, fd=89, pd=3
+(**) RADEON(0): RADEONSaveMode returns 0x10209d6c
 (**) RADEON(0): RADEONInitMemoryMap() : 
 (**) RADEON(0):   mem_size         : 0x04000000
-(**) RADEON(0):   MC_FB_LOCATION   : 0x03ff0000
+(**) RADEON(0):   MC_FB_LOCATION   : 0x9bff9800
 (**) RADEON(0):   MC_AGP_LOCATION  : 0xffffffc0
+(**) RADEON(0): RADEONModeInit()
+832x624        57.28   832  864  928 1152   624  626  629  667 (16,16) -H -V
+832x624        57.28   832  864  928 1152   624  626  629  667 (16,16) -H -V
+(**) RADEON(0): Pitch = 7340144 bytes (virtualX = 832, displayWidth = 896)
+(**) RADEON(0): dc=5728, of=5728, fd=0, pd=1
+(**) RADEON(0): RADEONInit returns 0x1020a71c
+(**) RADEON(0): RADEONRestoreMode()
+(**) RADEON(0): RADEONRestoreMode(0x1020a71c)
+(**) RADEON(0): RADEONRestoreMemMapRegisters() : 
+(**) RADEON(0):   MC_FB_LOCATION   : 0x9bff9800
+(**) RADEON(0):   MC_AGP_LOCATION  : 0xffffffc0
+(**) RADEON(0):   Map Changed ! Applying ...
+(**) RADEON(0):   Map applied, resetting engine ...
+(**) RADEON(0): Updating display base addresses...
+(**) RADEON(0): Memory map updated.
+(**) RADEON(0): Programming CRTC1, offset: 0x00000000
+(**) RADEON(0): Wrote: 0x0000000c 0x00000000 0x00000000 (0x0000bc00)
+(**) RADEON(0): Wrote: rd=12, fd=0, pd=0
+(WW) RADEON(0): You may not have enough display bandwidth for current mode
+If you have flickering problem, try to lower resolution, refresh rate, or color depth
+(**) RADEON(0): GRPH_BUFFER_CNTL from f07f5c5c to f07f5c5c
 (**) RADEON(0): RADEONSaveScreen(0)
 (II) RADEON(0): Depth moves disabled by default
 (**) RADEON(0): Setting up initial surfaces
 (**) RADEON(0): Initializing fb layer
 (**) RADEON(0): Setting up accel memmap
-(II) RADEON(0): Memory manager initialized to (0,0) (832,8191)
-(II) RADEON(0): Reserved area from (0,624) to (832,626)
-(II) RADEON(0): Largest offscreen area available: 832 x 7565
+(II) RADEON(0): Memory manager initialized to (0,0) (896,8191)
+(II) RADEON(0): Reserved area from (0,624) to (896,626)
+(II) RADEON(0): Largest offscreen area available: 896 x 7565
 (**) RADEON(0): Initializing backing store
 (==) RADEON(0): Backing store disabled
 (WW) RADEON(0): Direct rendering disabled
@@ -679,7 +686,7 @@
 (**) RADEON(0): Initializing Acceleration
 (II) RADEON(0): Render acceleration enabled
 (**) RADEON(0): EngineInit (16/16)
-(**) RADEON(0): Pitch for acceleration = 104
+(**) RADEON(0): Pitch for acceleration = 112
 (**) RADEON(0): EngineRestore (16/16)
 (II) RADEON(0): Using XFree86 Acceleration Architecture (XAA)
 	Screen to screen bit blits
@@ -691,7 +698,7 @@
 	Offscreen Pixmaps
 	Setting up tile and stipple cache:
 		32 128x128 slots
-		28 256x256 slots
+		32 256x256 slots
 		13 512x512 slots
 (II) RADEON(0): Acceleration enabled
 (**) RADEON(0): Initializing DPMS
@@ -700,7 +707,7 @@
 (**) RADEON(0): Initializing Cursor
 (==) RADEON(0): Silken mouse enabled
 (II) RADEON(0): Using hardware cursor (scanline 626)
-(II) RADEON(0): Largest offscreen area available: 832 x 7555
+(II) RADEON(0): Largest offscreen area available: 896 x 7555
 (**) RADEON(0): Initializing color map
 (**) RADEON(0): Initializing DGA
 (**) RADEON(0): Initializing Xv
@@ -778,4 +785,16 @@
 (**) RADEON(0): RADEONSaveScreen(2)
 (**) RADEON(0): RADEONLeaveVT
 (**) RADEON(0): RADEONRestore
+(**) RADEON(0): RADEONRestoreMode()
+(**) RADEON(0): RADEONRestoreMode(0x10209d6c)
+(**) RADEON(0): RADEONRestoreMemMapRegisters() : 
+(**) RADEON(0):   MC_FB_LOCATION   : 0x03ff0000
+(**) RADEON(0):   MC_AGP_LOCATION  : 0x047f0400
+(**) RADEON(0):   Map Changed ! Applying ...
+(**) RADEON(0):   Map applied, resetting engine ...
+(**) RADEON(0): Updating display base addresses...
+(**) RADEON(0): Memory map updated.
+(**) RADEON(0): Programming CRTC1, offset: 0x00000000
+(**) RADEON(0): Wrote: 0x0000000c 0x00030059 0x00000000 (0x0000bc00)
+(**) RADEON(0): Wrote: rd=12, fd=89, pd=3
 (**) RADEON(0): Ok, leaving now...

I don't see anything that looks problematic. There's a warning about
display bandwidth and flickering, but I'm not experiencing any
flickering...

Yet I still get a blank screen. I did notice however, that it took my
monitor longer to decide whether it was getting a signal or not on lower
resolutions. This thing's light is normally green when in normal
operation and turns orange when sleeping or not getting a signal. On
resolutions above 832x624, the light turns orange immediately after
starting X. With resolutions equal to or below that, it took a few extra
seconds to turn orange. This could very well have just as much to do
with the price of tea in China as my corrupted screen, however... I
don't know :-/.

> 
> Roland

Thanks,
 Ari




More information about the xorg mailing list