ATI (Česky)
| Shrnutí |
|---|
| Přehled open sourcových ovladačů pro grafické karty ATI/AMD. |
| Související |
| ATI Catalyst (Česky) |
| Intel (Česky) |
| NVIDIA (Česky) |
| Xorg (Česky) |
Majitelé grafických karet ATI si mohou vybrat mezi proprietárními ovladači (catalyst) a "open source" (xf86-video-ati nebo xf86-video-radeonhd).
V současnosti open source ovladače nejsou na úrovni proprietárního ovladače v oblasti 3D výkonu a nepřítomnosti určitých vlastností, jakou je například spolehlivá podpora televizního výstupu. Nabízí nicméně lepší podporu pro dual-head (xf86-video-ati), výbornou 2D akceleraci a poskytují dostatečnou 3D akceleraci pro okenní správce akcelerované pomocí OpenGL, jakými jsou například Compiz nebo KWin. V současnosti je balíček ATI Catalyst dostupný v AUR (informace v angličtině).
Pokud si nejste jisti, jaké ovladače máte použít, vyzkoušejte jako první open source (xf86-video-ati). Tyto ovladače většinou vyhuvují všem potřebám a jsou velmi flexibilní (podrobnosti na feature matrix (anglicky)). Pokud chcete nainstalovat proprietární ovladače (catalyst) podívejte se na článek ATI Catalyst (anglicky); tento článek je zaměřen na open source ovladače.
Contents |
Naming conventions
ATI's Radeon brand follows a naming scheme that relates each product to a market segment. Within this article, readers will see both product names (e.g. HD 4850, X1900) and code or core names (e.g. RV770, R580). Traditionally, a product series will correspond to a core series (e.g. the "X1000" product series includes the X1300, X1600, X1800, and X1900 products which utilize the "R500" core series – including the RV515, RV530, R520, and R580 cores).
For a table of core and product series, see Wikipedia:Comparison of AMD graphics processing units.
Differences between open source drivers
xf86-video-ati (radeon)
- Works with Radeon chipsets up to HD 4xxx (latest R700 chipsets) as well as HD 5xxx (latest R800 chipsets).
- Radeons up to the X1xxx series are fully supported, stable, and full 2D and 3D acceleration are provided.
- Radeons from HD 2xxx to X4xxx have full 2D acceleration and functional 3D acceleration, but are not supported by all the features that the proprietary driver provides (for example, powersaving is still in a testing phase).
- Supports DRI1, RandR 1.2/1.3, EXA acceleration and kernel mode-setting/DRI2 (with the latest Linux kernel, libdrm and Mesa versions).
- All cards from HD 5xxx (R800) and newer are supported, but for now, with 2D support only.
- HDMI support will soon be implemented in xf86-video-ati over AtomBIOS.
xf86-video-radeonhd (radeonhd)
- Driver for ATI R500 chipsets (Radeon X1000 series) and newer.
- Written by Novell with specifications provided to the public by AMD.
- Supports RandR 1.2 and is under heavy development. It does also support HDMI with sound (if your hardware is so equipped, except RV730 based chip sets).
Generally, xf86-video-ati seems to offer more consistent performance as compared to xf86-video-radeonhd and is more actively developed, so it should be your first choice, no matter which ATI card you own. xf86-video-radeonhd should be used as a "fallback" driver in case you encounter errors with xf86-video-ati and it should not be used as a primary driver - radeonhd's development has been unofficially halted. In case you need to use a driver for newer ATI cards, you should prefer the proprietary catalyst driver.
Installation and configuration
Installation
To install xf86-video-ati:
pacman -S xf86-video-ati libgl ati-dri
To install xf86-video-radeonhd:
pacman -S xf86-video-radeonhd libgl ati-dri
Configuration
You now have the choice between creating an xorg.conf, or attempting to use the recently enabled Xorg autodetection.
Running Xorg without xorg.conf
In most cases, Xorg can autodetect your hardware settings. The Xorg.conf configuration file in /etc/X11 is optional since Xorg-server 1.5.x.
Always make sure you have mesa, the group xorg and the group xorg-input-drivers installed:
pacman -S xorg-input-drivers mesa xorg
Running Xorg with expanded xorg.conf
In case you want manual configuration, edit your xorg.conf, and add or make sure you have the following in their given sections:
Section "Module" Load "glx" Load "dri" Load "drm" EndSection
Device section for xf86-video-ati:
Section "Device" Identifier "name" # your alias Driver "radeon" EndSection
Device section for xf86-video-radeonhd:
Section "Device" Identifier "name" # your alias Driver "radeonhd" Option "AccelMethod" "exa" # to enable 2D and Xv acceleration on R6xx/R7xx - default AccelMethod shadowfb Option "DRI" "on" # to enable 2D and Xv acceleration on R6xx/R7xx - default DRI disabled EndSection
This section (DRI) is not needed (thus deprecated), but use it if you encounter DRI related problems.
Section "DRI" Group "video" Mode 0666 EndSection
Adding only the Device Section in the xorg.conf should fit most cases. Using that Section, you can enable features and tweak the driver's performance or behaviour.
When using the opensource drivers, ensure catalyst is not installed -- ati-dri is being used instead. Otherwise, the wrong libGL.so will be installed, which will cause direct rendering to fail.
Kernel mode-setting (KMS)
KMS enables native resolution in the framebuffer and allows for instant console (tty) switching. KMS also enables newer technologies (such as DRI2) which will help reduce artifacts and increase 3D performance, even kernel space power-saving.
KMS for ATI video cards requires the Xorg free video user space driver xf86-video-ati version 6.12.4 or later.
Enabling experimental KMS
Since kernel v.2.6.33, KMS is enabled by default for ATI cards.
Early KMS start
This method will start KMS as early as possible in the boot process (when the initramfs is loaded).
- Remove all
vga=options from the kernel line in the bootloader configuration file (/boot/grub/menu.lstfor GRUB users). Using other framebuffer drivers (such asuvesafborradeonfb) will conflict with KMS. Remove any framebuffer related modules from/etc/mkinitcpio.conf.video=can now be used in conjunction with KMS. - Add
radeonto MODULES array in/etc/mkinitcpio.conf. Depending on motherboard chipset, it may be necessary to addintel_agpbefore theradeonmodule. Previously, thefbconmodule also needed to be listed to be able to switch to the console after X has started, but is now compiled into the default kernel. - Re-generate your initramfs:
# mkinitcpio -p linux
- Add
radeon.modeset=1to the kernel options in the bootloader configuration file to enable KMS. - Reboot the system.
Late start
With this choice, KMS will be enabled when modules are loaded during the boot process.
- Remove all
vga=options from the kernel line in the bootloader configuration file (/boot/grub/menu.lstfor GRUB users). Using other framebuffer drivers (such asuvesafborradeonfb) will conflict with KMS. Remove any framebuffer related modules from/etc/mkinitcpio.conf.video=can now be used in conjunction with KMS. - Add
radeonto MODULES array in/etc/rc.conf. Depending on motherboard chipset, it may be necessary to addintel_agpbefore theradeonmodule. Previously, thefbconmodule also needed to be listed to be able to switch to the console after X has started, but is now compiled into the default kernel. - Reboot the system.
Troubleshooting KMS
Generic problem solution
If your card often crashes when loading the radeon module, starting your login manager, entering desktop or crashes when you start 3D apps like glxgears you can try if the kernel boot option "pci=nomsi" solves your problems. See https://bugzilla.kernel.org/show_bug.cgi?id=15626 for X200m cards.
Disable KMS
Users should consider disabling kernel mode-setting if encountering kernel panics, distorted framebuffer on boot, no GPU signal, Xorg refusing to start, Xorg falling back to Mesa software rasterizer (no 3D acceleration) or 'POWER OFF' problem (kernel 2.6.33-2)at shutdown.
- Add
radeon.modeset=0(ornomodeset, if this does not work) to the kernel options line in the bootloader configuration file (/boot/grub/menu.lstfor GRUB users). That should work. If you want to remove KMS support from the initramfs, follow the next two steps. - If
radeonwas added to the MODULES array inmkinitcpio.confto enable early start, remove it. - Rebuild the initramfs with
# mkinitcpio -p linux
Alternatively, module options can be specified in a file within the /etc/modprobe.d directory. If using the radeon module (lsmod | grep radeon) disable KMS by creating a file containing the above code:
/etc/modprobe.d/radeon.conf
options radeon modeset=0
Renaming xorg.conf
Renaming /etc/X11/xorg.conf, which may include options that conflict with KMS, will force Xorg to autodetect hardware with sane defaults. After renaming, restart Xorg.
Performance tuning
The following options apply to Section "Device" in /etc/X11/xorg.conf.
Tuning performance with xf86-video-ati
By design, xf86-video-ati runs at AGP 1x speed. It is generally safe to modify this. If you notice hangs, try reducing the value or removing the line entirely (you can use values 1, 2, 4, 8).
Option "AGPMode" "4"
ColorTiling is completely safe to enable and supposedly is enabled by default. People have noticed a performance increase when enabled via xorg.conf.
Option "ColorTiling" "on"
Acceleration architecture; this will work only on newer cards. If you enable this and then can't get back into X, remove it.
Option "AccelMethod" "EXA"
Page Flip is generally safe to enable. This would mostly be used on older cards, as enabling this would disable EXA. With recent drivers can be used together with EXA.
Option "EnablePageFlip" "on"
AGPFastWrite will enable fast writes for AGP cards. This one can be problematic, so be prepared to remove it if you can't get into X.
Option "AGPFastWrite" "yes"
EXAVSync option attempts to avoid tearing by stalling the engine until the display controller has passed the destination region. It reduces tearing at the cost of performance and has been know to cause instability on some chips. Really useful when enabling Xv overlay on videos on a 3D accelerated desktop. It is not necessary when KMS (thus DRI2 acceleration) is enabled.
Option "EXAVSync" "yes"
See an example Device Section in xorg.conf:
Section "Device"
Identifier "My Graphics Card"
Driver "radeon"
Option "DRI" "on"
Option "DynamicPM" "on" # Dynamic powersaving.
Option "ClockGating" "on" # Assisting option for powersaving.
Option "AccelMethod" "EXA" # EXA should fit most cases.
Option "EXAVSync" "on" # EXAVSync is explained above.
Option "DMAForXv" "on" # Forced option in order to enable Xv overlay.
Option "ScalerWidth" "2048" # That should fix some very rare bugs.
Option "EnablePageFlip" "on" # It will not be enabled on R5xx cards.
Option "RenderAccel" "on" # Optional. It should be enabled by default.
Option "AccelDFS" "on" #Optional. See the man page.
BusID "PCI:1:0:0"
EndSection
See the manpage for more configuration options.
man radeon
A fine tool to try is driconf. It will allow you to modify several settings, like vsync, anisotropic filtering, texture compression, etc. Using this tool it is also possible to "disable Low Impact fallback" needed by some programs (e.g. Google Earth).
Tuning performance with xf86-video-radeonhd
TODO
Powersaving
The powersaving part is totally different with and without KMS.
With KMS enabled
With the radeon driver powersaving isn't enabled by default. And considering that the stock kernel don't offer sysfs option for doing it, you can try two things:
1. Try adding radeon.dynpm=1 to the kernel parameters (if using the stock kernel).
2. Use the [radeon] repo:
# For x86_64 [radeon] Server = http://gtklocker.tiven.org/radeon-repo/x86_64/
# For i686 [radeon] Server = http://gtklocker.tiven.org/radeon-repo/i686/
And try adjusting /sys/class/drm/card0/device/power_profile. There are three profiles available: low, high, dynpm.
Low will always force the GPU to run at low levels. High will force it to run at full power, and dynpm will select between low and high depending on the GPU usage.
You can try a profile with
echo profile > /sys/class/drm/card0/device/power_profile
and when you find something that fits your needs, you can add it to /etc/rc.local, so it's executed at system startup and it becomes permanent.
Without KMS
In your xorg.conf file, add 2 lines to "Device" Section:
Option "DynamicPM" "on"
Option "ClockGating" "on"
If the two options are enabled successfully, you will see following lines in /var/log/Xorg.0.log:
(**) RADEON(0): Option "ClockGating" "on"
(**) RADEON(0): Option "DynamicPM" "on"
Static power management enable success
(II) RADEON(0): Dynamic Clock Gating Enabled
(II) RADEON(0): Dynamic Power Management Enabled
If you desire low power cost, you can add an extra line to "Device" Section of xorg.conf:
Option "ForceLowPowerMode" "on"
TV out
Since August 2007, there is TV-out support for all Radeons with integrated TV-out.
It is somewhat limited for now, it doesn't always autodetect the output correctly and only NTSC mode works.
First, check that you have an S-video output: xrandr should give you something like
Screen 0: minimum 320x200, current 1024x768, maximum 1280x1200 ... S-video disconnected (normal left inverted right x axis y axis)
Now we should tell Xorg that it is actually connected (it is, right?)
xrandr --output S-video --set load_detection 1
Setting tv standard to use:
xrandr --output S-video --set tv_standard ntsc
Adding a mode for it (currently it supports only 800x600):
xrandr --addmode S-video 800x600
I'll go for a clone mode:
xrandr --output S-video --same-as VGA-0
So far so good. Now let's try to see what we have:
xrandr --output S-video --mode 800x600
At this point you should see a 800x600 version of your desktop on your TV.
To disable the output, do
xrandr --output S-video --off
Also you may notice that the video is being played on monitor only and not on the TV. Where the Xv overlay is sent is controlled by XV_CRTC attribute.
To send the output to the TV, I do
xvattr -a XV_CRTC -v 1
To switch back to my monitor, I change this to 0. -1 is used for automatic switching in dualhead setups.
Please see Enabling TV-Out Statically for how to enable TV-out in your xorg config file.
HDMI with sound
Given that your hardware supports it, and you have installed xf86-video-radeonhd (note: The driver xf86-video-ati will soon get HDMI support.) you can insert the following into xorg.conf to enable HDMI with sound:
Section "Device" # ... Option "Audio" "on" Option "HDMI" "all" EndSection
Restart X when you have done this, try to see if there is sound transmitted to TV via HDMI cable.
- Connect your PC to the TV via HDMI cable (duh).
- Use xrandr to get picture to the TV. Ex:
xrandr --output DVI-D_1 --mode 1280x768 --right-of PANEL. Simply typingxrandrwill give you a list of your valid outputs. - Run
aplay -lto get the list of your sound devices. Find HDMI and note the card number and corresponding device number. Example of what you want to see:card 1: HDMI [HDA ATI HDMI], device 3: ATI HDMI [ATI HDMI] - Try sending sound to this device:
aplay -D plughw:1,3 /usr/share/sounds/alsa/Front_Center.wav. Be sure to change plughw:z,y to match your hardware number found with last command. You should be able to hear the test sound from your TV.
Note on RV730 and RV710
xf86-video-radeonhd does not support yet audio through HDMI for these chipsets, but work is in progress.
Troubleshooting
I encounter artifacts when logging into my DE or WM
If you encounter artifacts, first try starting X without /etc/X11/xorg.conf. Recent versions of Xorg are capable of reliable auto-detection and auto-configuration for most use cases. Outdated or improperly configured xorg.conf files are known to cause trouble.
In order to run without a configuration tile, it is recommended that the xorg-input-drivers package group be installed.
Artifacts may also be related to kernel mode setting. Consider disabling KMS.
I have switched from catalyst to radeonhd or radeon and some things don't work
First of all, don't panic. Uninstall catalyst, install xf86-video-radeonhd or xf86-video-ati and then reboot.
Make sure you are not using the xorg.conf generated by catalyst. Your original should have been backed up and you can recall it:
cp /etc/X11/xorg.conf.original-0 /etc/X11/xorg.conf
Otherwise, stop your graphical server if running, and in a tty, type as root:
Xorg -configure mv xorg.conf.new /etc/X11/xorg.conf
and make sure you put the required options.
If it still doesn't solve your problem, know that apparently catalyst has the bad idea to replace Xorg files with symbolic links pointing to its own files. The easiest at this point is to uninstall all catalyst stuff (just to be on the safe side) and then to reinstall xorg, libgl, ati-dri and xf86-video-radeonhd or xf86-video-ati.
If it still doesn't work, then have a look into the forum, your problem might be a configuration issue.
I have installed a free driver and my card is painfully slow
Some cards can be installed by default trying to use KMS. You can check whether this is your case running:
dmesg | egrep "drm|radeon"
This command might show something like this, meaning it is trying to default to KMS:
[drm] radeon default to kernel modesetting. ... [drm:radeon_driver_load_kms] *ERROR* Failed to initialize radeon, disabling IOCTL
If your card is not supported by KMS (anything older than r100), then you can disable KMS. This should fix the problem.
If you're getting and error message in dmesg like this:
platform radeon_cp.0: firmware: requesting radeon/R600_rlc.bin r600_cp: Failed to load firmware "radeon/R600_rlc.bin" [drm:r600_startup] *ERROR* Failed to load firmware! radeon 0000:01:00.0: disabling GPU acceleration
Install linux-firmware (currently in testing) or linux-firmware-git from AUR.