Additional options for the radeon driver
Options for the radeon driver are documented on the radeon(4x) man page.
First of all, suppose you want to plug in your laptop into a projector occasionally, but you don't want to restart X when you do so. The easiest thing is to not use any of the CRT2 options and use
Option "MonitorLayout" "LVDS,NONE"
The vga port will carry the same signal as the laptop display (at least on my T42p). If the projector does not support the resolution, you can change it using xrandr.
You can use MergedFB to provide dualhead Xinerama-like setups. MergedFB's pseudo-Xinerama is not Xorg server's Xinerama. You don't have to enable Xorg server's Xinerama to use MergedFB's pseudo-Xinerama. However, applications compiled with Xinerama support (Gentoo users USE="xinerama") can interpret pseudo-Xinerama hints, for example, to maximize to a single monitor instead of spanning two monitors.
The following (partial) Xorg config will make the Radeon card use 1024x768 on the internal lcd display and 1280x1024 on the external (Note: only one screen/monitor section is needed (it controls the setup of the internal monitor) even though we have two displays): N.B.: Modes used in the MetaModes also have to be present in the screen modes section.
Section "Device" Identifier "ATI" Driver "radeon" # accelration Option "AGPMode" "4" Option "EnablePageFlip" "on" Option "RenderAccel" "on" # enable (partial) PowerPlay features Option "DynamicClocks" "on" # use bios hot keys on thinkpad (aka fn+f7) Option "BIOSHotkeys" "on" # enable radeon specific xinerama Option "MergedFB" "true" Option "CRT2Position" "RightOf" Option "CRT2Hsync" "50-75" Option "CRT2VRefresh" "30-82" Option "MetaModes" "1024x768-1280x1024" Option "MergedNonRectangular" "true" BusID "PCI:1:0:0" EndSection Section "Monitor" Identifier "InternalLCD" Option "DPMS" EndSection Section "Screen" Identifier "Default Screen" Device "ATI" Monitor "InternalLCD" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1024x768" EndSubSection EndSection
Note: The CRT2 directives always applies for the external monitor regardless of type (LCD, CRT...). The option MergedNonRectangular is needed to force the screens into two different sizes.
Section "Screen" Identifier "Default Screen" Device "ATI" Monitor "InternalLCD" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1024x768" EndSubSection SubSection "Display" Depth 24 Virtual 2304 1024 EndSubSection EndSection
External Monitors and Docking Stations/Port Replicators
I seems that Xorg incorectly discovers the external displays when connected to a docking station/port replicator - the only solution to this problem (at least that I know of) is to start the laptop (and boot all the way into X) prior to inserting it in the dock.
It also happens that if you are attempting to use the mergedFB trick to do dual head with out a docking station, you have to start X on the laptop LCD first, then plug a monitor into the VGA port. If the external monitor is already plugged in, the internal LCD will be blank.
I found that if I add Option "MonitorLayout" "LVDS, CRT" to my xorg.conf file - I don't have the 'blank' LCD panel problem when I plug the external monitor in before powering up. (Radeon 9600 M10 [RV350] with xorg 7.0.0). However - if you want anything other than 'Clone' mode of MergeFB, then you also have to make sure your "Modes" line in the "Screen" section contains the both modes defined in your MetaModes option.
Option "MonitorLayout" "LVDS, CRT" Option "MetaModes" "1024x768-1280x1024" .... SubSection "Display" Depth 24 Modes "1024x768" "1280x1024"
This also resulted in my Notebook having a Virtual screen size of "2304x1024" when the external monitor is connected - but only 1024x768 when it's not connected. Until I did this - even with the external monitor disconnected - the virtual screen size was "2304x1024" and windows would open where I couldn't get to them.
External Monitors and FireGL Boards with x.org 7
x.org release 7, the modular release, broke mergedfb mode with FireGL boards (t4xp systems). Dual screen displays hard locked the machine in certain cases. This is fixed in x.org cvs. Fedora Core 5 (and possibly other distros using x.org 7) can get a new version of radeon_drv.so here.
By default, the open source radeon driver forces 1x AGP speed. Quote from the developers:
tuning to the highest speed possible has caused hangs on some boxes, with no discernable pattern, so we default to 'slow but safe' whilst giving the option to go fast if the user wants to try it.
Higher speeds can be enabled by adding Option "AGPMode" "X" (where X is a number) in the Device section in /etc/X11/xorg.conf.
Section "Device" Identifier "Videocard0" Driver "radeon" VendorName "IBM Thinkpad" BoardName "ATIdd Mobility FireGL 7800" Option "AGPMode" "4" EndSection
With this option enabled (set to 4x speed), the X11 server should print (/var/log/Xorg.0.log):
(**) RADEON(0): Option "AGPMode" "4" (**) RADEON(0): Using AGP 4x mode
AGP Fast Writes
By default, the open source radeon driver disables AGP Fast Writes. Fast Writes can be enabled by adding Option "AGPFastWrite" "yes" in the Device section in /etc/X11/xorg.conf.
Section "Device" Identifier "Videocard0" Driver "radeon" VendorName "IBM Thinkpad" BoardName "ATI Mobility FireGL 7800" Option "AGPFastWrite" "yes" EndSection
Dynamic Clock scaling
- How to make use of Graphics Chips Power Management features (save even more battery power)
- Xorg bug DynamicClocks may hang your machine
ColorTiling is supposed to be enabled by default. But, it looks like setting it explicitely to "on" increases the FPS in glxgears.
Option "ColorTiling" "on"
By default, the XAA architecture is used. EXA is newer and supposed to have better performance. It looks like it reduces the FPS in glxgears (maybe because it disables Page Flip) but makes the Composite extension be fast.
Option "AccelMethod" "EXA"
Page Flip increases performance but is not always supported. It will be disabled if the EXA architecture is used.
Option "EnablePageFlip" "on"
When the video overlay is used (e.g., by most video players) in dual-screen configuration, the content will be shown only on one head (LCD or CRT) and the other will display a blank rectangle. To control which head displays the video, use the following:
Option "OverlayOnCRTC2" "on"
Note : You may want to have the video overlay on both Screens. Simply add the following 2 lines :
Option "OverlayOnCRTC1" "on" Option "OverlayOnCRTC2" "on"
To switch on the fly, use these commands:
xvattr -a XV_SWITCHCRT -v 0(LCD)
xvattr -a XV_SWITCHCRT -v 1(CRT)
Or if it gives you an "invalid parameter attributes error", you can try:
xvattr -a XV_CRTC -v 0(LCD)
xvattr -a XV_CRTC -v 1(CRT)