Difference between revisions of "Additional options for the radeon driver"
(→External Monitors) |
|||
(25 intermediate revisions by 20 users not shown) | |||
Line 1: | Line 1: | ||
− | Options for the radeon driver are documented on the radeon(4x) man page. | + | Options for the [[radeon]] driver are documented on the radeon(4x) man page. |
==External Monitors== | ==External Monitors== | ||
− | You can use '''MergedFB''' to provide dualhead '''Xinerama''' like setups - | + | |
+ | 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. | ||
+ | |||
+ | ===Using Xinerama=== | ||
+ | |||
+ | 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" | Section "Device" | ||
Identifier "ATI" | Identifier "ATI" | ||
Driver "radeon" | Driver "radeon" | ||
− | # accelration | + | '''# accelration''' |
Option "AGPMode" "4" | Option "AGPMode" "4" | ||
Option "EnablePageFlip" "on" | Option "EnablePageFlip" "on" | ||
Option "RenderAccel" "on" | Option "RenderAccel" "on" | ||
− | # enable PowerPlay features | + | '''# enable (partial) PowerPlay features''' |
Option "DynamicClocks" "on" | Option "DynamicClocks" "on" | ||
− | # use bios hot keys on thinkpad (aka fn+f7) | + | '''# use bios hot keys on thinkpad (aka fn+f7)''' |
Option "BIOSHotkeys" "on" | Option "BIOSHotkeys" "on" | ||
− | # enable radeon specific xinerama | + | '''# enable radeon specific xinerama''' |
Option "MergedFB" "true" | Option "MergedFB" "true" | ||
Option "CRT2Position" "RightOf" | Option "CRT2Position" "RightOf" | ||
Line 39: | Line 54: | ||
EndSection | EndSection | ||
− | Note: The '''CRT2''' directives always applies for the external | + | 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. |
+ | |||
+ | You may also need to add a Virtual SubSection to your Screen Section like so. (See [http://dri.freedesktop.org/wiki/MergedFB here], [http://ozlabs.org/~jk/docs/mergefb/ here] and [http://www.botchco.com/alex/radeon/mergedfb/cvs/DRI/final/radeon.4.html here].) | ||
+ | |||
+ | 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=== | ===External Monitors and Docking Stations/Port Replicators=== | ||
− | I | + | 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. | ||
+ | <pre> | ||
+ | Option "MonitorLayout" "LVDS, CRT" | ||
+ | Option "MetaModes" "1024x768-1280x1024" | ||
+ | .... | ||
+ | SubSection "Display" | ||
+ | Depth 24 | ||
+ | Modes "1024x768" "1280x1024" | ||
+ | </pre> | ||
+ | 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 [http://www.marcuswatkins.net/firegl_xorg7_fedora.html here]. | ||
==AGP speed== | ==AGP speed== | ||
Line 82: | Line 133: | ||
EndSection | EndSection | ||
+ | {{NOTE|With this one X hangs on startup (black screen) on my ThinkPad T42 (helios42)}} | ||
+ | {{NOTE|The same problem as above (X hangs on startup (black screen)) has been experienced on a ThinkPad T41p}} | ||
+ | {{NOTE|The same problem as above (X hangs on startup (black screen)) has been experienced on a Dell Inspiron 600M laptop}} | ||
==Dynamic Clock scaling== | ==Dynamic Clock scaling== | ||
Line 88: | Line 142: | ||
*[[How to make use of Graphics Chips Power Management features]] <tt>(save even more battery power)</tt> | *[[How to make use of Graphics Chips Power Management features]] <tt>(save even more battery power)</tt> | ||
+ | *[https://bugs.freedesktop.org/show_bug.cgi?id=2187 Xorg bug] <tt>DynamicClocks may hang your machine</tt> | ||
+ | |||
+ | ==Color Tiling== | ||
+ | |||
+ | 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" | ||
+ | |||
+ | ==Acceleration Architecture== | ||
+ | |||
+ | 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== | ||
+ | |||
+ | Page Flip increases performance but is not always supported. It will be disabled if the EXA architecture is used. | ||
+ | |||
+ | Option "EnablePageFlip" "on" | ||
+ | |||
+ | ==Video overlay== | ||
+ | |||
+ | 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: | ||
+ | |||
+ | :{{cmd|xvattr -a XV_SWITCHCRT -v 0|}} (LCD) | ||
+ | :{{cmd|xvattr -a XV_SWITCHCRT -v 1|}} (CRT) | ||
+ | |||
+ | Or if it gives you an "invalid parameter attributes error", you can try: | ||
+ | |||
+ | :{{cmd|xvattr -a XV_CRTC -v 0|}} (LCD) | ||
+ | :{{cmd|xvattr -a XV_CRTC -v 1|}} (CRT) | ||
+ | |||
+ | {{HINT|You can configure [[acpid]] to execute these commands automatically when the lid is opened or closed.}} | ||
+ | |||
+ | == Related Links == | ||
+ | *[http://www.x.org/X11R6.8.2/doc/radeon.4.html xorg 6.8.2 Radeon manual page] |
Latest revision as of 00:57, 27 June 2009
Options for the radeon driver are documented on the radeon(4x) man page.
Contents
External Monitors
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.
Using Xinerama
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.
You may also need to add a Virtual SubSection to your Screen Section like so. (See here, here and here.)
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.
AGP speed
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
Please see:
- How to make use of Graphics Chips Power Management features (save even more battery power)
- Xorg bug DynamicClocks may hang your machine
Color Tiling
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"
Acceleration Architecture
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
Page Flip increases performance but is not always supported. It will be disabled if the EXA architecture is used.
Option "EnablePageFlip" "on"
Video overlay
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)