My Intel and nVIDIA drivers are installed correctly, but which driver is actually being used?

Hello,

I am using a DELL XPS 9530 with GeForce RTX 4070 graphics w/ OpenSUSE Slowroll.

https://en.opensuse.org/SDB:NVIDIA_drivers

Looking at the above guide, I installed my nvidia drivers using YasT. Everything looks fine; all of the commands that are suggested in the the guide show my drivers as being installed (lsmod, hwinfo, inxi, etc.) However, these commands also show my onboard Intel graphics.

So how do I know that my nvidia drivers are actually the default and they are being used instead of the intel drivers?

When I go to “About this System” from KDE it just says “Mesa Intel Graphics” which makes me suspect that the nvidia drivers are not actually being used as the default.

All I do right now is watch videos using VLC; I’m not playing games or anything.

You have an Optimus system in which you can choose between the onboard CPU graphics card driver (Intel) and the Nvidia GPU driver. In Windows, the choice between the two drivers is made automatically. If there is an application that places greater demands on the graphics performance (e.g. games), Windows will automatically switch to the Nvidia driver, which is not possible under Linux for licensing reasons. You therefore have to switch manually. To do this, install Bumblebee and suse-prime. You can then switch manually from the Intel driver to the Nvidia driver.

Translated with DeepL.com (free version)

@wiking can you show the output from inxi -Gxxz not there is no need for either bumblebee (deprecated from openSUSE) or in fact suse-prime, you can use Prime Render Offload to play vidieos on the dGPU, but show the above output first to confirm.

If you don’t play games, but just want to watch videos, I don’t see any reason why you would need the Nvidia driver at all. I watch videos and TV here on an eight-year-old laptop with the Mesa Intel driver without any problems.

At some point I do plan to go on Steam and play some 3D games briefly, just to see what the graphics system is capable of. I will probably get hooked, so there’s that.

I’m confused because these two people seem to be saying conflicting statements about bumblebee and suse-prime:

Here is the output malcolm requested:

wiking@localhost:~> inxi -Gxxz
Graphics:
Device-1: Intel Raptor Lake-P [Iris Xe Graphics] vendor: Dell driver: i915
v: kernel arch: Gen-13 ports: active: eDP-1 empty: DP-1, DP-2, DP-3, DP-4,
HDMI-A-1 bus-ID: 0000:00:02.0 chip-ID: 8086:a7a0
Device-2: NVIDIA AD106M [GeForce RTX 4070 Max-Q / Mobile] vendor: Dell
driver: nvidia v: 550.78 arch: Lovelace bus-ID: 0000:01:00.0
chip-ID: 10de:2820
Device-3: Realtek Integrated_Webcam_HD driver: uvcvideo type: USB rev: 2.0
speed: 480 Mb/s lanes: 1 bus-ID: 3-6:2 chip-ID: 0bda:5559
Display: x11 server: X.Org v: 21.1.12 with: Xwayland v: 23.2.6
compositor: kwin_x11 driver: X: loaded: modesetting,nvidia
unloaded: fbdev,vesa alternate: intel,nouveau,nv dri: iris gpu: i915
display-ID: :0 screens: 1
Screen-1: 0 s-res: 3456x2160 s-dpi: 192
Monitor-1: eDP-1 model: Samsung 0x414d res: 3456x2160 dpi: 261
diag: 396mm (15.6")
API: EGL v: 1.5 platforms: device: 0 drv: nvidia device: 1 drv: iris
device: 3 drv: swrast surfaceless: drv: nvidia x11: drv: iris
inactive: gbm,wayland,device-2
API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: intel mesa v: 24.0.5 glx-v: 1.4
direct-render: yes renderer: Mesa Intel Graphics (RPL-P)
device-ID: 8086:a7a0
API: Vulkan v: 1.3.280 surfaces: xcb,xlib device: 0 type: discrete-gpu
driver: N/A device-ID: 10de:2820

Malcolm has Nvidia experience and actually is an active Nvidia hardware user. His statements are correct


@wiking I guess you could say bumblebee was the first generation of tools for Optimus hardware (dual graphics in laptops), then came suse-prime, which still works (for I think the bulk of hardware). Now with more modern RTX cards and AMD is Prime Render Offload which can be controlled via dbus and the switcherooctl service, basically on demand


I suspect suse-prime is installed? https://en.opensuse.org/SDB:NVIDIA_SUSE_Prime

Can you check via running the command as your user suse-prime or zypper se suse-prime it does have offload capabilities AFAIK, but can be funky setting up, and limited to Xorg and relies on configuration files
 It should work, but sometimes it doesn’t especially with newer hardware.

I use switcherooctl (Prime Render Offload) here with AMD/AMD Laptop and Intel/Nvidia, Nvidia/Nvidia desktops as it’s integrated in the GNOME DE, works with Xorg and Wayland and needs no configuration https://en.opensuse.org/SDB:NVIDIA_Switcheroo_Control

You get better performance for graphics with Offload Chapter 35. PRIME Render Offload

End of the day it’s up to you :wink:

1 Like

Looks like I have both suse-prime and switcherooctl,

Any idea how to open the “Plasma 5 applet” that is mentioned below? I can’t find it by searching for it.

wiking@localhost:~> prime-select
Absolute path to ‘prime-select’ is ‘/usr/sbin/prime-select’, so running it may require superuser privileges (eg. root).
wiking@localhost:~> zypper se suse-prime
Repository : Time since last refresh
FreeOffice : 3 D 20 h
repo-non-free : 19 h 50 min
repo-non-oss : 19 h 50 min
repo-openh264 : 19 h 50 min
repo-oss : 19 h 50 min
update-slowroll : 19 h 50 min
packman : 19 h 50 min

Note: Running with user privileges. From time to time run 'zypper refresh' as root to make sure
the repository metadata are complete and up-to-date.

Loading repository data

Reading installed packages


S | Name | Summary | Type
–±--------------------------±---------------------------------------------------------------------±-------
i | plasma5-applet-suse-prime | Plasma 5 applet for controlling SUSE Prime | package
i | suse-prime | GPU (nvidia/intel) selection for NVIDIA optimus laptops with bbswi-> | package

wiking@localhost:~> switcherooctl --help
Usage:
switcherooctl COMMAND [ARGS
]

Commands:
help Print help
version Print version
list List the known GPUs
launch Launch a command on a specific GPU

Use “switcherooctl help COMMAND” to get detailed help.

@wiking So what does the command (as your user) show for switcherooctl --list if there is no output switch to root user and run systemctl enable --now switcheroo-control.service and then as your user run the switcherooctl --list command again, do you see both devices?

wiking@localhost:~> switcherooctl --list
Traceback (most recent call last):
File “/usr/bin/switcherooctl”, line 187, in
launch(args, gpu)
File “/usr/bin/switcherooctl”, line 66, in launch
os.execvp(args[0], args)
File “”, line 574, in execvp
File “”, line 616, in _execvpe
File “”, line 607, in _execvpe
FileNotFoundError: [Errno 2] No such file or directory
wiking@localhost:~> su
Password:
localhost:/home/wiking # systemctl enable --now switcheroo-control.service
Created symlink /etc/systemd/system/graphical.target.wants/switcheroo-control.service → /usr/lib/systemd/system/switcheroo-control.service.
localhost:/home/wiking # exit
exit
wiking@localhost:~> switcherooctl --list
Traceback (most recent call last):
File “/usr/bin/switcherooctl”, line 187, in
launch(args, gpu)
File “/usr/bin/switcherooctl”, line 66, in launch
os.execvp(args[0], args)
File “”, line 574, in execvp
File “”, line 616, in _execvpe
File “”, line 607, in _execvpe
FileNotFoundError: [Errno 2] No such file or directory
wiking@localhost:~> sudo switcherooctl --list
[sudo] password for root:
Traceback (most recent call last):
File “/usr/bin/switcherooctl”, line 187, in
launch(args, gpu)
File “/usr/bin/switcherooctl”, line 66, in launch
os.execvp(args[0], args)
File “”, line 574, in execvp
File “”, line 616, in _execvpe
File “”, line 607, in _execvpe
FileNotFoundError: [Errno 2] No such file or directory
wiking@localhost:~>

@wiking So can you uninstall suse-prime and bbswitch items, reboot and try the switcherooctl command again.

Just to clarify 
 I should do it like this?

zypper remove suse-prime
zypper remove bbswitch

@wiking zypper rm suse-prime bbswitch* should remove the packages, then add a lock with zypper al suse-prime bbswitch*

On my system:

> switcherooctl --list
Traceback (most recent call last):
  File "/usr/bin/switcherooctl", line 187, in <module>
    launch(args, gpu)
  File "/usr/bin/switcherooctl", line 66, in launch
    os.execvp(args[0], args)
  File "<frozen os>", line 574, in execvp
  File "<frozen os>", line 616, in _execvpe
  File "<frozen os>", line 607, in _execvpe
FileNotFoundError: [Errno 2] No such file or directory
>

but

> switcherooctl list
Device: 0
  Name:        IntelÂź HD Graphics 630
  Default:     yes
  Environment: DRI_PRIME=pci-0000_00_02_0

Device: 1
  Name:        NVIDIA Corporation GP106M [GeForce GTX 1060 Mobile]
  Default:     no
  Environment: __GLX_VENDOR_LIBRARY_NAME=nvidia __NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only
>

so try"list" instead of “–list”.

1 Like

I removed suse-prime. I don’t think bbswitch was ever installed. What does the lock do?

wiking@localhost:~> switcherooctl list
Device: 0
Name: Intel Corporation Raptor Lake-P [Iris Xe Graphics]
Default: yes
Environment: DRI_PRIME=pci-0000_00_02_0

Device: 1
Name: NVIDIA Corporation AD106M [GeForce RTX 4070 Max-Q / Mobile]
Default: no
Environment: __GLX_VENDOR_LIBRARY_NAME=nvidia __NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only
wiking@localhost:~>

It looks like the Intel graphics are the default.

@wiking much better!!! Now the output from inxi -Gxxz?

You can also test with;

glxinfo | grep "OpenGL renderer"

and

switcherooctl glxinfo | grep "OpenGL renderer"

First output should show Intel/Mesa, second one the Nvidia card


wiking@localhost:~> inxi -Gxxz
Graphics:
Device-1: Intel Raptor Lake-P [Iris Xe Graphics] vendor: Dell driver: i915
v: kernel arch: Gen-13 ports: active: eDP-1 empty: DP-1, DP-2, DP-3, DP-4,
HDMI-A-1 bus-ID: 0000:00:02.0 chip-ID: 8086:a7a0
Device-2: NVIDIA AD106M [GeForce RTX 4070 Max-Q / Mobile] vendor: Dell
driver: nvidia v: 550.78 arch: Lovelace bus-ID: 0000:01:00.0
chip-ID: 10de:2820
Device-3: Realtek Integrated_Webcam_HD driver: uvcvideo type: USB rev: 2.0
speed: 480 Mb/s lanes: 1 bus-ID: 3-6:2 chip-ID: 0bda:5559
Display: x11 server: X.Org v: 21.1.12 with: Xwayland v: 23.2.6
compositor: kwin_x11 driver: X: loaded: modesetting,nvidia
unloaded: fbdev,vesa alternate: intel,nouveau,nv dri: iris gpu: i915
display-ID: :0 screens: 1
Screen-1: 0 s-res: 3456x2160 s-dpi: 192
Monitor-1: eDP-1 model: Samsung 0x414d res: 3456x2160 dpi: 261
diag: 396mm (15.6")
API: EGL v: 1.5 platforms: device: 0 drv: nvidia device: 1 drv: iris
device: 3 drv: swrast surfaceless: drv: nvidia x11: drv: iris
inactive: gbm,wayland,device-2
API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: intel mesa v: 24.0.5 glx-v: 1.4
direct-render: yes renderer: Mesa Intel Graphics (RPL-P)
device-ID: 8086:a7a0
API: Vulkan v: 1.3.280 surfaces: xcb,xlib device: 0 type: discrete-gpu
driver: N/A device-ID: 10de:2820

wiking@localhost:~> glxinfo | grep “OpenGL renderer”
OpenGL renderer string: Mesa Intel(R) Graphics (RPL-P)

wiking@localhost:~> switcherooctl glxinfo | grep “OpenGL renderer”
OpenGL renderer string: NVIDIA GeForce RTX 4070 Laptop GPU/PCIe/SSE2

@wiking So you can use the command switcherooctl launch /usr/bin/vlc-qt or what ever is in the desktop file for vlc and you will be using the Nvidia driver. You can check via nvidia-smi or nvtop and will see the process running.

AFAIK Plasma is meant to be getting switcherooctl integration, so like on GNOME can just right-click the desktop item and select there to launch with the dGPU, from memory Steam will see it present and launch the dGPU


What sort of guidelines should I use to determine when to use switcherooctl launch? What kinds of video and graphics are more efficient on Nvidia graphics vs intel Iris? What is the reason we don’t use Nvidia graphics 100% of the time?

Power consumption of the NVIDIA card ?

System temperature plus noise (cooling fans) might be another criteria.

The battery of my laptop will last one hour with 100% NVIDIA usage but 3 hours with 100% Intel graphics usage. And while the NVIDIA card is in use the fans will run all the time and the system becomes quite hot.