Differences between revisions 14 and 86 (spanning 72 versions)
Revision 14 as of 2007-05-13 12:08:09
Size: 941
Editor: MarkHobley
Comment: Modified for Xorg, XFree86 separated
Revision 86 as of 2021-08-14 05:09:29
Size: 11721
Comment: Escape an accidental link
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= How do I configure X to use ATI 3D accelerated graphics =

These notes are for an ["Xorg"] based ["xserver"]. To install the ATI Radeon drivers on an ["XFree86"] installation, see ["ATIHowToXFree86"].

ATI Radeon cards 8500,9000,9200 and 9250 work with Open Source drivers and support ["OpenGL"] 3D Graphics.

To configure X to use accelerated 3d drivers, the configuration file /etc/X11/xorg.conf should be edited as follows:

 Section "Device"
        Identifier "ATI 3D"
        Driver "ati"
 EndSection

 Section "Screen"
        Device "ATI 3D"

== Install the required libraries ==

It is necessary to install driver libraries, in order for the 3D capabilities of the card to be utilized:

 apt-get install libgl1-mesa-dri
#language en
~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/AtiHowTo|español]] - [[fr/AtiHowTo|Français]] - [[it/AtiHowTo|Italiano]] - [[ru/AtiHowTo|Русский]] -~
----
= AMD/ATI Drivers (amdgpu, radeon, r128, mach64) =
This page describes the process of installing and configuring the display drivers for ATI/AMD graphics hardware on Debian systems.

<<TableOfContents(3)>>

<<Anchor(Determining your hardware)>>
== Identification ==

The AMD/ATI graphics processing unit (GPU) series/codename of an installed video card can usually be identified using the {{{lspci}}} command. For example:
 {{{
$ lspci -nn | grep VGA
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Barts PRO [Radeon HD 6850] [1002:6739]
}}}

See [[HowToIdentifyADevice/PCI]] for more information.

== Drivers ==

Support for newer AMD graphics hardware is provided by the DebianPkg:xserver-xorg-video-amdgpu package. This will officially cover any cards that are part of GCN 1.2 ("GCN 3rd generation") or newer. This generation consists of most chips released after June 2015. GCN 1.0 and GCN 1.1 cards (Manufactured January 2012 to June 2015) are supported experimentally and require extra kernel parameters to be set, as documented in the [[#gcn1011|experimental section.]]

Support for GCN 1.1 and older chips is also provided by the DebianPkg:xserver-xorg-video-ati driver wrapper package, which depends on three hardware-specific driver packages:

 * DebianPkg:xserver-xorg-video-mach64
 * DebianPkg:xserver-xorg-video-r128
 * DebianPkg:xserver-xorg-video-radeon

The ATI driver package will autodetect whether your hardware has a Radeon, Rage 128, or Mach64 and earlier chip and load the {{{radeon}}}, {{{r128}}}, or {{{mach64}}} video driver as appropriate.

Since the AMDGPU driver overlaps with the older Radeon driver for supporting GCN 1.0/1.1 GPUs, either driver can be used. The older Radeon driver does not support Vulkan or the ACO compiler and is often slower, but it is much more stable and is used by default.

<<Anchor(Installing proprietary firmware)>>
=== Firmware ===

Proprietary, binary-only firmware (also known as microcode) is not allowed in the main Debian repository as per the Debian Free Software Guidelines. The firmware can be obtained by installing the DebianPkg:firmware-amd-graphics package, as long as the non-free component is enabled in your [[SourcesList]] file. The installation instructions below this section will document adding this component and installing the necessary firmware.

Without this package installed, poor 2D/3D performance is commonly experienced. Some GPUs may require firmware to function properly at all.

== Installation ==

The following procedure will install the open-source display driver packages, DRI modules (for 3D acceleration), and driver firmware/microcode. It installs the Xorg video driver metapackage which includes all drivers. Your system will automatically select which one to use on boot. If your card is supported by both AMDGPU and Radeon (such as the GCN 1.0/1.1 series), it will default to {{{radeon}}}. You can view instructions for using the newer driver [[#gcn1011|here]]

In the following instructions, {{{#}}} indicates the command must be run as root. On systems where it's configured, you may replace it with {{{sudo}}}. Otherwise, if you're logged in as root, omit it entirely.

 1. If you have previously used the non-free [[NvidiaGraphicsDrivers|NVIDIA proprietary]] driver, then you need to uninstall it if you wish to now use the accelerated AMD driver. The easiest way is to use the command: {{{
 # apt purge *nvidia*
}}}
 Don't forget to type the asterisks enclosing {{{nvidia}}} as this erases every package with "nvidia" in its name.

 1. Add "contrib" and "non-free" components to {{{/etc/apt/sources.list}}}, for example: {{{
# Debian 10 "Buster"
deb http://deb.debian.org/debian buster main contrib non-free
}}}
 1. Update the list of available packages: {{{
# apt update
}}}
 1. Install the DebianPkg:firmware-amd-graphics, DebianPkg:libgl1-mesa-dri, DebianPkg:libglx-mesa0, DebianPkg:mesa-vulkan-drivers, and DebianPkg:xserver-xorg-video-all packages: {{{
# apt-get install firmware-amd-graphics libgl1-mesa-dri libglx-mesa0 mesa-vulkan-drivers xserver-xorg-video-all
}}}
 1. Restart your system to load the newly installed driver.

== Preventing screen tearing ==

Screen tearing can appear when using the amdgpu driver/kernel module with an AMD Renoir and others.

Enable !TearFree on an external monitor (until reboot) with:

{{{
xrandr --verbose|grep TearFree
xrandr --output HDMI-A-0 --set TearFree on
}}}

Make changes persistent by creating this file and then restarting X:

{{{
echo > /etc/X11/xorg.conf.d/20-amdgpu.conf <<EOF
Section "Device"
   Identifier "AMD Graphics"
   Driver "amdgpu"
   Option "TearFree" "true"
EndSection
EOF
}}}


== 32-bit support ==

Games that are installed from [[Steam]], or are running in [[Wine]], or are both at the same time with the advent of Valve's Proton, may all require 32-bit graphics libraries at some point or another when trying to run 32-bit games. This can be done by enabling [[Multiarch/HOWTO|multiarch]] and installing the appropriate libraries. Note that the following guide assumes that your user is configured to use [[sudo]] which some forms of installation may not do by default, make necessary adjustments if so.

First, to enable 32-bit support and update your repos as appropriate:
{{{
sudo dpkg --add-architecture i386 && sudo apt update
}}}
Then, to install the relevant libraries:
{{{
sudo apt install libglx-mesa0:i386 mesa-vulkan-drivers:i386 libgl1-mesa-dri:i386
}}}
Then, you may need to restart the relevant applications for them to load the new libraries. After which, there should be no problem.

== Experimental options ==

<<Anchor(gcn1011)>>
=== AMDGPU/Vulkan on older cards ===

If your graphics card is built on GCN 1.0 or GCN 1.1 (also known as being from the "Southern Islands" or "Sea Islands" card families), you may enable experimental AMDGPU support in order to see potentially better performance and Vulkan support.

Follow the normal installation instructions first, and then open the {{{/etc/default/grub}}} file in your text editor of choice. Note that it requires admin permissions to edit, so you will either need to open the text editor with {{{sudo}}} or use one such as Kate that supports !PolKit permissions.

Within the quotes on the line that starts with {{{GRUB_CMDLINE_LINUX_DEFAULT}}}, add the options {{{radeon.si_support=0 amdgpu.si_support=1}}} for Southern Islands (GCN 1.0) cards, or {{{radeon.cik_support=0 amdgpu.cik_support=1}}} for Sea Islands (GCN 1.1) cards.

For example, if you were using a GCN 1.1 card, the final line may look similar to:
{{{
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash radeon.cik_support=0 amdgpu.cik_support=1"
}}}

Furthermore, if you are using an AMD A10 APU with an integrated Sea Island (GCN 1.1) card, you may have to disable Radeon Dynamic Power Management to get a proper boot. This is a feature that dynamically re-clocks the graphics core in order to keep the APU cooler and quieter, however for kernel versions 4.x.x and 5.x.x, this feature may put you in an infinite restart loop. To disable it, following the instructions above, add {{{radeon.dpm=0}}} to the boot options.

After editing and applying the changes, run {{{sudo update-grub2}}} and reboot your system. If all goes well, it should be using the new driver.

== Tools ==
=== radeontop ===
radeontop is a tool for monitoring AMD card usage, it is useful for seeing if the hardware is being used to its full potential and for diagnosing bottlenecks.

Installation:
{{{
sudo apt install radeontop
}}}

=== amdgpu-fan ===
It is possible that the driver and firmware manage the fans too poorly. amdgpu-fan is a tool that allows you to manage the fans of the graphics card to better control the temperature. Unfortunately this open-source tool is not available in the Debian repositories, you have to install it from python-pip3:
{{{
sudo pip3 install amdgpu-fan
}}}
Edit the configuration file with these settings:
''sudo nano /etc/amdgpu-fan.yml''
{{{
speed_matrix: # -[temp(*C), speed(0-100%)]
- [0, 0]
- [30, 15]
- [50, 30]
- [70, 70]
- [90, 100]
}}}
Create a service in systemd to daemonize the tool:
sudo nano /etc/systemd/system/amdgpu-fan.service
Fill in the file:
{{{
[Unit]
Description=Service for controling amdgpu fan.
After=syslog.service

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/amdgpu-fan
Restart=always

[Install]
WantedBy=multi-user.target
}}}
Reload systemd, enable and start the new service and check it's status:
{{{
sudo systemctl daemon-reload
sudo systemctl enable amdgpu-fan.service
sudo systemctl start amdgpu-fan.service
sudo systemctl status amdgpu-fan.service
}}}
Note that the fans react better when you use your graphics card (encoding, video games, etc.).

== Troubleshooting ==

 * Use of firmware/microcode used by the radeon DRM driver can be verified using the [[DebianMan:1/dmesg|dmesg]] command. For example:
 {{{
dmesg | grep -E 'drm|radeon' | grep -iE 'firmware|microcode'
[ 5.268609] [drm] Loading BARTS Microcode
[ 5.329862] radeon 0000:01:00.0: firmware: direct-loading firmware radeon/BARTS_pfp.bin
[ 5.341300] radeon 0000:01:00.0: firmware: direct-loading firmware radeon/BARTS_me.bin
[ 5.347745] radeon 0000:01:00.0: firmware: direct-loading firmware radeon/BTC_rlc.bin
[ 5.347911] radeon 0000:01:00.0: firmware: direct-loading firmware radeon/BARTS_mc.bin
[ 5.353336] radeon 0000:01:00.0: firmware: direct-loading firmware radeon/BARTS_smc.bin
[ 5.369449] radeon 0000:01:00.0: firmware: direct-loading firmware radeon/SUMO_uvd.bin
}}}

 * If files were unable to be loaded, ensure the DebianPkg:firmware-amd-graphics package is installed (refer to [[#Installation|Installation]]).

 * Screen flickering with Adobe Flash: see [[FlashPlayer#flickering]].

== Hybrid Graphics ==
AMD ships hybrid graphics that may have an AMD graphics card combined with one of a different kind. Without proper support, the cards may run inefficiently, only using one or the other or even activating both at the same time which causes excessive power consumption.

Debian Stretch and newer come with a Mesa version which supports [[http://dri.freedesktop.org/wiki/|DRI]] Offloading.
Make sure all necessary drivers are installed. It also needs the DebianPkg:firmware-amd-graphics package to be installed.

Check if both the cards are getting listed:
{{{
xrandr --listproviders
}}}

The above listing should give both the names of the cards and the associated drivers. Assuming you're using a dedicated chip that uses the {{{radeon}}} and an integrated Intel card for example that's using the {{{intel}}} driver, you may set:
{{{
xrandr --setprovideroffloadsink radeon Intel
}}}

You can test the settings with the command:
{{{
DRI_PRIME=1 glxinfo | grep "OpenGL renderer"
}}}
Where the output should be AMD.
Line 25: Line 214:
["ATIHowToXFree86"] Configuring XFree86 to use ATI 3D accelerated graphics

["ATIProprietary"] Installing the closed source proprietary driver
 * [[ATIProprietary]] - Installing the closed-source proprietary driver, '''not recommended or supported on versions newer than Debian 8/Jessie'''
 * [[Mesa#Testingperformance|Testing performance]]

== External Links ==

 * http://x.org/wiki/radeon
 * [[https://www.x.org/wiki/RadeonFeature|Radeon feature - X.org]]
 * [[https://github.com/chestm007/amdgpu-fan|amdgpu-fan tool development - Github]]

----
CategoryHardware CategoryVideo

Translation(s): English - español - Français - Italiano - Русский


AMD/ATI Drivers (amdgpu, radeon, r128, mach64)

This page describes the process of installing and configuring the display drivers for ATI/AMD graphics hardware on Debian systems.

Identification

The AMD/ATI graphics processing unit (GPU) series/codename of an installed video card can usually be identified using the lspci command. For example:

  • $ lspci -nn | grep VGA
    01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Barts PRO [Radeon HD 6850] [1002:6739]

See HowToIdentifyADevice/PCI for more information.

Drivers

Support for newer AMD graphics hardware is provided by the xserver-xorg-video-amdgpu package. This will officially cover any cards that are part of GCN 1.2 ("GCN 3rd generation") or newer. This generation consists of most chips released after June 2015. GCN 1.0 and GCN 1.1 cards (Manufactured January 2012 to June 2015) are supported experimentally and require extra kernel parameters to be set, as documented in the experimental section.

Support for GCN 1.1 and older chips is also provided by the xserver-xorg-video-ati driver wrapper package, which depends on three hardware-specific driver packages:

The ATI driver package will autodetect whether your hardware has a Radeon, Rage 128, or Mach64 and earlier chip and load the radeon, r128, or mach64 video driver as appropriate.

Since the AMDGPU driver overlaps with the older Radeon driver for supporting GCN 1.0/1.1 GPUs, either driver can be used. The older Radeon driver does not support Vulkan or the ACO compiler and is often slower, but it is much more stable and is used by default.

Firmware

Proprietary, binary-only firmware (also known as microcode) is not allowed in the main Debian repository as per the Debian Free Software Guidelines. The firmware can be obtained by installing the firmware-amd-graphics package, as long as the non-free component is enabled in your SourcesList file. The installation instructions below this section will document adding this component and installing the necessary firmware.

Without this package installed, poor 2D/3D performance is commonly experienced. Some GPUs may require firmware to function properly at all.

Installation

The following procedure will install the open-source display driver packages, DRI modules (for 3D acceleration), and driver firmware/microcode. It installs the Xorg video driver metapackage which includes all drivers. Your system will automatically select which one to use on boot. If your card is supported by both AMDGPU and Radeon (such as the GCN 1.0/1.1 series), it will default to radeon. You can view instructions for using the newer driver here

In the following instructions, # indicates the command must be run as root. On systems where it's configured, you may replace it with sudo. Otherwise, if you're logged in as root, omit it entirely.

  1. If you have previously used the non-free NVIDIA proprietary driver, then you need to uninstall it if you wish to now use the accelerated AMD driver. The easiest way is to use the command:

     # apt purge *nvidia*

    Don't forget to type the asterisks enclosing nvidia as this erases every package with "nvidia" in its name.

  2. Add "contrib" and "non-free" components to /etc/apt/sources.list, for example:

    # Debian 10 "Buster"
    deb http://deb.debian.org/debian buster main contrib non-free
  3. Update the list of available packages:

    # apt update
  4. Install the firmware-amd-graphics, libgl1-mesa-dri, libglx-mesa0, mesa-vulkan-drivers, and xserver-xorg-video-all packages:

    # apt-get install firmware-amd-graphics libgl1-mesa-dri libglx-mesa0 mesa-vulkan-drivers xserver-xorg-video-all
  5. Restart your system to load the newly installed driver.

Preventing screen tearing

Screen tearing can appear when using the amdgpu driver/kernel module with an AMD Renoir and others.

Enable TearFree on an external monitor (until reboot) with:

xrandr --verbose|grep TearFree
xrandr --output HDMI-A-0 --set TearFree on          

Make changes persistent by creating this file and then restarting X:

echo > /etc/X11/xorg.conf.d/20-amdgpu.conf <<EOF
Section "Device"
   Identifier  "AMD Graphics"
   Driver      "amdgpu"
   Option      "TearFree"  "true"
EndSection
EOF

32-bit support

Games that are installed from Steam, or are running in Wine, or are both at the same time with the advent of Valve's Proton, may all require 32-bit graphics libraries at some point or another when trying to run 32-bit games. This can be done by enabling multiarch and installing the appropriate libraries. Note that the following guide assumes that your user is configured to use sudo which some forms of installation may not do by default, make necessary adjustments if so.

First, to enable 32-bit support and update your repos as appropriate:

sudo dpkg --add-architecture i386 && sudo apt update

Then, to install the relevant libraries:

sudo apt install libglx-mesa0:i386 mesa-vulkan-drivers:i386 libgl1-mesa-dri:i386

Then, you may need to restart the relevant applications for them to load the new libraries. After which, there should be no problem.

Experimental options

AMDGPU/Vulkan on older cards

If your graphics card is built on GCN 1.0 or GCN 1.1 (also known as being from the "Southern Islands" or "Sea Islands" card families), you may enable experimental AMDGPU support in order to see potentially better performance and Vulkan support.

Follow the normal installation instructions first, and then open the /etc/default/grub file in your text editor of choice. Note that it requires admin permissions to edit, so you will either need to open the text editor with sudo or use one such as Kate that supports PolKit permissions.

Within the quotes on the line that starts with GRUB_CMDLINE_LINUX_DEFAULT, add the options radeon.si_support=0 amdgpu.si_support=1 for Southern Islands (GCN 1.0) cards, or radeon.cik_support=0 amdgpu.cik_support=1 for Sea Islands (GCN 1.1) cards.

For example, if you were using a GCN 1.1 card, the final line may look similar to:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash radeon.cik_support=0 amdgpu.cik_support=1"

Furthermore, if you are using an AMD A10 APU with an integrated Sea Island (GCN 1.1) card, you may have to disable Radeon Dynamic Power Management to get a proper boot. This is a feature that dynamically re-clocks the graphics core in order to keep the APU cooler and quieter, however for kernel versions 4.x.x and 5.x.x, this feature may put you in an infinite restart loop. To disable it, following the instructions above, add radeon.dpm=0 to the boot options.

After editing and applying the changes, run sudo update-grub2 and reboot your system. If all goes well, it should be using the new driver.

Tools

radeontop

radeontop is a tool for monitoring AMD card usage, it is useful for seeing if the hardware is being used to its full potential and for diagnosing bottlenecks.

Installation:

sudo apt install radeontop

amdgpu-fan

It is possible that the driver and firmware manage the fans too poorly. amdgpu-fan is a tool that allows you to manage the fans of the graphics card to better control the temperature. Unfortunately this open-source tool is not available in the Debian repositories, you have to install it from python-pip3:

sudo pip3 install amdgpu-fan

Edit the configuration file with these settings: sudo nano /etc/amdgpu-fan.yml

speed_matrix:  # -[temp(*C), speed(0-100%)]
- [0, 0]
- [30, 15]
- [50, 30]
- [70, 70]
- [90, 100]

Create a service in systemd to daemonize the tool: sudo nano /etc/systemd/system/amdgpu-fan.service Fill in the file:

[Unit]
Description=Service for controling amdgpu fan.
After=syslog.service

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/amdgpu-fan
Restart=always

[Install]
WantedBy=multi-user.target

Reload systemd, enable and start the new service and check it's status:

sudo systemctl daemon-reload
sudo systemctl enable amdgpu-fan.service
sudo systemctl start amdgpu-fan.service
sudo systemctl status amdgpu-fan.service

Note that the fans react better when you use your graphics card (encoding, video games, etc.).

Troubleshooting

  • Use of firmware/microcode used by the radeon DRM driver can be verified using the dmesg command. For example:

    dmesg | grep -E 'drm|radeon' | grep -iE 'firmware|microcode'
    [    5.268609] [drm] Loading BARTS Microcode
    [    5.329862] radeon 0000:01:00.0: firmware: direct-loading firmware radeon/BARTS_pfp.bin
    [    5.341300] radeon 0000:01:00.0: firmware: direct-loading firmware radeon/BARTS_me.bin
    [    5.347745] radeon 0000:01:00.0: firmware: direct-loading firmware radeon/BTC_rlc.bin
    [    5.347911] radeon 0000:01:00.0: firmware: direct-loading firmware radeon/BARTS_mc.bin
    [    5.353336] radeon 0000:01:00.0: firmware: direct-loading firmware radeon/BARTS_smc.bin
    [    5.369449] radeon 0000:01:00.0: firmware: direct-loading firmware radeon/SUMO_uvd.bin
  • If files were unable to be loaded, ensure the firmware-amd-graphics package is installed (refer to Installation).

  • Screen flickering with Adobe Flash: see FlashPlayer#flickering.

Hybrid Graphics

AMD ships hybrid graphics that may have an AMD graphics card combined with one of a different kind. Without proper support, the cards may run inefficiently, only using one or the other or even activating both at the same time which causes excessive power consumption.

Debian Stretch and newer come with a Mesa version which supports DRI Offloading. Make sure all necessary drivers are installed. It also needs the firmware-amd-graphics package to be installed.

Check if both the cards are getting listed:

xrandr --listproviders

The above listing should give both the names of the cards and the associated drivers. Assuming you're using a dedicated chip that uses the radeon and an integrated Intel card for example that's using the intel driver, you may set:

xrandr --setprovideroffloadsink radeon Intel

You can test the settings with the command:

DRI_PRIME=1 glxinfo | grep "OpenGL renderer"

Where the output should be AMD.

See Also


CategoryHardware CategoryVideo