Difference between revisions of "Additional options for the radeon driver"

From ThinkWiki
Jump to: navigation, search
(Video overlay)
 
(11 intermediate revisions by 10 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==
 +
 +
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.
 
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.
  
Line 42: Line 54:
 
  EndSection
 
  EndSection
  
Note: The '''CRT2''' directives always applies for the external monitore regardless of type (LCD, CRT...). The option '''MergedNonRectangular''' is needed to force the screens into two different sizes.
+
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===
Line 51: Line 80:
 
LCD first, then plug a monitor into the VGA port.  If the external monitor
 
LCD first, then plug a monitor into the VGA port.  If the external monitor
 
is already plugged in, the internal LCD will be blank.
 
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 90: 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 121: Line 167:
  
 
         Option          "OverlayOnCRTC2"        "on"
 
         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:
 
To switch on the fly, use these commands:
Line 126: Line 178:
 
:{{cmd|xvattr -a XV_SWITCHCRT -v 0|}} &nbsp; (LCD)
 
:{{cmd|xvattr -a XV_SWITCHCRT -v 0|}} &nbsp; (LCD)
 
:{{cmd|xvattr -a XV_SWITCHCRT -v 1|}} &nbsp; (CRT)
 
:{{cmd|xvattr -a XV_SWITCHCRT -v 1|}} &nbsp; (CRT)
 +
 +
Or if it gives you an "invalid parameter attributes error", you can try:
 +
 +
:{{cmd|xvattr -a XV_CRTC -v 0|}} &nbsp; (LCD)
 +
:{{cmd|xvattr -a XV_CRTC -v 1|}} &nbsp; (CRT)
  
 
{{HINT|You can configure [[acpid]] to execute these commands automatically when the lid is opened or closed.}}
 
{{HINT|You can configure [[acpid]] to execute these commands automatically when the lid is opened or closed.}}

Latest revision as of 00:57, 27 June 2009

Options for the radeon driver are documented on the radeon(4x) man page.

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
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

Please see:

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)
Hint:
You can configure acpid to execute these commands automatically when the lid is opened or closed.

Related Links