Switching Between Intel and Nvidia Graphics Cards on Ubuntu
My TUXEDO InfinityBook Pro has two graphics cards on it. Integrated Intel and dedicated Nvidia GeForce.
It is more common these days to have a hybrid setup of two graphics cards on laptops.
The integrated Intel graphics act as the primary driver and handle most of the less intensive tasks without consuming much power, thus prolonging the battery duration.
For gaming, 3D rendering and other such graphics heavy work, the dedicated Nvidia GPU should be used.
In this tutorial, I will also show you how to switch between the two graphics cards on Ubuntu and possibly other Linux distributions.
There are two ways to do that. You can explicitly run an application with Nvidia instead of Intel or you can change the settings to always use Nvidia graphics. This is a lot easier if you are using Nvidia proprietary drivers instead of the open source
Check which graphics cards you have
For this reason, you must ensure you are using Nvidia graphics card.
To check your graphics card in Linux, use this command:
lspci | grep VGA
Here’s what it shows for my system:
lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] (rev 0c)
01:00.0 VGA compatible controller: NVIDIA Corporation GA104 [Geforce RTX 3070 Ti Laptop GPU] (rev a1)
As you can see in the output above, my laptop has Intel Iris Xe Graphics and Nvidia Geforce RTX 3070 Ti.
With that aside, let’s see about using Nvidia instead of integrated Intel video drivers.
Method 1: Running certain applications with Nvidia
Actually, Ubuntu provides a way to launch an application with the dedicated Nvidia graphics card.
In the launcher, you will notice a ‘Launch using Discrete Graphics Card’ option when you right click on an icon. This “discrete graphics card” is your dedicated graphics card, Nvidia in this case.
You can see this option for applications in GNOME Activities area as well.
Note that not every application started with this option will actually use Nvidia graphics card. I tested it and found that while Firefox started with the dedicated graphics driver, many other applications such as Video player, Inkscape etc did not.
nvidia-smi
command line tool that comes with proprietary Nvidia drivers. I’ll discuss it in the next section of this tutorial.To run an application with Nvidia drivers from the terminal, you can use:
DRI_PRIME=1 application_name
So, if you have to run Firefox with Nvidia, you can use:
DRI_PRIME=1 firefox
This DRI_PRIME
environment variable seems to work only with the open source Nouveau drivers of NVIDIA. If you are using the proprietary driver, you should use:
__GLX_VENDOR_LIBRARY_NAME=nvidia __NV_PRIME_RENDER_OFFLOAD=1 application_name
Method 2: Use Nvidia proprietary drivers and tools that come with it
Look for the ‘Additional Drivers’ tool in the GNOME Activities area:
You can also find it under the Additional Drivers tool in the Software & Updates tool.
In here, ensure that you are using the proprietary Nvidia drivers. Go for the highest version unless you have an older graphics card which is supported with the legacy driver (470 in the picture below).
You’ll have to restart your system if you change the graphics drivers.
In a few cases, you’ll be prompted to sign MOK. Just use a password and when you reboot your system and see the blue MOK screen, sign it with the password you used earlier.
Anyways, when you are back in your system, look for the tool called NVIDIA X Server:
In here, go to PRIME Profiles from the left sidebar and then you’ll see the options to change between the graphics drivers.
Performance mode means Nvidia will be the primary graphics driver running for all the applications.
On-Demand is the default behavior where Intel integrated driver is used all the time and Nvidia is used when specified (as we saw in method 1).
You can also make Nvidia the primary driver from the command line:
sudo prime-select nvidia
abhishek@itsfoss-tuxedo:~$ sudo prime-select nvidia
[sudo] password for abhishek:
Info: selecting the nvidia profile
Deleting /lib/modprobe.d/nvidia-runtimepm.conf
Updating the initramfs. Please wait for the operation to complete:
Done
Or, if you want to run an application with Nvidia proprietary drivers from the command line, use:
__GLX_VENDOR_LIBRARY_NAME=nvidia __NV_PRIME_RENDER_OFFLOAD=1 application_name
๐กBonus tip: Check graphics use per process
With the Nvidia proprietary drivers, you also get another handy CLI tool; nvidia-smi
.
Just run it like this:
nvidia-smi
And it will show the GPU usage statistics at a glance:
If you want to keep an eye on the GPU usage continuously like top command, you can combine it with the watch command like this:
watch -n1 nvidia-smi
And it will refresh the stats every second. use ctrl+c to stop the running program.
Conclusion
I was surprised to find the lack of CPU usage utility for the open source Nvidia Nouveau driver. There should be one, in my opinion.
The proprietary driver provides handy tools for switching between the graphics drivers and monitoring the GPU usage.
Which driver performs better depends entirely on you. I let you experiment and conclude on that.
๐จ๏ธ Still facing issues with the steps mentioned here? Let me know in the comments and I’ll try to help you out.