Difference between revisions of "Radeon"
(→Firmware: add radeon/BTC_rlc.bin and more chipsets) |
(→Firmware: UVD) |
||
Line 147: | Line 147: | ||
| RV790, RV770, RV730, RV710, RV740 | | RV790, RV770, RV730, RV710, RV740 | ||
| HD4330-HD5165, HD5xxV | | HD4330-HD5165, HD5xxV | ||
− | | {{Path|radeon/R700_rlc.bin}} | + | | {{Path|radeon/R700_rlc.bin radeon/RV710_uvd.bin<sup>1</sup> <sup>2</sup>}} |
|- | |- | ||
| rowspan="7" | Evergreen | | rowspan="7" | Evergreen | ||
| CEDAR | | CEDAR | ||
| HD5450 | | HD5450 | ||
− | | {{Path|radeon/CEDAR_me.bin radeon/CEDAR_pfp.bin radeon/CEDAR_rlc.bin}} | + | | {{Path|radeon/CEDAR_me.bin radeon/CEDAR_pfp.bin radeon/CEDAR_rlc.bin radeon/CYPRESS_uvd.bin<sup>1</sup>}} |
|- | |- | ||
| REDWOOD | | REDWOOD | ||
| HD5550, HD5570, HD5670 | | HD5550, HD5570, HD5670 | ||
− | | {{Path|radeon/REDWOOD_me.bin radeon/REDWOOD_pfp.bin radeon/REDWOOD_rlc.bin}} | + | | {{Path|radeon/REDWOOD_me.bin radeon/REDWOOD_pfp.bin radeon/REDWOOD_rlc.bin radeon/CYPRESS_uvd.bin<sup>1</sup>}} |
|- | |- | ||
| JUNIPER | | JUNIPER | ||
| HD5750, HD5770 | | HD5750, HD5770 | ||
− | | {{Path|radeon/JUNIPER_me.bin radeon/JUNIPER_pfp.bin radeon/JUNIPER_rlc.bin}} | + | | {{Path|radeon/JUNIPER_me.bin radeon/JUNIPER_pfp.bin radeon/JUNIPER_rlc.bin radeon/CYPRESS_uvd.bin<sup>1</sup>}} |
|- | |- | ||
| CYPRESS | | CYPRESS | ||
| HD5830, HD5850, HD5870 HD5970 | | HD5830, HD5850, HD5870 HD5970 | ||
− | | {{Path|radeon/CYPRESS_me.bin radeon/CYPRESS_pfp.bin radeon/CYPRESS_rlc.bin}} | + | | {{Path|radeon/CYPRESS_me.bin radeon/CYPRESS_pfp.bin radeon/CYPRESS_rlc.bin radeon/CYPRESS_uvd.bin<sup>1</sup>}} |
|- | |- | ||
| PALM (Wrestler) | | PALM (Wrestler) | ||
| HD6250, HD6310 | | HD6250, HD6310 | ||
− | | {{Path|radeon/PALM_me.bin radeon/PALM_pfp.bin}} | + | | {{Path|radeon/PALM_me.bin radeon/PALM_pfp.bin radeon/SUMO_uvd.bin<sup>1</sup>}} |
|- | |- | ||
| SUMO | | SUMO | ||
| HD6290, HD6320 | | HD6290, HD6320 | ||
− | | {{Path|radeon/SUMO_me.bin radeon/SUMO_pfp.bin radeon/SUMO_rlc.bin}} | + | | {{Path|radeon/SUMO_me.bin radeon/SUMO_pfp.bin radeon/SUMO_rlc.bin radeon/SUMO_uvd.bin<sup>1</sup>}} |
|- | |- | ||
| SUMO2 | | SUMO2 | ||
| HD6370D, HD6410D | | HD6370D, HD6410D | ||
− | | {{Path|radeon/SUMO2_me.bin radeon/SUMO2_pfp.bin radeon/SUMO_rlc.bin}} | + | | {{Path|radeon/SUMO2_me.bin radeon/SUMO2_pfp.bin radeon/SUMO_rlc.bin radeon/SUMO_uvd.bin<sup>1</sup>}} |
|- | |- | ||
| rowspan="5" | Northern Islands | | rowspan="5" | Northern Islands | ||
| CAICOS | | CAICOS | ||
| HD6450, HD64xxM | | HD6450, HD64xxM | ||
− | | {{Path|radeon/BTC_rlc.bin radeon/CAICOS_mc.bin radeon/CAICOS_me.bin radeon/CAICOS_pfp.bin}} | + | | {{Path|radeon/BTC_rlc.bin radeon/CAICOS_mc.bin radeon/CAICOS_me.bin radeon/CAICOS_pfp.bin radeon/SUMO_uvd.bin<sup>1</sup>}} |
|- | |- | ||
| TURKS | | TURKS | ||
| HD6570, HD6670 | | HD6570, HD6670 | ||
− | | {{Path|radeon/BTC_rlc.bin radeon/TURKS_mc.bin radeon/TURKS_me.bin radeon/TURKS_pfp.bin}} | + | | {{Path|radeon/BTC_rlc.bin radeon/TURKS_mc.bin radeon/TURKS_me.bin radeon/TURKS_pfp.bin radeon/SUMO_uvd.bin<sup>1</sup>}} |
|- | |- | ||
| BARTS | | BARTS | ||
| HD6790, HD6850, HD6870, HD67xxM | | HD6790, HD6850, HD6870, HD67xxM | ||
− | | {{Path|radeon/BTC_rlc.bin radeon/BARTS_mc.bin radeon/BARTS_me.bin radeon/BARTS_pfp.bin}} | + | | {{Path|radeon/BTC_rlc.bin radeon/BARTS_mc.bin radeon/BARTS_me.bin radeon/BARTS_pfp.bin radeon/SUMO_uvd.bin<sup>1</sup>}} |
|- | |- | ||
| CAYMAN | | CAYMAN | ||
| HD6950, HD6970, HD6990, HD69xxM | | HD6950, HD6970, HD6990, HD69xxM | ||
− | | {{Path|radeon/CAYMAN_mc.bin radeon/CAYMAN_me.bin radeon/CAYMAN_pfp.bin radeon/CAYMAN_rlc.bin}} | + | | {{Path|radeon/CAYMAN_mc.bin radeon/CAYMAN_me.bin radeon/CAYMAN_pfp.bin radeon/CAYMAN_rlc.bin radeon/SUMO_uvd.bin<sup>1</sup>}} |
|- | |- | ||
| ARUBA | | ARUBA | ||
| HD7400D/G, HD7500D/G, HD7600D/G | | HD7400D/G, HD7500D/G, HD7600D/G | ||
− | | {{Path|radeon/ARUBA_me.bin radeon/ARUBA_pfp.bin radeon/ARUBA_rlc.bin}} | + | | {{Path|radeon/ARUBA_me.bin radeon/ARUBA_pfp.bin radeon/ARUBA_rlc.bin radeon/TAHITI_uvd.bin<sup>1</sup>}} |
|- | |- | ||
| rowspan="4" | Southern Islands | | rowspan="4" | Southern Islands | ||
| CAPE VERDE | | CAPE VERDE | ||
| HD7700 | | HD7700 | ||
− | | {{Path|radeon/VERDE_ce.bin radeon/VERDE_mc.bin radeon/VERDE_me.bin radeon/VERDE_pfp.bin radeon/VERDE_rlc.bin}} | + | | {{Path|radeon/VERDE_ce.bin radeon/VERDE_mc.bin radeon/VERDE_me.bin radeon/VERDE_pfp.bin radeon/VERDE_rlc.bin radeon/TAHITI_uvd.bin<sup>1</sup>}} |
|- | |- | ||
| PITCAIRN | | PITCAIRN | ||
| HD7800 | | HD7800 | ||
− | | {{Path|radeon/PITCAIRN_ce.bin radeon/PITCAIRN_mc.bin radeon/PITCAIRN_me.bin radeon/PITCAIRN_pfp.bin radeon/PITCAIRN_rlc.bin}} | + | | {{Path|radeon/PITCAIRN_ce.bin radeon/PITCAIRN_mc.bin radeon/PITCAIRN_me.bin radeon/PITCAIRN_pfp.bin radeon/PITCAIRN_rlc.bin radeon/TAHITI_uvd.bin<sup>1</sup>}} |
|- | |- | ||
| TAHITI | | TAHITI | ||
| HD7900 | | HD7900 | ||
− | | {{Path|radeon/TAHITI_ce.bin radeon/TAHITI_mc.bin radeon/TAHITI_me.bin radeon/TAHITI_pfp.bin radeon/TAHITI_rlc.bin}} | + | | {{Path|radeon/TAHITI_ce.bin radeon/TAHITI_mc.bin radeon/TAHITI_me.bin radeon/TAHITI_pfp.bin radeon/TAHITI_rlc.bin radeon/TAHITI_uvd.bin<sup>1</sup>}} |
|- | |- | ||
| OLAND | | OLAND | ||
| HD8550M-HD8790M | | HD8550M-HD8790M | ||
− | | {{Path|radeon/OLAND_ce.bin radeon/OLAND_mc.bin radeon/OLAND_me.bin radeon/OLAND_pfp.bin radeon/OLAND_rlc.bin}} | + | | {{Path|radeon/OLAND_ce.bin radeon/OLAND_mc.bin radeon/OLAND_me.bin radeon/OLAND_pfp.bin radeon/OLAND_rlc.bin radeon/TAHITI_uvd.bin<sup>1</sup>}} |
|} | |} | ||
+ | |||
+ | ::1) UVD is supported by >={{Package|sys-kernel/gentoo-sources}}-3.9.1-r1 or vanilla kernel 3.10-rc1, together with >={{Package|sys-kernel/linux-firmware}}-20130421 or >={{Package|x11-drivers/radeon-ucode}}-20130411 | ||
+ | ::2) Only for RV710, RV730, RV740 | ||
=== Driver === | === Driver === |
Revision as of 17:15, 11 May 2013
radeon is a family of open source graphics drivers for AMD/ATI Radeon graphics cards.
Hardware detection
To choose the right driver, first detect the graphics card. You can use lspci for this task:
root #
lspci | grep -i VGA
Feature support
Family | Chipset name | Product name | OpenGL | OpenGL ES | VIDEO_CARDS |
---|---|---|---|---|---|
R100 | R100, RV100, RV200, RS100, RS200 | 7xxx, 320-345 | 1.3 | No | radeon r100 |
R200 | R200, RV250, RV280, RS300 | 8xxx-9250 | 1.4 | No | radeon r200 |
R300 | R300, R350, RV350, RV380, RS400, RS480 | 9500-9800, X300-X600, X1050-X1150, 200M | 2.1 | 2.0 | radeon r300 |
R400 | R420, R423, RV410, RS600, RS690, RS740 | X700-X850, X12xx, 2100 | 2.1 | 2.0 | radeon r300 |
R500 | RV515, R520, RV530, RV560, RV570, R580 | X1300-X2300, HD2300 | 2.1 | 2.0 | radeon r300 |
R600 | R600, RV610, RV630, RV620, RV635, RV670, RS780, RS880 | HD2400-HD4290 | 3.0 (3.1)1 | 2.0 | radeon r600 |
R700 | RV770, RV730, RV710, RV740 | HD4330-HD5165, HD5xxV | 3.0 (3.1)1 | 2.0 | radeon r600 |
Evergreen | CEDAR, REDWOOD, JUNIPER, CYPRESS, PALM (Wrestler), SUMO, SUMO2 | HD5430-HD5970, all HD6xxx not listed under Northern Islands, HD7350 | 3.0 (3.1)1 | 2.0 | radeon r600 |
Northern Islands | ARUBA, BARTS, TURKS, CAICOS, CAYMAN | HD6450, HD6570, HD6670, HD6790-HD6990, HD64xxM, HD67xxM, HD69xxM, HD7450-HD7670 | 3.0 (3.1)1 | 2.0 | radeon r600 |
Southern Islands | CAPE VERDE, PITCAIRN, TAHITI | HD7750-HD7970 | 3.02 (3.1)1 | 2.0 | radeon radeonsi |
- 1) Needs testing packages: >=mesa-9.1
- 2) Work in Progress
Installation
Kernel
You need to activate the following kernel options: Template:Kernel
Firmware
There is IRQ microcode for R600 and newer GPUs. Install either x11-drivers/radeon-ucode or sys-kernel/linux-firmware (contains also other firmware):
root #
emerge --ask radeon-ucode
root #
emerge --ask linux-firmware
Make sure firmware for your model (check available ones in /lib/firmware/radeon) is included in kernel: Template:Kernel
Below is a list of the firmware files needed for each family of cards:
Family | Chipset name | Product name | Firmware |
---|---|---|---|
R500 | R520 | ATI X1300 | radeon/R520_cp.bin |
R600 | R600, RV610, RV630, RV620, RV635, RV670, RS780, RS880 | HD2400-HD4290 | radeon/R600_rlc.bin |
R700 | RV790, RV770, RV730, RV710, RV740 | HD4330-HD5165, HD5xxV | radeon/R700_rlc.bin radeon/RV710_uvd.bin1 2 |
Evergreen | CEDAR | HD5450 | radeon/CEDAR_me.bin radeon/CEDAR_pfp.bin radeon/CEDAR_rlc.bin radeon/CYPRESS_uvd.bin1 |
REDWOOD | HD5550, HD5570, HD5670 | radeon/REDWOOD_me.bin radeon/REDWOOD_pfp.bin radeon/REDWOOD_rlc.bin radeon/CYPRESS_uvd.bin1 | |
JUNIPER | HD5750, HD5770 | radeon/JUNIPER_me.bin radeon/JUNIPER_pfp.bin radeon/JUNIPER_rlc.bin radeon/CYPRESS_uvd.bin1 | |
CYPRESS | HD5830, HD5850, HD5870 HD5970 | radeon/CYPRESS_me.bin radeon/CYPRESS_pfp.bin radeon/CYPRESS_rlc.bin radeon/CYPRESS_uvd.bin1 | |
PALM (Wrestler) | HD6250, HD6310 | radeon/PALM_me.bin radeon/PALM_pfp.bin radeon/SUMO_uvd.bin1 | |
SUMO | HD6290, HD6320 | radeon/SUMO_me.bin radeon/SUMO_pfp.bin radeon/SUMO_rlc.bin radeon/SUMO_uvd.bin1 | |
SUMO2 | HD6370D, HD6410D | radeon/SUMO2_me.bin radeon/SUMO2_pfp.bin radeon/SUMO_rlc.bin radeon/SUMO_uvd.bin1 | |
Northern Islands | CAICOS | HD6450, HD64xxM | radeon/BTC_rlc.bin radeon/CAICOS_mc.bin radeon/CAICOS_me.bin radeon/CAICOS_pfp.bin radeon/SUMO_uvd.bin1 |
TURKS | HD6570, HD6670 | radeon/BTC_rlc.bin radeon/TURKS_mc.bin radeon/TURKS_me.bin radeon/TURKS_pfp.bin radeon/SUMO_uvd.bin1 | |
BARTS | HD6790, HD6850, HD6870, HD67xxM | radeon/BTC_rlc.bin radeon/BARTS_mc.bin radeon/BARTS_me.bin radeon/BARTS_pfp.bin radeon/SUMO_uvd.bin1 | |
CAYMAN | HD6950, HD6970, HD6990, HD69xxM | radeon/CAYMAN_mc.bin radeon/CAYMAN_me.bin radeon/CAYMAN_pfp.bin radeon/CAYMAN_rlc.bin radeon/SUMO_uvd.bin1 | |
ARUBA | HD7400D/G, HD7500D/G, HD7600D/G | radeon/ARUBA_me.bin radeon/ARUBA_pfp.bin radeon/ARUBA_rlc.bin radeon/TAHITI_uvd.bin1 | |
Southern Islands | CAPE VERDE | HD7700 | radeon/VERDE_ce.bin radeon/VERDE_mc.bin radeon/VERDE_me.bin radeon/VERDE_pfp.bin radeon/VERDE_rlc.bin radeon/TAHITI_uvd.bin1 |
PITCAIRN | HD7800 | radeon/PITCAIRN_ce.bin radeon/PITCAIRN_mc.bin radeon/PITCAIRN_me.bin radeon/PITCAIRN_pfp.bin radeon/PITCAIRN_rlc.bin radeon/TAHITI_uvd.bin1 | |
TAHITI | HD7900 | radeon/TAHITI_ce.bin radeon/TAHITI_mc.bin radeon/TAHITI_me.bin radeon/TAHITI_pfp.bin radeon/TAHITI_rlc.bin radeon/TAHITI_uvd.bin1 | |
OLAND | HD8550M-HD8790M | radeon/OLAND_ce.bin radeon/OLAND_mc.bin radeon/OLAND_me.bin radeon/OLAND_pfp.bin radeon/OLAND_rlc.bin radeon/TAHITI_uvd.bin1 |
- 1) UVD is supported by >=sys-kernel/gentoo-sources-3.9.1-r1 or vanilla kernel 3.10-rc1, together with >=sys-kernel/linux-firmware-20130421 or >=x11-drivers/radeon-ucode-20130411
- 2) Only for RV710, RV730, RV740
Driver
Portage uses the variable VIDEO_CARDS for enabling support for various graphics cards in packages. Setting VIDEO_CARDS to e.g. radeon (see the feature matrix) will pull in the correct driver: Template:File
Check the USE flags of x11-drivers/xf86-video-ati:
USE flags for x11-drivers/xf86-video-ati ATI video driver
udev
|
Enable virtual/udev integration (device discovery, power and storage device support, etc) |
After setting this you want to update your system so the changes take effect:
root #
emerge --ask --changed-use --deep @world
Configuration
Permissions
If the acl
USE flag is enabled globally and elogind
is being used (default for desktop profiles) permissions to video cards will be handled automatically. It is possible to check the permissions using getfacl:
user $
getfacl /dev/dri/card0 | grep larry
user:larry:rw-
A broader solution is to add the user(s) needing access the video card to the video group:
root #
gpasswd -a larry video
Note that users will be able to run X without permission to the DRI subsystem, but hardware acceleration will be disabled.
xorg.conf
The X server is designed to work out-of-the-box, with no need to manually edit X.Org's configuration files. It should detect and configure devices such as displays, keyboards, and mice.
However, the main configuration file of the X server is the xorg.conf.
You can force the X server to use desired driver with:
Section "Device"
Identifier "radeon"
Driver "radeon"
EndSection
Advanced configuration
Power Management
Power management can be set in the sysfs filesystem as follows:
- Check the current power method:
root #
cat /sys/class/drm/card0/device/power_method
- Change the power method:
- The "dynpm" method dynamically changes the clocks based on demand. (not effective as of June 27, 2012)
root #
echo "dynpm" > /sys/class/drm/card0/device/power_method
- The "profile" method lets you set a profile on how the card should behave.
root #
echo "profile" > /sys/class/drm/card0/device/power_method
- Check the current profile:
root #
cat /sys/class/drm/card0/device/power_profile
- Change the profile:
- Options for profile:
- "default" no change of clock speeds
- "auto" switches between "mid" and "high" power states based on the whether the system is on battery power or not. The "low" power state are selected when the monitors are in the dpms off state.
- "low" forces the GPU to be in the low power state all the time. Note that "low" can cause display problems on some laptops; this is why auto does not use "low" when displays are active.
- "mid" forces the GPU to be in the "mid" power state all the time. The "low" power state is selected when the monitors are in the dpms off state.
- "high" forces the GPU to be in the "high" power state all the time. The "low" power state is selected when the monitors are in the dpms off state.
root #
echo "low" > /sys/class/drm/card0/device/power_profile
- Check the current GPU, Memory clocks and voltage (needs to have kernel debugfs enabled):
root #
cat /sys/kernel/debug/dri/0/radeon_pm_info
- Note
With more than one monitor connected, the memory clock will always be on full speed. - Note
On APU chipsets, those settings have little to no effect and give inconclusive results.
Tuning
I couldn't find a summary of all options available so feel free to add to this.
There are several options to tweak the radeon driver and some of these might break your desktop, so if you are uncomfortable with the console better stick to default.
Parameter | Application | Effect |
---|---|---|
radeon.pcie_gen2=1 | kernel commandline | Run at PCI-E 2.0 speeds per default |
radeon.audio=1 | kernel commandline | Enable HDMI audio on some cards |
R600_STREAMOUT=1 | Environment variable | Enable the use of OpenGL 3.0/4.2 on some cards |
R600_HYPERZ=1 | Environment variable | Enable the use Hyper-Z on some cards |
R600_TILING=1 | Environment variable | Enable 2D Tiling on some cards (also needs the xorg.conf parameter set) |
R600_SURF=1 | Environment variable | Enable 2D Tiling on some cards (also needs the xorg.conf parameter set) |
R600_GLSL130=1 | Environment variable | Enable more features of the OpenGL 3.0 API |
ColorTiling2D True | xorg.conf parameter | Enable 2D Color Tiling in conjunction with R600_TILING=1 and R600_SURF=1 |
- Kernel parameters can be just added to the kernel commandline in grub.cfg or grub.conf.
- Environment variables could be put into a file like /etc/env.d/99radeon to have them initialized during boot.
- xorg.conf parameter are usual in the Device section for the card.
- A full list of kernel parameters can be found here: X.Org Wiki - RadeonFeature
- S3TC compression needed for some applications like most 3D games: media-libs/libtxc_dxtn
Monitoring
lm sensors can be used to monitor the cards temperature. It uses the I2C interface, which needs to be enabled in the kernel: Template:Kernel
Audio over HDMI
Audio through the HDMI port is available for some cards. Check the X.Org Wiki - Radeon Feature Matrix for the model family. A recent 3.x kernel may be needed.
As noted above, HDMI audio must be explicitly enabled using the kernel commandline paramater radeon.audio=1. In addition, ALSA typically does not use HDMI as the default audio, so one way to force this as the default is to add a config file: Template:File which may be moved to /etc/asound.conf to make HDMI audio the system-wide default.
See also
- fglrx - Closed source binary driver for AMD/ATI graphic cards.
- fglrx Quick Switch - Quickly switch between fglrx and this driver using GRUB 2 without downgrading xorg-server.
- hprofile - Another method for switching between graphics drivers.
Troubleshooting
- Gentoo bugtracker: known bugs
- Freedesktop.org bugtracker: known bugs
- Freedesktop.org bugtracker: known bugs