AMD, Intel & NVidia X graphics driver primer

@mrmazda:

Further investigation reveals that, for the amdgpu case, the Kernel’s Radeon driver can be blacklisted.


 > lsmod | grep -iE 'adeo|mdgp'
amdgpu               3383296  40
chash                  16384  1 amdgpu
gpu_sched              28672  1 amdgpu
i2c_algo_bit           16384  1 amdgpu
drm_kms_helper        204800  1 amdgpu
ttm                   126976  1 amdgpu
drm                   491520  19 amdgpu,gpu_sched,ttm,drm_kms_helper
 > 
 > inxi -GSIxxza
System:    Kernel: 4.12.14-lp151.28.52-default x86_64 bits: 64 compiler: gcc v: 7.5.0 
           parameters: BOOT_IMAGE=/boot/vmlinuz-4.12.14-lp151.28.52-default 
           root=UUID=1ebd0398-732c-469a-9df5-af28273f743f 
           resume=/dev/disk/by-id/ata-OCZ-VERTEX2_OCZ-HC8068405854W13J-part2 splash=silent quiet showopts 
           elevator=cfq *modprobe.blacklist=radeon radeon.si_support=0 amdgpu.si_support=1* mitigations=auto 
           Desktop: KDE Plasma 5.12.8 tk: Qt 5.9.7 wm: kwin_x11 dm: SDDM Distro: openSUSE Leap 15.1 
Graphics:  Device-1: Advanced Micro Devices [AMD/ATI] Oland PRO [Radeon R7 240/340] vendor: ASUSTeK driver: **amdgpu** 
           v: kernel bus ID: 01:00.0 chip ID: 1002:6613 
           Display: x11 server: X.Org 1.20.3 compositor: kwin_x11 driver: **modesetting** unloaded: fbdev,vesa 
           alternate: ati display ID: :0 screens: 1 
           Screen-1: 0 s-res: 1920x1080 s-dpi: 96 s-size: 508x285mm (20.0x11.2") s-diag: 582mm (22.9") 
           Monitor-1: DVI-D-1 res: 1920x1080 hz: 60 dpi: 94 size: 521x293mm (20.5x11.5") diag: 598mm (23.5") 
           OpenGL: renderer: AMD Radeon HD 8500 series (OLAND DRM 3.27.0 4.12.14-lp151.28.52-default LLVM 7.0.1) 
           v: 4.5 Mesa 18.3.2 direct render: Yes 
Info:      Processes: 305 Uptime: N/A Memory: 7.77 GiB used: 2.32 GiB (29.9%) Init: systemd v: 234 runlevel: 5 
           target: graphical.target Compilers: gcc: 7.5.0 alt: 7 clang: 7.0.1 Shell: bash v: 4.4.23 
           running in: konsole inxi: 3.1.00 
 > 

/var/log/Xorg.0.log indicates however:


    24.158] (==) modeset(0): DPMS enabled
    24.158] (II) modeset(0): [DRI2] Setup complete
    24.158] (II) modeset(0): [DRI2]   DRI driver: **radeonsi**
    24.158] (II) modeset(0): [DRI2]   VDPAU driver: **radeonsi**

Also, I have found the cause of the SDDM crash – in the SDDM session log, a missing pipe was mentioned:

  • If the amdgpu DDX package is removed, make sure that, in /etc/X11/xorg.conf.d/ that no file includes a definition like this:

Section "Device"
  Identifier "Default Device"
  Driver "amdgpu"
EndSection

I have default install:

linux:~ # zypper search --installed-only xf86-video
Loading repository data...
Reading installed packages...

S | Name              | Summary                                              | Type
--+-------------------+------------------------------------------------------+--------
i | xf86-video-amdgpu | AMDGPU video driver for the Xorg X server            | package
i | xf86-video-ati    | ATI video driver for the Xorg X server               | package
i | xf86-video-fbdev  | Framebuffer video driver for the Xorg X server       | package
i | xf86-video-mach64 | ATI Mach64 series video driver for the Xorg X server | package
i | xf86-video-r128   | ATI Rage 128 video driver for the Xorg X server      | package
i | xf86-video-vesa   | Generic VESA video driver for the Xorg X server      | package
linux:~ # inxi -SGxxza
System:    Kernel: 5.7.9-1-default x86_64 bits: 64 compiler: gcc v: 10.1.1 
           parameters: BOOT_IMAGE=/boot/vmlinuz-5.7.9-1-default root=UUID=227128c2-8703-4859-a006-30dccf5b299c splash=silent 
           resume=/dev/disk/by-id/ata-CT250MX500SSD1_2021E2A43EB9-part3 mitigations=auto quiet 
           Console: tty 1 wm: kwin_x11 dm: SDDM Distro: openSUSE Tumbleweed 20200720 
Graphics:  Device-1: Advanced Micro Devices [AMD/ATI] Picasso driver: amdgpu v: kernel bus ID: 06:00.0 chip ID: 1002:15d8 
           Display: server: X.Org 1.20.8 compositor: kwin_x11 driver: amdgpu **FAILED: ati unloaded: fbdev,modesetting,vesa** 
           display ID: :0 screens: 1 
           Screen-1: 0 s-res: 1920x1200 s-dpi: 96 s-size: 508x317mm (20.0x12.5") s-diag: 599mm (23.6") 
           Monitor-1: DVI-D-0 res: 1920x1200 hz: 60 dpi: 94 size: 520x330mm (20.5x13.0") diag: 616mm (24.2") 
           OpenGL: renderer: AMD RAVEN (DRM 3.37.0 5.7.9-1-default LLVM 10.0.0) v: 4.6 Mesa 20.1.2 direct render: Yes 
linux:~ # 

Should I be concerned about the bold messages?

  1. If you remove the “xf86-video-ati” package, the ATI bits and pieces which X.Org tries to load, unsuccessfully, will not happen – the “FAILED
    ” indication will disappear. 1. That X.Org first loads fbdev, modesetting and vesa and then, unloads them, is normal.

For example, Xorg.0.log entries for the case that, the modesetting DDX is being used – include “amdgpu” in the grep “or” search for your case:


    23.588] (==) Matched modesetting as autoconfigured driver 1
    23.588] (==) Matched fbdev as autoconfigured driver 2
    23.588] (==) Matched vesa as autoconfigured driver 3
    23.590] (II) LoadModule: "modesetting"
    23.590] (II) Loading /usr/lib64/xorg/modules/drivers/modesetting_drv.so
    23.591] (II) Module modesetting: vendor="X.Org Foundation"
    23.591] (II) LoadModule: "fbdev"
    23.591] (II) Loading /usr/lib64/xorg/modules/drivers/fbdev_drv.so
    23.591] (II) Module fbdev: vendor="X.Org Foundation"
    23.591] (II) LoadModule: "vesa"
    23.591] (II) Loading /usr/lib64/xorg/modules/drivers/vesa_drv.so
    23.592] (II) Module vesa: vendor="X.Org Foundation"
    23.592] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
    23.592] (II) FBDEV: driver for framebuffer: fbdev
    23.592] (II) VESA: driver for VESA chipsets: vesa
    23.611] (WW) Falling back to old probe method for fbdev
    23.611] (II) Loading sub module "fbdevhw"
    23.611] (II) LoadModule: "fbdevhw"
    23.611] (II) Loading /usr/lib64/xorg/modules/libfbdevhw.so
    23.612] (II) Module fbdevhw: vendor="X.Org Foundation"
    24.102] (II) UnloadModule: "fbdev"
    24.102] (II) Unloading fbdev
    24.102] (II) UnloadSubModule: "fbdevhw"
    24.102] (II) Unloading fbdevhw
    24.102] (II) UnloadModule: "vesa"
    24.102] (II) Unloading vesa

BTW, the X11 Device definition for the modesetting DDX case is:


Section "Device"
  Identifier "Default Device"
  Driver "modesetting"
EndSection

“modesetting” man page …

I have:

linux:~ # egrep 'amdgpu|modesetting|fbdev|vesa' /etc/X11/xorg.conf.install /var/log/Xorg.0.log
/etc/X11/xorg.conf.install:  Identifier "modesetting"
/etc/X11/xorg.conf.install:  Driver  "modesetting"
/etc/X11/xorg.conf.install:  Identifier "modesetting"
/etc/X11/xorg.conf.install:  Device "modesetting"
/etc/X11/xorg.conf.install:  Identifier "fbdev"
/etc/X11/xorg.conf.install:  Driver  "fbdev"
/etc/X11/xorg.conf.install:  Identifier "fbdev"
/etc/X11/xorg.conf.install:  Device "fbdev"
/etc/X11/xorg.conf.install:  Identifier "vesa"
/etc/X11/xorg.conf.install:  Driver  "vesa"
/etc/X11/xorg.conf.install:  Identifier "vesa"
/etc/X11/xorg.conf.install:  Device "vesa"
/etc/X11/xorg.conf.install:  Screen  "modesetting"
/etc/X11/xorg.conf.install:  Screen  "fbdev"
/etc/X11/xorg.conf.install:  Screen  "vesa"
/var/log/Xorg.0.log:    11.460]        loading driver: amdgpu
/var/log/Xorg.0.log:    11.460] (==) Matched amdgpu as autoconfigured driver 0
/var/log/Xorg.0.log:    11.460] (==) Matched modesetting as autoconfigured driver 2
/var/log/Xorg.0.log:    11.460] (==) Matched fbdev as autoconfigured driver 3
/var/log/Xorg.0.log:    11.460] (==) Matched vesa as autoconfigured driver 4
/var/log/Xorg.0.log:    11.460] (II) LoadModule: "amdgpu"
/var/log/Xorg.0.log:    11.460] (II) Loading /usr/lib64/xorg/modules/drivers/amdgpu_drv.so
/var/log/Xorg.0.log:    11.463] (II) Module amdgpu: vendor="X.Org Foundation"
/var/log/Xorg.0.log:    11.481] (II) LoadModule: "modesetting"
/var/log/Xorg.0.log:    11.481] (II) Loading /usr/lib64/xorg/modules/drivers/modesetting_drv.so
/var/log/Xorg.0.log:    11.482] (II) Module modesetting: vendor="X.Org Foundation"
/var/log/Xorg.0.log:    11.482] (II) LoadModule: "fbdev"
/var/log/Xorg.0.log:    11.482] (II) Loading /usr/lib64/xorg/modules/drivers/fbdev_drv.so
/var/log/Xorg.0.log:    11.482] (II) Module fbdev: vendor="X.Org Foundation"
/var/log/Xorg.0.log:    11.482] (II) LoadModule: "vesa"
/var/log/Xorg.0.log:    11.482] (II) Loading /usr/lib64/xorg/modules/drivers/vesa_drv.so
/var/log/Xorg.0.log:    11.483] (II) Module vesa: vendor="X.Org Foundation"
/var/log/Xorg.0.log:    All GPUs supported by the amdgpu kernel driver
/var/log/Xorg.0.log:    11.483] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
/var/log/Xorg.0.log:    11.483] (II) FBDEV: driver for framebuffer: fbdev
/var/log/Xorg.0.log:    11.483] (II) VESA: driver for VESA chipsets: vesa
/var/log/Xorg.0.log:    11.503] (II) AMDGPU(0): [KMS] Kernel modesetting enabled.
/var/log/Xorg.0.log:    11.513] (WW) Falling back to old probe method for modesetting
/var/log/Xorg.0.log:    11.513] (WW) Falling back to old probe method for fbdev
/var/log/Xorg.0.log:    11.513] (II) Loading sub module "fbdevhw"
/var/log/Xorg.0.log:    11.513] (II) LoadModule: "fbdevhw"
/var/log/Xorg.0.log:    11.513] (II) Loading /usr/lib64/xorg/modules/libfbdevhw.so
/var/log/Xorg.0.log:    11.514] (II) Module fbdevhw: vendor="X.Org Foundation"
/var/log/Xorg.0.log:    11.783] (II) UnloadModule: "modesetting"
/var/log/Xorg.0.log:    11.783] (II) Unloading modesetting
/var/log/Xorg.0.log:    11.783] (II) UnloadModule: "fbdev"
/var/log/Xorg.0.log:    11.783] (II) Unloading fbdev
/var/log/Xorg.0.log:    11.783] (II) UnloadSubModule: "fbdevhw"
/var/log/Xorg.0.log:    11.783] (II) Unloading fbdevhw
/var/log/Xorg.0.log:    11.783] (II) UnloadModule: "vesa"
/var/log/Xorg.0.log:    11.783] (II) Unloading vesa
linux:~ # 

I think amdgpu loads and works as intended, despite all the noise created by defaults.

These are examples of expected Xorg.0.log messages re X “driver” (auto-)configuration, loading and unloading, without and with any optional GPU-specific xf86-video-* packages installed.

15.1 - AMD with xf86-video-amdgpu not installed:

# egrep -i 'matched|open module|loadmodule|load module' /var/log/Xorg.0.log | grep -v libinput
  2235.231] (II) LoadModule: "glx"
  2235.233] (==) Matched ati as autoconfigured driver 0
  2235.233] (==) Matched modesetting as autoconfigured driver 1
  2235.233] (==) Matched fbdev as autoconfigured driver 2
  2235.233] (==) Matched vesa as autoconfigured driver 3
  2235.233] (II) LoadModule: "ati"
  2235.234] (WW) Warning, couldn't open module ati
  2235.234] **(EE) Failed to load module "ati" (module does not exist, 0)**
  2235.234] (II) LoadModule: "modesetting"
  2235.234] (II) LoadModule: "fbdev"
  2235.234] (II) LoadModule: "vesa"
  2235.243] (II) LoadModule: "fbdevhw"
  2235.244] (II) LoadModule: "glamoregl"
  2235.577] (II) LoadModule: "fb"
  2235.577] (II) **UnloadModule: "fbdev"**
  2235.577] (II) **UnloadModule: "vesa"**

15.1 - AMD with xf86-video-amdgpu installed:

# egrep -i 'matched|open module|loadmodule|load module' /var/log/Xorg.0.log | grep -v libinput
   314.784] (II) LoadModule: "glx"
   314.872] (==) Matched amdgpu as autoconfigured driver 0
   314.872] (==) Matched ati as autoconfigured driver 1
   314.872] (==) Matched modesetting as autoconfigured driver 2
   314.872] (==) Matched fbdev as autoconfigured driver 3
   314.872] (==) Matched vesa as autoconfigured driver 4
   314.872] (II) LoadModule: "amdgpu"
   314.905] (II) LoadModule: "ati"
   314.914] (WW) Warning, couldn't open module ati
   314.914] **(EE) Failed to load module "ati" (module does not exist, 0)**
   314.914] (II) LoadModule: "modesetting"
   314.926] (II) LoadModule: "fbdev"
   314.935] (II) LoadModule: "vesa"
   314.969] (II) LoadModule: "fbdevhw"
   314.978] (II) LoadModule: "fb"
   314.986] (II) LoadModule: "dri2"
   316.662] (II) LoadModule: "glamoregl"
   316.908] (II) LoadModule: "ramdac"
   316.908] (II) **UnloadModule: "modesetting"**
   316.908] (II) **UnloadModule: "fbdev"**
   316.908] (II) **UnloadModule: "vesa"**

15.2 - Intel with xf86-video-intel not installed

# egrep -i 'matched|open module|loadmodule|load module' /var/log/Xorg.0.log | grep -v libinput
    71.303] (II) LoadModule: "glx"
    71.310] (==) Matched intel as autoconfigured driver 0
    71.310] (==) Matched modesetting as autoconfigured driver 1
    71.310] (==) Matched fbdev as autoconfigured driver 2
    71.310] (==) Matched vesa as autoconfigured driver 3
    71.310] (II) LoadModule: "intel"
    71.311] (WW) Warning, couldn't open module intel
    71.311] **(EE) Failed to load module "intel" (module does not exist, 0)**
    71.311] (II) LoadModule: "modesetting"
    71.312] (II) LoadModule: "fbdev"
    71.312] (II) LoadModule: "vesa"
    71.313] (II) LoadModule: "fbdevhw"
    71.313] (II) LoadModule: "glamoregl"
    71.419] (II) LoadModule: "fb"
    71.420] (II) **UnloadModule: "fbdev"**
    71.420] (II) **UnloadModule: "vesa"**

15.2 - Intel with xf86-video-intel installed:

# egrep -i 'matched|open module|loadmodule|load module' /var/log/Xorg.0.log | grep -v libinput
   221.847] (II) LoadModule: "glx"
   221.848] (==) Matched intel as autoconfigured driver 0
   221.848] (==) Matched modesetting as autoconfigured driver 1
   221.848] (==) Matched fbdev as autoconfigured driver 2
   221.848] (==) Matched vesa as autoconfigured driver 3
   221.848] (II) LoadModule: "intel"
   221.848] (II) LoadModule: "modesetting"
   221.848] (II) LoadModule: "fbdev"
   221.848] (II) LoadModule: "vesa"
   221.866] (II) LoadModule: "fbdevhw"
   221.868] (II) LoadModule: "dri3"
   221.868] (II) LoadModule: "dri2"
   221.868] (II) LoadModule: "present"
   221.868] (II) **UnloadModule: "modesetting"**
   221.868] (II) **UnloadModule: "fbdev"**
   221.868] (II) **UnloadModule: "vesa"**

15.1 - NVidia with xf-86-video-nouveau not installed:

# egrep -i 'matched|open module|loadmodule|load module' /var/log/Xorg.0.log | grep -v libinput
    69.117] (II) LoadModule: "glx"
    69.137] (==) Matched nvidia as autoconfigured driver 0
    69.137] (==) Matched nouveau as autoconfigured driver 1
    69.137] (==) Matched nv as autoconfigured driver 2
    69.137] (==) Matched modesetting as autoconfigured driver 3
    69.137] (==) Matched fbdev as autoconfigured driver 4
    69.137] (==) Matched vesa as autoconfigured driver 5
    69.137] (II) LoadModule: "nvidia"
    69.138] (WW) Warning, couldn't open module nvidia
    69.138] **(EE) Failed to load module "nvidia" (module does not exist, 0)**
    69.138] (II) LoadModule: "nouveau"
    69.139] (WW) Warning, couldn't open module nouveau
    69.139] **(EE) Failed to load module "nouveau" (module does not exist, 0)**
    69.139] (II) LoadModule: "nv"
    69.139] (WW) Warning, couldn't open module nv
    69.139] **(EE) Failed to load module "nv" (module does not exist, 0)**
    69.139] (II) LoadModule: "modesetting"
    69.141] (II) LoadModule: "fbdev"
    69.142] (II) LoadModule: "vesa"
    69.150] (II) LoadModule: "fbdevhw"
    69.168] (II) LoadModule: "glamoregl"
    69.947] (II) LoadModule: "fb"
    69.949] (II) LoadModule: "shadow"
    69.951] (II) **UnloadModule: "fbdev"**
    69.951] (II) **UnloadModule: "vesa"**

15.1 - NVidia with xf86-video-nouveau installed:

# egrep -i 'matched|open module|loadmodule|load module' /var/log/Xorg.0.log | grep -v libinput
   140.189] (II) LoadModule: "glx"
   140.202] (==) Matched nvidia as autoconfigured driver 0
   140.202] (==) Matched nouveau as autoconfigured driver 1
   140.202] (==) Matched nv as autoconfigured driver 2
   140.202] (==) Matched modesetting as autoconfigured driver 3
   140.202] (==) Matched fbdev as autoconfigured driver 4
   140.202] (==) Matched vesa as autoconfigured driver 5
   140.202] (II) LoadModule: "nvidia"
   140.203] (WW) Warning, couldn't open module nvidia
   140.203] **(EE) Failed to load module "nvidia" (module does not exist, 0)**
   140.203] (II) LoadModule: "nouveau"
   140.204] (II) LoadModule: "nv"
   140.204] (WW) Warning, couldn't open module nv
   140.204] **(EE) Failed to load module "nv" (module does not exist, 0)**
   140.204] (II) LoadModule: "modesetting"
   140.206] (II) LoadModule: "fbdev"
   140.207] (II) LoadModule: "vesa"
   140.209] (II) LoadModule: "fbdevhw"
   140.210] (II) LoadModule: "dri2"
   140.373] (II) LoadModule: "fb"
   140.375] (II) LoadModule: "shadowfb"
   140.376] (II) **UnloadModule: "modesetting"**
   140.376] (II) **UnloadModule: "fbdev"**
   140.376] (II) **UnloadModule: "vesa"**

The /var/log/Xorg.0.log “(EE)” messages definitely go away if, for the modesetting DDX case, there’s a /etc/X11/xorg.conf.d/50-device.conf file present with:


Section "Device"
  Identifier "Default Device"
  Driver "**modesetting**"
EndSection

Or, if you’re not using the modesetting DDX, then the name of your xf86 driver – “amdgpu” for example …

  • Warning:
    if you move to Modesetting from an xf86 DDX such as “amdgpu”, don’t forget to edit the /etc/X11/xorg.conf.d/50-device.conf file – the Display Manager will crash if a non-existent DDX driver is defined in that file …

/etc/X11/xorg.conf.d/50-device.conf is owned by the Leap package xorg-x11-driver-video, a meta-package responsible for pulling in xf86-video-*. The file ships with a 2011 timestamp and contains only comments. In TW it recently moved to /usr/share/X11/xorg.conf.d/50-device.conf, but the content and timestamp did not change.

The upgrade reinstalled the following packages:

  • xorg-x11-driver-video
  • xf86-video-amdgpu
  • xf86-video-ati
  • xf86-video-mach64
  • xf86-video-r128

For whatever reason, “xf86-video-nouveau” wasn’t reinstalled …

The files in “/etc/X11/xorg.conf.d/” were left untouched – “50-device.conf” still had the following content:


Section "Device"
  Identifier "Default Device"
  Driver "modesetting"
EndSection

And, checking in “/var/log/Xorg.0.log”, Modesetting DDX is being used – with no trace of the AMD DDX drivers being called, or any other driver (VESA, fbdev, etc, etc) …


 > inxi -GSIxxza
System:    Kernel: 5.3.18-lp152.33-default x86_64 bits: 64 compiler: gcc v: 7.5.0 
           parameters: BOOT_IMAGE=/boot/vmlinuz-5.3.18-lp152.33-default 
           root=UUID=fa6a0367-a191-447e-8298-35761792b861 
           resume=/dev/disk/by-uuid/c0a219eb-5ea7-470b-9297-3e0d70964554 showopts elevator=cfq splash=silent quiet 
           modprobe.blacklist=amdgpu mitigations=auto 
           Desktop: KDE Plasma 5.18.5 tk: Qt 5.12.7 wm: kwin_x11 dm: SDDM Distro: openSUSE Leap 15.2 
Graphics:  Device-1: Advanced Micro Devices [AMD/ATI] Richland [Radeon HD 8650G] vendor: Lenovo driver: radeon 
           v: kernel bus ID: 00:01.0 chip ID: 1002:990b 
           Device-2: Advanced Micro Devices [AMD/ATI] Sun PRO [Radeon HD 8570A/8570M] vendor: Lenovo driver: radeon 
           v: kernel bus ID: 01:00.0 chip ID: 1002:6663 
           Device-3: Realtek type: USB driver: uvcvideo bus ID: 1-4:4 chip ID: 0bda:5728 serial: <filter> 
           Display: x11 server: X.Org 1.20.3 compositor: kwin_x11 driver: **modesetting** display ID: :0 screens: 1 
           Screen-1: 0 s-res: 1366x768 s-dpi: 96 s-size: 361x203mm (14.2x8.0") s-diag: 414mm (16.3") 
           Monitor-1: eDP-1 res: 1366x768 hz: 60 dpi: 101 size: 344x194mm (13.5x7.6") diag: 395mm (15.5") 
           OpenGL: renderer: AMD ARUBA (DRM 2.50.0 / 5.3.18-lp152.33-default LLVM 9.0.1) v: 4.3 Mesa 19.3.4 
           compat-v: 3.1 direct render: Yes 
Info:      Processes: 263 Uptime: 2h 28m Memory: 6.98 GiB used: 2.33 GiB (33.3%) Init: systemd v: 234 runlevel: 5 
           target: graphical.target Compilers: gcc: 7.5.0 alt: 7 clang: 9.0.1 Shell: bash v: 4.4.23 
           running in: konsole inxi: 3.1.00 
 > 

All of which begs the question, “Is it simply sufficient to define the X.Org driver as being «modesetting»?” …

You have no NVidia GPU, but you do have an AMD GPU. Something about the openSUSE installation knows that and takes it into account. It wants to maximize the possibility, that if you have an ancient or bleeding-edge GPU, a matching driver is available for it, since the modesetting DDX does not support every APU/GPU/IGP in existence, only the vast majority of those in use. I often see those packages get installed via a zypper dup, until I remember to lock them (out).

The files in “/etc/X11/xorg.conf.d/” were left untouched – “50-device.conf” still had the following content:

Section "Device"
  Identifier "Default Device"
  Driver "modesetting"
EndSection

Upstream, all the following are optional (and won’t be installed on a minimal-base + minimal-X Debian installation), so won’t be automatically installed just because the Xorg server is installed:

  • /etc/X11/xorg.conf
  • /etc/X11/xorg.conf.d/
  • /etc/X11/xorg.conf.d/*.conf
  • xorg-x11-driver-video
  • xf86-video-*


All of which begs the question, “Is it simply sufficient to define the X.Org driver as being modesetting?” …
Modesetting is the upstream default DDX, the only available DDX, absent installation of a proprietary driver, or one or more of the upstream optional xf86-video-* packages. Upstream, ancient and bleeding-edge APUs/GPUs/IGPs are not supported, so X won’t run on them unless some (optional) xf86-video-* or proprietary driver is installed.

Quoting Phoronix:

The xf86-video-modesetting DDX is a hardware-independent X.Org driver that will work with any GPU given that it has a full-functioning DRM/KMS driver. 2D acceleration is optionally supplied by GLAMOR.

Question: Is there a list of the drivers which have a full/functioning DRM/KMS capability?

Alternative question: Is there a list of the GPUs supported by Modesetting DDX?

Question: Is is better to remove the xf86-video-* driver packages or, to simply define the X.Org driver to be “modesetting”?

It seems that, if the GPU specific DDX options are more suited to a specific hardware then, that DDX driver should be used otherwise, if the Modesetting DDX options are sufficient then, the Modesetting DDX driver should be used – assuming that, the Modesetting DDX driver supports the GPU in question …

I cannot recall ever having seen one listing any other than AMD, Intel and NVidia. I suppose there must be something for ARM, and probably also for GPUs the openchrome DDX supports. For Matrox it seems only the non-antique G200 for server motherboards may be supported.

Question: Is is better to remove the xf86-video-* driver packages or, to simply define the X.Org driver to be “modesetting”?
Depends. If you want X automagic setup to work, you can’t be configuring any specific DDX. If you define use e.g. of the intel, then when that IGP is usurped by installation of an NVidia GPU, you’ll get no X at all. Same happens if you define nouveau and replace an NVidia with an AMD. If you specify modesetting and install an AMD, it will probably be OK, but you won’t know what benefit you’re missing that the amdgpu likely would make available.

It seems that, if the GPU specific DDX options are more suited to a specific hardware then, that DDX driver should be used otherwise, if the Modesetting DDX options are sufficient then, the Modesetting DDX driver should be used – assuming that, the Modesetting DDX driver supports the GPU in question …
That the intel DDX hasn’t had an official release in over five years strongly suggests where the Intel driver developers are focusing their effort. In contrast, the amdgpu DDX isn’t stagnant, so probably the AMD developers have a stronger focus on it than on the modesetting. Consequently, AMD users supported by the amdgpu DDX will likely be better off using it. The NVidia world at large doesn’t seem to be aware that anything but the reverse-engineered nouveau DDX and the proprietary NVidia exist. Given the NVidia market seems primarily high-end focused, and NVidia continues to keep specifications secret, it may be just as well that a default installation remains nouveau-free, as the odds are rather high it will be usurped by a proprietary driver anyway.

@mrmazda:

Then, may I suggest the following summary:

  1. If the GPU is Intel then, use the Modesetting DDX driver.
  2. If the GPU is an older ATI Radeon then, use one of the Radeon DDX drivers – either ati, radeon, r128 or mach64.
  3. If the GPU is a not so old AMD Radeon – “radeon” Kernel driver – then use either the Radeon DDX driver or, the Modesetting DDX driver.
  4. If the GPU is a newer AMD Radeon – “amdgpu” Kernel driver – then use either the Modesetting DDX driver or, the AMD GPU DDX driver if the GPU specific settings are needed …
  5. If the GPU is a NVidia then, the NVdia specific DDX driver matching to the NVidia Kernel driver being used, has to be used.
  6. If the GPU is anything else, the GPU specific DDX driver should be used but, the Modesetting DDX driver may, possibly, be used for some special cases.

From the nouveau feature matrix [1], which features can be replaced with the modesetting DDX? Unfortunately the matrix doesn’t make it clear which features are implemented by the kernel part, and which ones by the DDX. Maybe both sides implement a part of each component. And what about Mesa? Both nouveau and modesetting use the same Mesa component? I noticed a Mesa-dri-nouveau package, so probably not. When I used nouveau, I noticed artifacts, tearing and the KDE panel would frequently switch monitors (connectors were relabeled).

For reference, the components of nouveau[2]:

  • Nouveau DRM : The privileged part of Nouveau, running in the kernel;
  • Libdrm : A library that wraps the DRM & Nouveau IOCTLs, it simplifies memory management and command submission;
  • xf86-video-nouveau : The device-dependent part of X (DDX) for NVIDIA cards whose role is to provide 2D acceleration (EXA) and some simple video acceleration (XV);
  • Mesa : It provides 3D, GPGPU and video acceleration to open source drivers. For more information, please read MesaDrivers.

Thanks!

[1] FeatureMatrix · freedesktop.org
[2] InstallNouveau · freedesktop.org

IMO answers to the post #33 comment questions would all be out of scope of this primer, and this forum.

The following “how to” thread now supersedes this one…
https://forums.opensuse.org/showthread.php/562680-AMD-Intel-amp-NVidia-X-graphics-driver-primer-third-edition