个人工具

UbuntuHelp:RadeonDriver/zh

来自Ubuntu中文

Yuanyelele讨论 | 贡献2007年7月28日 (六) 18:39的版本

跳转至: 导航, 搜索

ATI Radeon 开源驱动 HowTo

本指南将向您说明如何使用自由、开源的 ATI 显卡驱动——"radeon"。它提供了硬件支持的 2D 和 3D 加速。对有些显卡来说,这个驱动或许不如 fglrx 驱动稳定,但它与 AIGLX 兼容,而且有更好的双头支持。


适用于您的显卡么?

请首先检查您显卡的名称和芯片:

$ lspci

在列表中,试着寻找这样的几行(它们对应于您的显卡):

01:00.0 VGA compatible controller: ATI Technologies Inc RV350 AS [Radeon 9550]
01:00.1 Display controller: ATI Technologies Inc RV350 ?? [Radeon 9550] (Secondary)


不支持

您无法在以下的显卡(系列)中使用 "radeon" 驱动:

X1300 / R515 based cards.
X1600 / R530 based cards.
X1800 / R520 based cards.
X1900 / R580 based cards.

只有 2D 加速

Xpress 200M Northbridge integrated GPUs

实验性的 3D 加速

以下这些显卡(系列)包含完整的 2D 加速和实验性的 3D 加速支持:

9500 / R300 based cards.
9600 / rv350 or rv360 based cards.
9700 / R300 based cards.
9800 / R350 or R360 based cards.
X300 / rv370 based cards.
X600 / rv380 based cards.
X700 / rv410 based cards.
X800 / R420 or R423 or R430 or R480 based cards.
X850 / R480 or R481 based cards.


完整 3D 加速

以下这些显卡(系列)包含完整的加速支持:

7000 / rv100 based cards.
7200 / R100 based cards.
7500 / rv200 based cards.
8X00 / R200 based cards.
9000 / rv250 based cards.
9100 / R200 based cards.
9200 / rv280 based cards.

对基于 rv280 的显卡,在 DVI 输出时包含一个 bug,请参见 UbuntuHelp:Radeon_9200/9250_(RV280)_and_DVI

Ubuntu 6.10 (Edgy) installation with AIGLX

The ati driver is already shipped with Ubuntu, so you won't have to download it. This driver is completely compatible with AIGLX, so if you want an accelerated desktop, you won't need to install XGL.

Removing the proprietary fglrx driver

fglrx is the name of the official, proprietary, Radeon driver from ATI. It conflicts with the open source "radeon" driver. If the "fglrx" kernel module is loaded at boot, X will be able to start using the "radeon" driver but "Direct Rendering" (DRI) will be disabled. This results in a severe performance reduction. If you previously used the proprietary "fglrx" driver it is highly recommended to unload the "fglrx" module if you wish to use the open source "radeon" driver. This can be done with:

sudo modprobe -r fglrx

To prevent the loading of this module at boot, you may blacklist it.

The libGL.so in /usr/lib might also still be the version installed by xorg-driver-fglrx. You can check that very easily, just run:

$ glxinfo |grep vendor

If you see: client glx vendor string: ATI, then the libGL.so is still from ATI. Just remove the xorg-driver-fglrx package and make sure libgl1-mesa-glx and libgl1-mesa-dri are installed:

$ sudo apt-get remove xorg-driver-fglrx
$ sudo apt-get install libgl1-mesa-glx libgl1-mesa-dri


Configuring X.org

This method is based on the edition of /etc/X11/xorg.conf . You will have to edit it with superuser privileges (using the sudo command). You can use gedit if you are using Ubuntu (Gnome) or kate if you are using Kubuntu (KDE). If you are in a console you can use vim or nano .

sudo vim /etc/X11/xorg.conf

or

sudo nano /etc/X11/xorg.conf

Configuring your graphics card "Device" section

You first of all have to find the device section already related to your graphics card. It can have any name, or might even not exist if you are just installing your xserver. You can usually find it right after your mouse entry.

It should look like this:

Section "Device"
	Identifier	"Radeon 9600"
	Driver		"ati"
	BusID		"PCI:1:0:0"
	Option		"XAANoOffscreenPixmaps"
EndSection

Identifier is the name you give your graphics card. It is better if it is short. It can be anything. (I only tested with alphanumerical names though). Driver specifies which driver you want to use. IT HAS TO BE ati and NOT radeon or fglrx. BusID gives the hardware address of the graphics card. It always is PCI, even for an AGP card. The BusID can be found using the command lspci. A BusID given in lspci as 01:00.0 will become "PCI:1:0:0" in xorg.conf . The "XAANoOffscreenPixmaps" option is necessary for AIGLX desktop acceleration.


The "Monitor" section

This is what your monitor section should look like:

Section "Monitor"
	Identifier	"Generic Monitor"
	Option		"DPMS"
	HorizSync	28-72
	VertRefresh	43-60
EndSection

Identifier is the name you want to give your monitor. The DPMS option is a power management option -but i am not sure about that anymore- anyway, it will certainly be compatible with your hardware. Horiz``Sync and Vert``Refresh options are often not necessary. However for me they are. These are given in the example but are pretty much standard. You can refer to your monitor's documentation to find them.


The "Screen" section

It will basically look like that:

Section "Screen"
	Identifier	"Default Screen"
	Device		"Radeon 9600"
	Monitor		"Generic Monitor"
	DefaultDepth	24
	SubSection "Display"
		Depth		24
		Modes		"1440x900" "1024x768"
	EndSubSection
EndSection

Identifier is the name you give to your screen. It does not really matter, but I prefer it short. Device has to be the name you previously gave to your graphics card. Monitor is the name you gave your monitor Default``Depth is the bit-per-pixel depth X.org will use, most likely you want 24. The modes in the "Display" subsection have to be supported by your monitor. If you don't know, choose 1024x768, it is a safe bet. If you know, list your favorite resolution first, and the other resolutions available after.

Finalizing

Add the following sections at the end of the file if they don't exist elsewhere:

Section "DRI"
Mode 0666
EndSection

Section "Extensions"
Option "Composite" "Enable"
EndSection

Then check the "Server``Layout" section:

Section "ServerLayout"
	Option		"AIGLX"		"true"
	Identifier	"Default Layout"
	Screen		"Default Screen"
	InputDevice	"Generic Keyboard"
	InputDevice	"Configured Mouse"
EndSection

The AIGLX option is to enable AIGLX for fancy 3D desktop effects. Identifier should not be changed. Screen is the name you gave to your screen in the screen section. Input``Device are for the devices you want to use (with a section device in this file) and which are not your graphics card or monitor.


Restart and get a new accelerated desktop!

Restart the Xserver by pressing simultaneously Ctrl-Alt-Backspace if it is already running, or type in a console startx

If you want to have a new windows decorator to use AIGLX, you can try compiz (simple and performant) or Beryl (lots of bugs, sometimes slow, but lots of fancy stuff). However before that you might want to test the driver:

Testing The Driver

To see if you are using the driver you can test your 3D settings. To test your OpenGL acceleration you can run:


$ glxinfo | grep vendor

This has to be SGI. Otherwise you did not install the driver properly. Make sure you restarted the Xserver, or if this does not help, go to the "good bye fglrx" section.

$ glxinfo | grep "direct rendering"

If you get No direct rendering, then your card probably is not supported by the open source driver. You will have to install the proprietary fglrx driver. Please note that if you have to use the fglrx drivers, you won't be able to use AIGLX, as ATI are unable to provide proper drivers for their hardware.

Tweaking The Driver

There are a few options which you can give to the driver to speed up its performance. Here is an exemple of the device section of /etc/X11/xorg.conf.

Section "Device"
Identifier      "ATI Technologies, Inc. Radeon 9600"
Driver          "ati"
Option          "AGPMode"       "8"
Option          "AccelMethod"   "EXA"
Option          "ColorTiling"   "on"
BusID           "PCI:1:0:0"
EndSection

The AGPMode option is used to speed up the AGP bus from the conservative 1x, which is the default due to a few reported instabilities in higher modes. For some cards it is important that the AGP speed is set to same in the BIOS as well.

Check the manpage of the ati driver for more options. Please note that some more options might be available, but are undocumented.

$ man ati

Getting Dual-head working

There are two different ways to get dual-head (multiple displays on one computer) to work in X: using MergedFB or Xinerama. MergedFB is the simplest to configure, and has DRI (this has to do with 3D support) on both screens. This is thus the preferred way to set up Dual-Head.

MergedFB

MergedFB is automatically enabled when an external display is detected. If not configured correctly this will result in the screens running in clone mode, in stead of extending the desktop. To get a big desktop, add the following to the Section "Device" of your Xorg.conf:

Option  "MonitorLayout"                 "LCD, CRT"
Option  "CRT2Position"                  "RightOf"
Option  "MetaModes"                     "1400x1050-1024x768"
Option  "MergedXinerama"                "on"
Option  "MergedNonRectangular"          "true"
Option  "MergedFB"                      "true"

Please pay attention to the following things:

- Use the "Monitor``Layout" LCD and CRT even if you have 2 LCDs or CRTs. This basically defines which is the primary display.

- The "CRT2 Position" indicates the physical location of your secondary monitor in relationship to your primary monitor. Valid options are: Clone, Left``Of, Right``Of, Above, and Below

- "Meta``Modes" sets the monitor resolutions for Primary-Secondary monitors, which together make up the total virtual desktop. In this double-resolution example the primary display runs at 1400x1050 and the second display runs at 1024x768. These resolutions can also be equal. Defining a single resolution results in clone mode and putting multiple resolutions (single or double) between the parentencies allows switching with CTRL-ALT-+/-.

- the "Merged``Xinerama" setting assists in window placement support.

- If the two screens defined with "Meta``Modes" are not working at the same resolution, "Merged Non Rectangular" blocks the smaller one from scrolling by not allowing the mouse pointer to use the height difference of the two resolutions on the smallest screen.


If you do not get dual-head working based on these instructions, start by reading the "radeon" module's manual. This contains an overview of options that can be used with explanation of how they work. Reading the manual can be done by opening a terminal and running the following command:

$ man radeon

Please note However that this manual is out of date, which means some of the available options might not be described there.

Xinerama

Using Xinerama requires declaring all devices twice in Xorg.conf. Even if you only have one video card, you have to define it twice if you use two of its video output options. Your Xorg.conf will thus contain two monitor, device and screen definitions. Below is an example of this:

Section "Monitor"
	Identifier   "Monitor0"
	Option	    "DPMS" "true"
EndSection

Section "Monitor"
	Identifier   "Monitor1"
	Option	    "DPMS" "true"
EndSection

Section "Device"
	Identifier  "ati0"
	Driver      "ati"
	Option      "MonitorLayout"  "LVDS, CRT"
	Screen      0
	BusID       "PCI:1:0:0"
EndSection

Section "Device"
	Identifier  "ati1"
	Driver      "ati"
	Option      "MonitorLayout"  "LVDS, CRT"
	Screen      1
	BusID       "PCI:1:0:0"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "ati0"
	Monitor    "Monitor0"
	DefaultDepth     24
	SubSection "Display"
		Depth     24
		Modes		"1400x1050" "1280x1024" "1024x768" "800x600" "640x480"
	EndSubSection
EndSection

Section "Screen"
	Identifier "Screen1"
	Device     "ati1"
	Monitor    "Monitor1"
	DefaultDepth     24
	SubSection "Display"
		Depth     24
		Modes		"1400x1050" "1280x1024" "1024x768" "800x600" "640x480"
	EndSubSection
EndSection

Make sure the Monitor``Layout definition is correct. The types that can be used can be found in the ati manual page. Also make sure both screen definitions refer to the right device and monitor and the correct display modes are set.


Some changes also have to be made to the "Server``Layout" section. In the standard Ubuntu Xorg.conf only Screen 0 is defined. Make sure it contains the following settings:

	Screen      0  "Screen0" 0 0
	Screen      1  "Screen1" RightOf "Screen0"
	Option         "Xinerama"   "true"

Note that Screen 1 could also be "Clone", "Left``Of", "Right``Of", "Above", or "Below".


How does it work? (under construction)

Here I will give any information not related to the direct install or configuration of the driver.

The features of your hardware are useless unless the driver (the piece of software which controls it) has support for them. This is a serious issue with graphics cards, a vital component which is constantly being updated. The main issue with these cards is between the use of Free Software drivers, which are included in Ubuntu (such as the "nv" driver for Nvidia cards and the "ati" for ATI's cards) and the non-free drivers offered by the card's manufacturers. Since the inner working of these cards are often trade secrets the proprietary manufacturer's drivers often have more features than the Free Software drivers, but cannot be included in Ubuntu for moral, technical (they often only work on the x86 platform) and sometimes legal reasons.

The exception to this rule is the new, Free Software "radeon" driver, which offers full OpenGL 3D acceleration on graphics cards such as the Radeon 9700 pro and below.

The "radeon" driver is automatically called by the "ati" driver if your card is supported. You should therefore specify "ati" in xorg.conf. 3D acceleration is enabled using the drivers from the DRI project such as: r300 (still experimental, but works fine), r200, r100, r128. For a complete map of supported chipsets see DRI page (this page however is out of date).

ToDo

The radeon driver documentation still is completely out of date, we still ABSOLUTELY need to fix that. Gotta contact the package maintainer for updating the man pages.

Add more options to the "Tweaking" section and document the few which are there.

dual-head section completed by TomVerdaat. Thanks :)


See Also

[1] - Known bugs in the ati driver

UbuntuHelp:BinaryDriverHowto/ATI - The Wiki page for the proprietary ATI driver "fglrx" which also offers 3D acceleration, and works on newer cards than the "radeon" driver. This driver was reported to be unstable, has fewer dual head support and does not support AIGLX at all.

Thinkpad Wiki Page On Radeon Driver - A page containing useful options and configurations for the "radeon" driver.

Xorg 7.1 Manual - X.org 7.1 official documentation.


Page maintained by Benjamin Couhe ( voraistos )