The driver for your intel chipset is one of the few remaining classic non-gallium drivers, that's why it kept working.
(Intel's new Iris driver that has many advantages on newer hardware is also a gallium driver).
strace glxinfo
after exporting DRI_PRIME=1, I found the lines
openat(AT_FDCWD, "/usr/lib/dri/tls/radeonsi_dri.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (File o directory non esistente)
openat(AT_FDCWD, "/usr/lib/dri/radeonsi_dri.so", O_RDONLY|O_CLOEXEC) = 4
read(4, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\0\r\0\0\0\0\0"..., 832) = 832
fstat(4, {st_mode=S_IFREG|0755, st_size=20223384, ...}) = 0
mmap(NULL, 23136696, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x7f1943c87000
mprotect(0x7f1943d57000, 18272256, PROT_NONE) = 0
mmap(0x7f1943d57000, 13451264, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0xd0000) = 0x7f1943d57000
mmap(0x7f1944a2b000, 4816896, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0xda4000) = 0x7f1944a2b000
mmap(0x7f1944ec4000, 1101824, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x123c000) = 0x7f1944ec4000
mmap(0x7f1944fd1000, 2910648, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f1944fd1000
close(4) = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=313095, ...}) = 0
mmap(NULL, 313095, PROT_READ, MAP_PRIVATE, 4, 0) = 0x7f194602a000
close(4) = 0
openat(AT_FDCWD, "/usr/lib/tls/haswell/x86_64/libLLVM-9.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (File o directory non esistente)
stat("/usr/lib/tls/haswell/x86_64", 0x7ffed88c6760) = -1 ENOENT (File o directory non esistente)
openat(AT_FDCWD, "/usr/lib/tls/haswell/libLLVM-9.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (File o directory non esistente)
stat("/usr/lib/tls/haswell", 0x7ffed88c6760) = -1 ENOENT (File o directory non esistente)
openat(AT_FDCWD, "/usr/lib/tls/x86_64/libLLVM-9.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (File o directory non esistente)
stat("/usr/lib/tls/x86_64", 0x7ffed88c6760) = -1 ENOENT (File o directory non esistente)
openat(AT_FDCWD, "/usr/lib/tls/libLLVM-9.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (File o directory non esistente)
stat("/usr/lib/tls", 0x7ffed88c6760) = -1 ENOENT (File o directory non esistente)
openat(AT_FDCWD, "/usr/lib/haswell/x86_64/libLLVM-9.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (File o directory non esistente)
stat("/usr/lib/haswell/x86_64", 0x7ffed88c6760) = -1 ENOENT (File o directory non esistente)
openat(AT_FDCWD, "/usr/lib/haswell/libLLVM-9.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (File o directory non esistente)
stat("/usr/lib/haswell", 0x7ffed88c6760) = -1 ENOENT (File o directory non esistente)
openat(AT_FDCWD, "/usr/lib/x86_64/libLLVM-9.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (File o directory non esistente)
stat("/usr/lib/x86_64", 0x7ffed88c6760) = -1 ENOENT (File o directory non esistente)
openat(AT_FDCWD, "/usr/lib/libLLVM-9.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (File o directory non esistente)
stat("/usr/lib", {st_mode=S_IFDIR|0755, st_size=249856, ...}) = 0
munmap(0x7f194602a000, 313095) = 0
munmap(0x7f1943c87000, 23136696) = 0
write(2, "libGL error: ", 13) = 13
write(2, "MESA-LOADER: failed to open rade"..., 65) = 65
where you can see it looks for LLVM 9, and does not find it. Therefore, all I had to do is upgrade LLVM,and it worked!
I haven't mentioned this before because I had no idea that mesa made use of LLVM. I have had to remove the "old" packages which needed LLVM 8...
glxinfo output is unchanged:
$ glxinfo -B
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: Intel Open Source Technology Center (0x8086)
Device: Mesa DRI Intel(R) HD Graphics 520 (Skylake GT2) (0x1916)
Version: 19.2.2
Accelerated: yes
Video memory: 3072MB
Unified memory: yes
Preferred profile: core (0x1)
Max core profile version: 4.5
Max compat profile version: 3.0
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 520 (Skylake GT2)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 19.2.2
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 3.0 Mesa 19.2.2
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 19.2.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
for completeness, here is the the dmesg output from this boot. It's interesting to see that it shows a different GART size (1024 MB instead 2048 MB).
Also, I remember that the "DRI_PRIME=1 glxinfo" command used to work some time ago, and I wasn't using the amdgpu driver.
$ glxinfo -B
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: Intel Open Source Technology Center (0x8086)
Device: Mesa DRI Intel(R) HD Graphics 520 (Skylake GT2) (0x1916)
Version: 19.2.2
Accelerated: yes
Video memory: 3072MB
Unified memory: yes
Preferred profile: core (0x1)
Max core profile version: 4.5
Max compat profile version: 3.0
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 520 (Skylake GT2)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 19.2.2
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 3.0 Mesa 19.2.2
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 19.2.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
I'm going to try the amdgpu driver now (second config).
]]>first remove xf86-video-ati and re-install xf86-video-amdgpu .
post xorg log , run glxinfo -B .
Also try a second configuration with amdgpu as kernel module for your card.
https://wiki.archlinux.org/index.php/AM … K)_support
post that xorg log, also run glxinfo -B .
[ 8.629] (EE) RADEON(G0): gbm_create_device returned NULL
[ 8.629] (II) Loading sub module "shadow"
[ 8.629] (II) LoadModule: "shadow"
[ 8.629] (II) Loading /usr/lib/xorg/modules/libshadow.so
[ 8.629] (II) Module shadow: vendor="X.Org Foundation"
[ 8.629] compiled for 1.20.5, module version = 1.1.0
[ 8.629] ABI class: X.Org ANSI C Emulation, version 0.4
[ 8.629] (II) RADEON(G0): KMS Color Tiling: disabled
[ 8.629] (II) RADEON(G0): KMS Color Tiling 2D: disabled
[ 8.630] (II) RADEON(G0): mem size init: gart size :7fbce000 vram size: s:80000000 visible:fa28000
[ 8.630] (II) RADEON(G0): EXA: Driver will allow EXA pixmaps in VRAM
These are weird, especially the gbm message and radeon using EXA ( an old deprecated method) instead of GLAMOR .
I suggest removing xf86-video-intel so X will have to use modesetting driver for the intel card.
The radeon card is now shown, but the output of glxinfo remains unchanged:
$ DRI_PRIME=1 glxinfo | grep vendor
libGL error: MESA-LOADER: failed to open radeonsi (search paths /usr/lib/dri)
libGL error: failed to load driver: radeonsi
server glx vendor string: SGI
client glx vendor string: Mesa Project and SGI
OpenGL vendor string: Intel Open Source Technology Center
User config files are supposed to be in /etc/X11/xorg.conf.d , a remnant from a previous package seems likely.
Remove 20-intel.conf , restart X (or reboot if you prefer) and post a fresh xorg log.
]]>pacman -Qo /usr/share/X11/xorg.conf.d/20-intel.conf
the answer is (translated):
No packages contain /usr/share/X11/xorg.conf.d/20-intel.conf.
As for its contents:
$ cat /usr/share/X11/xorg.conf.d/20-intel.conf
Section "Device"
Identifier "card0"
Driver "intel"
Option "Backlight" "intel_backlight"
BusID "PCI:0:2:0"
EndSection
Maybe it's been left over from an old xorg-intel package?
]]>pacman -Qo /usr/share/X11/xorg.conf.d/20-intel.conf
also post the contents of that file.
]]>$ ls -lR /etc/X11 /usr/share/X11/xorg.conf.d/
/etc/X11:
totale 8
drwxr-xr-x 3 root root 4096 19 feb 2016 xinit
drwxr-xr-x 2 root root 4096 18 feb 2018 xorg.conf.d
/etc/X11/xinit:
totale 4
drwxr-xr-x 2 root root 4096 23 ott 15.26 xinitrc.d
/etc/X11/xinit/xinitrc.d:
totale 8
-rwxr-xr-x 1 root root 318 9 nov 2018 40-libcanberra-gtk-module.sh
-rwxr-xr-x 1 root root 199 19 ott 22.50 50-systemd-user.sh
/etc/X11/xorg.conf.d:
totale 4
-rw-r--r-- 1 root root 232 8 mar 2016 00-keyboard.conf
/usr/share/X11/xorg.conf.d/:
totale 20
-rw-r--r-- 1 root root 92 11 ott 19.37 10-amdgpu.conf
-rw-r--r-- 1 root root 1350 25 ott 10.43 10-quirks.conf
-rw-r--r-- 1 root root 92 15 ott 19.09 10-radeon.conf
-rw-r--r-- 1 root root 121 18 feb 2018 20-intel.conf
-rw-r--r-- 1 root root 1429 12 ago 20.26 40-libinput.conf
btw, totale=total in english
]]>[ 9.362] (==) Using config directory: "/etc/X11/xorg.conf.d"
[ 9.362] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[ 9.363] (==) No Layout section. Using the first Screen section.
[ 9.363] (==) No screen section available. Using defaults.
[ 9.363] (**) |-->Screen "Default Screen Section" (0)
[ 9.363] (**) | |-->Monitor "<default monitor>"
[ 9.364] (==) No device specified for screen "Default Screen Section".
Using the first device section listed.
[ 9.364] (**) | |-->Device "card0"
That indicates you have an xorg config file that overrides X autodetection and probably messes things up.
post
ls -lR /etc/X11 /usr/share/X11/xorg.conf.d/
$ pacman -Qs xf86-video
local/xf86-video-amdgpu 19.1.0-1 (xorg-drivers)
X.org amdgpu video driver
local/xf86-video-ati 1:19.1.0-1 (xorg-drivers)
X.org ati video driver
local/xf86-video-intel 1:2.99.917+893+gbff5eca4-1 (xorg-drivers)
X.org Intel i810/i830/i915/945G/G965+ video drivers
Thanks for the support
]]>pacman -Qs xf86-video
Also post xorg log and a full journal /dmesg please.
For large logs, better use a pastebin client .