Help needed: State of graphics stack on linux for Gaming (OPTIMUS laptop)
This probably was asked countless times already, but given the amount of possible combinations of all the hardware and software, this is probably not surprising.
So, I do have some experience with linux. I ssh into my ubuntu server a lot, I do many bash/terminal tricks, so can't really call myself a newbie in Linux. However, for gaming I would use Windows for as long as I remember myself. With the release of KDE Plasma 6 and Vulkan support getting better, I was thinking about giving it a go, but I'm stuck.
When launching a game that natively supports linux (Dota 2) from Steam, pretty much nothing happens. I see in terminal that there are some errors, but archwiki states that this is normal:
Wrong ELF class
If you see this message in Steam's console output
ERROR: ld.so: object '~/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
you can safely ignore it. It is not really any error: Steam includes both 64- and 32-bit versions of some libraries and only one version will load successfully. This "error" is displayed even when Steam (and the in-game overlay) is working perfectly.
Other than that I see no errors or anything.
I'm running Arch linux with KDE Plasma 6.0.1, with default Wayland session. My laptop is an Acer Nitro 5 with NVIDIA GPU and I guess also Intel integrated video card. Here are the details:
spoiler
Operating System: Arch Linux
KDE Plasma Version: 6.0.1
KDE Frameworks Version: 6.0.0
Qt Version: 6.6.2
Kernel Version: 6.7.9-arch1-1 (64-bit)
Graphics Platform: Wayland
Processors: 16 × 12th Gen Intel® Core™ i5-12500H
Memory: 15.3 GiB of RAM
Graphics Processor: Mesa Intel® Graphics
Manufacturer: Acer
Product Name: Nitro AN515-58
System Version: V1.13
I have no idea honestly about which driver I have installed, but I did install nvidia package. I'm not sure if it's being used. I also don't know anything about Mesa. Also, this is from my Info Center:
spoiler
KWin Support Information:
The following information should be used when requesting support on e.g. https://discuss.kde.org.
It provides information about the currently running instance, which options are used,
what OpenGL driver and which effects are running.
Please post the information provided underneath this introductory text to a paste bin service
like https://paste.kde.org instead of pasting into support threads.
==========================
Version
=======
KWin version: 6.0.1
Qt Version: 6.6.2
Qt compile version: 6.6.2
XCB compile version: 1.16.1
Operation Mode: Xwayland
Build Options
=============
KWIN_BUILD_DECORATIONS: yes
KWIN_BUILD_TABBOX: yes
KWIN_BUILD_ACTIVITIES: yes
HAVE_X11_XCB: yes
HAVE_GLX: yes
X11
===
Vendor: The X.Org Foundation
Vendor Release: 12302004
Protocol Version/Revision: 11/0
SHAPE: yes; Version: 0x11
RANDR: yes; Version: 0x14
DAMAGE: yes; Version: 0x11
Composite: yes; Version: 0x4
RENDER: yes; Version: 0xb
XFIXES: yes; Version: 0x50
SYNC: yes; Version: 0x31
GLX: yes; Version: 0x0
Decoration
==========
Plugin: org.kde.breeze
Theme:
Plugin recommends border size: None
onAllDesktopsAvailable: true
alphaChannelSupported: true
closeOnDoubleClickOnMenu: false
decorationButtonsLeft: 0, 9, 2, 6
decorationButtonsRight: 1, 3, 4, 5
borderSize: 0
gridUnit: 10
font: Noto Sans,10,-1,0,400,0,0,0,0,0,0,0,0,0,0,1
smallSpacing: 2
largeSpacing: 10
Output backend
==============
Name: DRM
Atomic Mode Setting on GPU 0: true
I don't even know what is Xwayland and why I have it installed, probably some dependency of KDE.
At this point I'm not even sure what I'm using (is it pure wayland, or x11, or some hybrid of using both), if I have correct GPU drivers (do I have correct drivers for just one of the two video cards, for both, or none at all), if my NVIDIA GPU is even working, if it's being used to run a game or not, and if I have all necessary packages to run Vulkan.
At this point, how do I troubleshoot all of this mess?
After that, run vulkaninfo - if you see info about your graphics card, you will know that Vulkan is working correctly. vkcube is another app you can run to test Vulkan.
Also, according to ProtonDB, you'll need to set the following launch options in Steam for DotA 2:
prime-run steam doesn't solve the issue, unfortunately.
nvidia-settings exists, I can launch it, and it shows my GPU model. GPU utilization is at 0%, I guess this is normal, because I don't need GPU to run my DE and browser. I'll see if this number changes when I try to launch any of my games.
Do I need xwayland to run steam and my steam games, or does steam work with wayland natively? Is it possible that I'm having the issues with xwayland?
Start with the basics, do you see your Nvidia GPU pop up when using vulkaninfo --summary?
If it doesn't pop up, verify that you have the correct vulkan ICD files in:
$ ls /usr/share/vulkan/icd.d/
There you should have nvidia_icd.json, nvidia_layers.json.
If that's missing, you're missing the nvidia-utils part of the driver.
If they are there, but it still don't show in your vulkaninfo sumary, you could try to load the nvidia driver manually; modprobe nvidia, also check the kernel logs journalctl -k or dmesg and search for nvidia to see whether the driver got loaded correctly?
NVIDIA proprietary driver doesn't play nice with Wayland. To check if the proprietary driver is loaded you can use lsmod | grep nvidia if there's output it means the driver is loaded. Since it's an OPTIMUS laptop things will run in general on your integrated board, e.g. glxinfo | grep vendor will show you MESA information instead of NVIDIA. Technically prime-run glxinfo | grep vendor should show NVIDIA, however I'm not entirely sure that works on Wayland.
I might try this as a last resort, but why would I use some emulation shenanigans for running something that is native to my platform?
It would be easier to just reboot into windows and run dota 2 there instead.
I have read on more than one occasion that Wine is becoming the "Linux Gaming ABI." It's no longer just about Windows. With the huge variety presented by distros, Wine is simply a nice stable target that never moves.
I think Dota doesn't run on proton, i had no problems running the native linux version with my laptop intel i7 + nvidia 1050ti, but it was on X11, u can probably choose that on login screen.
What i think you need from a fresh install (i don't remember exactly what i did at the time):
enable multilib
install nvidia package or nvidia-lts depending on which kernel you're using, or nvidia-dkms plus headers of your kernel
install nvidia-settings nvidia-utils lib32-nvidia-utils nvidia-prime (never used bumblebee i just use prime-run)
install steam or steam-native-runtime
install game on steam, change launch command to prime-run %command%