Contents
Feature Matrix for Free Radeon Drivers
This page is only for free Radeon drivers using KMS.
radeon (xf86-video-ati) for 2D; radeon, r200 Mesa and r300, r600, radeonsi Gallium drivers only.
THIS PAGE IS NOT FOR FGLRX/CATALYST DRIVERS PROVIDED BY AMD/ATI.
See RadeonFeatureUMS for radeon in UMS.
See radeonhd:feature for radeonhd.
Also check out the RadeonProgram, GalliumStatus, and ATIRadeon at DRI wiki.
"DONE" means that it is implemented and relatively bug-free.
"MOSTLY" means that it is implemented but has some known bugs.
"WIP" means that someone has started on the initial implementation.
"BIOS" means only if supported by your BIOS. No software support. Yet.
"N/A" means that the feature is not supported by the hardware.
"N/N" means that the feature will not be implemented, because a better alternative is or will be available.
"TODO" means that someone needs to write the code. The required knowledge to write the code may or may not be known. Please ask on #radeon if you want to get your feet wet on this.
"UNKNOWN" means that the current status of this item isn't known. You are free to update it if you know.
2D features |
R100 |
R200 |
R300 |
R400 |
RS690 |
R500 |
R600/700 |
Evergreen |
N.Islands |
S.Islands1 |
|
Kernel Modesetting |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
|
Max Supported Displays (Eyefinity)2 |
1-2 |
2 |
2 |
2 |
2 |
2 |
2 |
2-6 |
4-6 |
6 |
|
DRI2 |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
|
Page Flipping |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
|
ShadowFB |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
|
2D Acceleration (EXA) |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
Gallium |
|
2D Acceleration (glamor)3 |
N/A |
N/A |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
|
Textured Xv |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
Gallium |
|
Video Decode (XvMC/VDPAU/VA-API) |
TODO |
TODO |
WIP |
WIP |
WIP |
WIP |
WIP |
WIP |
WIP |
WIP |
|
Video Decode (XvMC/VDPAU/VA-API) |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
DONE4 |
DONE |
DONE |
DONE |
|
Hybrid Graphics5 |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
MOSTLY |
MOSTLY |
MOSTLY |
MOSTLY |
|
Mesa 3D features |
R100 |
R200 |
R300 |
R400 |
RS690 |
R500 |
R600/700 |
Evergreen |
N.Islands |
S.Islands1 |
|
3D Driver |
radeon |
r200 |
r300g |
r300g |
r300g |
r300g |
r600g |
r600g |
r600g |
radeonsi |
|
Primitives |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
WIP |
|
Stippled Primitives |
DONE |
DONE |
TODO |
TODO |
TODO |
TODO |
TODO |
TODO |
TODO |
TODO |
|
Smooth Primitives |
DONE |
DONE |
TODO |
TODO |
TODO |
TODO |
TODO |
TODO |
TODO |
TODO |
|
Textures |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
WIP |
|
Hardware TCL |
DONE |
DONE |
DONE |
DONE |
N/A |
DONE |
DONE |
DONE |
DONE |
WIP |
|
Vertex Shaders |
N/A |
DONE |
DONE |
DONE |
N/A |
DONE |
DONE |
DONE |
DONE |
WIP |
|
Fragment (Pixel) Shaders |
N/A |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
WIP |
|
GLSL |
N/A |
N/A |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
WIP |
|
Color Buffer Tiling |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
TODO |
|
Texture Tiling |
TODO |
TODO |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
TODO |
|
S3TC decompression |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
TODO |
|
full S3TC |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
TODO |
|
Tessellation Shader Stages |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
TODO |
TODO |
TODO |
|
Geometry Shaders |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
TODO |
TODO |
TODO |
TODO |
|
Anti-Aliasing (MSAA) |
N/A |
N/A |
MOSTLY6 |
MOSTLY6 |
MOSTLY6 |
DONE |
DONE7 |
DONE7 |
DONE7 |
TODO |
|
Anti-Aliasing (MLAA) |
N/A |
N/A |
N/A |
N/A |
N/A |
||||||
Anisotropic Filtering |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
TODO |
|
Hyper-Z |
WIP |
TODO |
MOSTLY8 |
MOSTLY8 |
MOSTLY8 |
DONE |
WIP9 |
WIP9 |
WIP9 |
TODO |
|
OpenGL Compliance (Driver/Hardware) |
1.3/1.3 |
1.3/1.4 |
2.1/2.110 |
2.1/2.110 |
2.1/2.110 |
2.1/2.110 |
3.1/3.311 |
3.1/4.211 |
3.1/4.211 |
2.1/4.2 |
|
Output |
R100 |
R200 |
R300 |
R400 |
RS690 |
R500 |
R600/700 |
Evergreen |
N.Islands |
S.Islands1 |
|
Dual-link DVI |
N/A |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
|
XRandR 1.2 |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
|
TV Out |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
N/A |
N/A |
|
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
DONE |
DONE |
DONE |
DONE |
||
HDMI Audio12 |
N/A |
N/A |
N/A |
N/A |
not tested |
N/A |
DONE |
DONE13 |
DONE14 |
TODO |
|
Power Saving |
R100 |
R200 |
R300 |
R400 |
RS690 |
R500 |
R600/700 |
Evergreen |
N.Islands |
S.Islands1 |
|
Engine reclocking |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
|
Memory reclocking |
TODO |
TODO |
TODO |
DONE |
N/A |
DONE |
DONE |
DONE |
DONE |
DONE |
|
Voltage adjusting |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
|
Thermal sensors |
N/A |
N/A |
DONE15 |
DONE15 |
DONE15 |
DONE15 |
DONE16 |
DONE16 |
DONE16 |
DONE16 |
|
Other |
R100 |
R200 |
R300 |
R400 |
RS690 |
R500 |
R600/700 |
Evergreen |
N.Islands |
S.Islands1 |
|
Suspend Support |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
DONE |
|
CrossFire (multi-card) |
N/A |
N/A |
N/A |
TODO |
TODO |
TODO |
TODO |
TODO |
TODO |
TODO |
|
Compute (OpenCL)17 |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
TODO |
WIP |
WIP |
TODO |
|
Asynchronous DMA |
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
DONE |
DONE |
DONE |
DONE |
|
Depends on the OEM board. Max of 2 non-Displayport displays. (6)
Requires a 3D driver with shader support (7)
DONE for R7xx, TODO for R6xx (8)
There are two versions of hybrd graphics: MUXed and MUX-less. MUXed have a display MUX to switch the displays between the discrete and integrated cards. MUXed systems can be switched using vgaswitcheroo. MUX-less do not have a display MUX and the displays are only connected to the integrated card. On MUX-less systems, the discrete card is solely for rendering, not display. At the moment the X server does not support rendering and display from different cards so the discrete card can not be used with MUX-less systems at the moment. Most new laptops (2011+) are MUX-less. (9)
Needs piglit testing before enabling by default, see mesa commit 8ed6b1400 (10 11 12)
Needs piglit and Lightsmark testing before enabling by default, see mesa commit 12dcbd595 (16 17 18)
Hardware doesn't support ARB NPOT textures fully. (22 23 24 25)
Requires loading radeon with the audio parameter set to 1 (e.g., add radeon.audio=1 on the kernel command line in grub). (29)
Kernel 3.3 required (30)
Kernel 3.5 required (31)
VSYNC
There are several mechanisms involved in tear-free rendering due to limitations in X.
3D driver environment variable
- vblank_mode - selects whether or not the 3D application should synchronize to vblank.
DDX driver options
EnablePageFlip - This option enables the use of pageflipping (switching the display controller's base address pointer) rather than blits for GL buffer swaps. It only applies to fullscreen GL apps. Pageflipping is always synced to vblank at the moment.
SwapBuffersWait - This option prevents tearing for GL buffer swaps by waiting to update the front buffer until scanout has passed the area of the screen the GL buffer swap is going to blit to.
- EXAVSync - This option prevents tearing for EXA operations by waiting to update the front buffer until scanout has passed the area of the screen the EXA operation is going to render to.
Xv Attribute
- XV_VSYNC - This option prevents tearing when playing back videos using Xv by waiting to update the video image until scanout has passed the area of the screen displaying the video. It only prevents tearing if Xv is rendering directly to the front buffer. If you are using a compositer, this does not prevent tearing because Xv is rendering to an offscreen buffer and the compositor copied it to the front buffer.
KMS Power Management Options
Kernel 2.6.35 or newer is required. The pm code supports two basic methods:
- "dynpm"
- "profile"
You can select the methods via sysfs. Echo "dynpm" or "profile" to /sys/class/drm/card0/device/power_method.
Controlling the fan speed directly is not possible (and would be very dangerous), but it can be lowered by setting lower power profile.
The "dynpm" method dynamically changes the clocks based on the number of pending fences, so performance is ramped up when running GPU intensive apps, and ramped down when the GPU is idle. The reclocking is attemped during vertical blanking periods, but due to the timing of the reclocking functions, doesn't not always complete in the blanking period, which can lead to flicker in the display. Due to this, dynpm only works when a single head is active.
The "profile" method exposes five profiles that can be selected from:
- "default"
- "auto"
- "low"
- "mid"
- "high"
Select the profile by echoing the selected profile to /sys/class/drm/card0/device/power_profile.
- "default" uses the default clocks and does not change the power state. This is the default behavior.
- "auto" selects 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.
The "profile" method is not as agressive as "dynpm," but is currently much more stable and flicker free and works with multiple heads active.
Power management is supported on all asics (r1xx-evergreen) that include the appropriate power state tables in the vbios; not all boards do (especially older desktop cards).
Thermal sensors are implemented via external i2c chips or via the internal thermal sensor (rv6xx-evergreen only; supported in 2.6.36 or newer); not all OEMs implement a thermal sensor. To get the temperature on asics that use i2c chips, you need to load the appropriate hwmon driver for the sensor used on your board (lm63, lm64, etc.). The drm will attempt to load the appropriate hwmon driver. On boards that use the internal thermal sensor, the drm will set up the hwmon interface automatically. When the appropriate driver is loaded, the temperatures can be accessed via lm_sensors tools or via sysfs in /sys/class/hwmon.
Linux kernel parameters
Try modinfo -p radeon to find up-to-date parameters. To check default values look at drivers/gpu/drm/radeon/radeon_drv.c in Linux kernel source. To check current values look at /sys/class/drm/card*/device/driver/module/holders/radeon/parameters/*
Option |
Values |
Default value1 |
Explanation |
radeon.agpmode |
1, 2, 4, 8, -1 |
0 |
AGP mode, -1 for PCI/PCIe mode |
radeon.audio |
0, 1 |
0 |
Disable/enable HDMI audio |
radeon.benchmark |
|
0 |
Run benchmark |
radeon.connector_table |
|
0 |
Force connector table |
radeon.disp_priority |
0, 1, 2 |
0 |
Display Priority (0 = auto, 1 = normal, 2 = high) |
radeon.dynclks |
0, 1, -1 |
-1 |
Disable/Enable dynamic clocks, -1 for auto |
radeon.gartsize |
32, 64, etc. |
512 |
Size of PCIe/IGP gart to setup in megabytes |
radeon.hw_i2c |
0, 1 |
0 |
Disable/enable hw i2c engine |
radeon.modeset |
0, 1, -1 |
-1 |
Disable/enable modesetting, -1 for auto |
radeon.msi |
0, 1, -1 |
-1 |
Disable/enable MSI support, -1 for auto |
radeon.no_wb |
0, 1 |
|
Disable/enable AGP writeback for scratch registers |
radeon.pcie_gen2 |
0, 1 |
-1 |
Disable/enable PCIe 2.0 support, -1 for auto |
radeon.r4xx_atom |
0, 1 |
0 |
Disable/enable ATOMBIOS modesetting for R4xx |
radeon.test |
|
0 |
Run tests |
radeon.tv |
0, 1 |
1 |
Disable/enable TV |
radeon.vramlimit |
32, 64, etc. |
0 |
Restrict VRAM for testing |
1 For Linux kernel 3.6
Decoder ring for engineering vs marketing names
Family |
Engineering Names |
Marketing Names |
R100 |
R100, RV100, RV200, RS100, RS200 |
7xxx, 320-345 |
R200 |
R200, RV250, RV280, RS300 |
8xxx - 9250 |
R300 |
R300, R350, RV350, RV380, RS400, RS480 |
9500 - 9800, X300 - X600, X1050 - X1150, 200M |
R400 |
R420, R423, RV410, RS600, RS690, RS740 |
X700 - X850, X12xx, 2100 |
R500 |
RV515, R520, RV530, RV560, RV570, R580 |
X1300 - X2300, HD2300 |
R600 |
R600, RV610, RV630, RV620, RV635, RV670, RS780, RS880 |
HD2400 - HD4290 |
R700 |
RV770, RV730, RV710, RV740 |
HD4330 - HD5165, HD5xxV |
Evergreen |
CEDAR, REDWOOD, JUNIPER, CYPRESS, PALM (Wrestler), SUMO, SUMO2 |
HD5430 - HD5970, all HD6000 not listed under Northern Islands, HD7350 |
Northern Islands |
ARUBA, BARTS, TURKS, CAICOS, CAYMAN |
HD6450, HD6570, HD6670, HD6790 - HD6990, HD64xxM, HD67xxM, HD69xxM, HD7450 - HD7670 |
Southern Islands |
CAPE VERDE, PITCAIRN, TAHITI |
HD7750 - HD7970 |
Radeon 3D Hardware
3D Core |
Engineering Names |
Shader Model |
DX |
OpenGL |
Max Texture Size |
Max Renderbuffer Size |
R1xx |
R100, RV100, RV200, RS100, RS200 |
NA |
7 |
1.3 |
2048 |
2048 |
R2xx |
R200, RV250, RV280, RS300 |
1 |
8 |
1.4 |
2048 |
2048 |
R3xx |
R300, R350, RV350, RV380, RS400, RS480 |
2 |
9 |
2.1 |
2048 |
2560 |
R4xx |
R420, R423, RV410, RS600, RS690, RS740 |
2 |
9 |
2.1 |
2048 |
4021 |
R5xx |
RV515, R520, RV530, RV560, RV570, R580 |
3 |
9 |
2.1 |
4096 |
4096 |
R6xx |
R600, RV610, RV630, RV620, RV635, RV670, RS780, RS880 |
4 |
10 |
3.3 |
8192 |
8192 |
R7xx |
RV770, RV730, RV710, RV740 |
4 |
10 |
3.3 |
8192 |
8192 |
R8xx |
CEDAR, REDWOOD, JUNIPER, CYPRESS, PALM (Wrestler), SUMO, SUMO2, BARTS, TURKS, CAICOS |
5 |
11 |
4.2 |
16384 |
16384 |
R9xx |
CAYMAN, ARUBA |
5 |
11 |
4.2 |
16384 |
16384 |
RAxx |
CAPE VERDE, PITCAIRN, TAHITI |
5 |
11 |
4.2 |
16384 |
16384 |
Radeon Display Hardware
Display Core |
Engineering Names |
Display Controllers |
DACs |
TV Encoder |
DVO |
Digital |
Notes |
Classic Radeon |
Rage128, R1xx-R4xx |
1-2 |
1-2 |
0-1 |
1 |
2 (1 TMDS, 1 LVDS) |
|
DCE1/Avivo |
R5xx |
2 |
2 |
1 |
1 |
2 (1 TMDS, 1 LVDS/TMDS) |
|
DCE2 |
R600, RV610, RV630, RV670, RS600, RS690, RS740 |
2 |
2 (R600, RV610, RV630, RV670), 1 (RS600, RS690, RS740) |
1 |
1 |
2 (1 TMDS, 1 LVDS/TMDS) |
Adds HDMI 1.2 Support |
DCE3 |
RV620, RV635, RS780, RS880 |
2 |
2 (RV620, RV635), 1 (RS780, RS880) |
1 |
1 |
3 (LVDS/TMDS/DP) |
Adds support for DisplayPort, HDMI 1.3 Support |
DCE3.1 |
RV770 |
2 |
2 |
1 |
1 |
3 (LVDS/TMDS/DP) |
|
DCE3.2 |
RV710, RV730, RV740 |
2 |
2 |
1 |
1 |
5 (LVDS/TMDS/DP) |
Adds support for up to 5 digital outputs |
DCE4 |
CEDAR, REDWOOD, JUNIPER, CYPRESS |
4-6 |
2 |
1 |
1 |
6 (LVDS/TMDS/DP) |
Adds support for up to 6 independant displays (max of 2 non-DisplayPort displays) |
DCE4.1 |
PALM (Wrestler), SUMO, SUMO2 |
2 |
1 (PALM), 0 (SUMO, SUMO2) |
1 |
1 |
6 (LVDS/TMDS/DP) |
VGA and LVDS are implemented via DP bridge chips |
DCE5 |
BARTS, TURKS, CAICOS, CAYMAN |
4-6 |
1 |
0 |
1 |
6 (LVDS/TMDS/DP) |
Adds improved gamma correction, HDMI 1.4 support, DisplayPort 1.2 support |
DCE6 |
CAPE VERDE, PITCAIRN, TAHITI |
6 |
1 |
0 |
1 |
6 (LVDS/TMDS/DP) |
HDMI 4K modes |
DCE6.1 |
ARUBA |
4 |
0 |
0 |
1 |
6 (TMDS/DP) |
VGA and LVDS are implemented via DP bridge chips |
Where to get the drivers
Xorg radeon DDX (xf86-video-ati)
Mesa 3D driver (radeon, r200, r300c/g, r600c/g)
KMS DRM (Linux Kernel)
libdrm (libdrm_radeon)
Where to file defect reports
http://bugs.freedesktop.org using the following values for Product : Component...
- Xorg radeon DDX - xorg : Driver/Radeon
- Mesa 3D driver (1xx) - Mesa : Drivers/DRI/Radeon
- Mesa 3D driver (2xx) - Mesa : Drivers/DRI/r200
- Mesa 3D driver (3xx-5xx) - Mesa : Drivers/Gallium/r300
- Mesa 3D driver (6xx-NI) - Mesa : Drivers/Gallium/r600
- Mesa 3D driver (SI) - Mesa : Drivers/Gallium/radeonsi
- KMS DRM aka Kernel graphics driver - DRI : DRM/Radeon
Documentation


