# AMD Graphics Card

Good overview (table):

* [wiki.gentoo.org/Radeon](https://wiki.gentoo.org/wiki/Radeon#Feature_support)
* [wiki.gentoo.org/AMDGPU](https://wiki.gentoo.org/wiki/AMDGPU#Feature_support)

## AMDGPU

From gentoo wiki one should use AMDGPU e.g. for:

> AMD Zen 2 "4000" series 7nm laptop APUs

### AMDGPU (mandatory packages)

* archwiki -> AMDGPU -> Installation
* archwiki -> Xorg -> AMD
* archwiki -> Lenovo-IdeaPad-S540-13ARE (Ryzen 7 4800U CPU)
* archwiki -> Hardware_video_acceleration -> ATI/AMD

* HW-video-accel verification:
    * run `vainfo` and `vdpauinfo` as non-root

* `amdgpu` module
  * https://wiki.archlinux.org/title/AMDGPU#Loading
    * The amdgpu kernel module is supposed to load automatically
      on system boot.
    * It is possible it loads, but late, after the X server requires it.
      In this case:
      * Include "amdgpu" in MODULES=(...) of `/etc/mkinitcpio.conf`
  * https://wiki.archlinux.org/title/AMDGPU#Specify_the_correct_module_order
    * `amdgpu` before `radeon`

```shell
# "DRI driver for 3D acceleration"
depends=(mesa)
# "DDX driver for 2D acceleration"       
depends+=(xf86-video-amdgpu)
# "Vulkan support"
depends+=(vulkan-radeon)
# "HW-vide-acceleration: VA-API"
depends+=(libva-mesa-driver)
# "HW-vide-acceleration: VDPAU"
depends+=(mesa-vdpau)
```

**Verification**:

```shell
lspci -k | grep -EA3 'VGA|3D|Display'
```

Example output:

```
	Kernel driver in use: amdgpu
	Kernel modules: amdgpu
```

### AMDGPU PRO (optional packages)

* archwiki -> AMDGPU#AMDGPU_PRO
* archwiki -> AMDGPU_PRO

The amdgpu-pro-installer contains proprietary components for
AMDGPU (it works on top of AMDGPU).

Quote about the opengl part (from archwiki -> AMDGPU):

> From Radeon Software 18.50 vs Mesa 19 benchmarks article: 
> When it comes to OpenGL games, the RadeonSI Gallium3D driver
> simply dominates the proprietary AMD OpenGL driver.

```shell
# proprietary OpenGL implementation
depends+=(amdgpu-pro-libgl)
# proprietary OpenCL implementation
depends+=(opencl-amd)
# proprietary Vulkan implementation
depends+=(vulkan-amdgpu-pro)
# Advanced Media Framework implementation
depends+=(amf-amdgpu-pro)
```
