So after a long while I wanted to get back to CS:GO on my Thinkpad X1 Extreme with hybrid Intel/Nvidia GPU, and the performance was horrible!
Long story short: (re)install the Nvidia drivers to get the Nvidia card working.
First: Testing if the NVidia card is active
You can test if you are actually using the NVidia card by running this command:
~ glxinfo|egrep "OpenGL vendor|OpenGL renderer" OpenGL vendor string: Intel Open Source Technology Center OpenGL renderer string: Mesa DRI Intel(R) UHD Graphics 630 (Coffeelake 3x8 GT2) ~
You can see in the example above that Intel
means that you’re still using the Intel onboard graphics card for all your OpenGL stuff (including games like CS:GO)
And Intel GPU is not good for gaming.
Note: If it actually says NVIDIA
in your output then don’t continue with the solution below.
Solution: (Re-)Install the NVidia driver
Check if you have the driver currently installed:
dpkg -l |grep nvidia
Notice: If the package is installed on your system then the package name is preceded by ii
There should be driver package named nvidia-driver-xxx
installed. Where xxx
is the version number.
In my system it looks like this:
~ dpkg -l |grep nvidia ii libnvidia-cfg1-470:amd64 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA binary OpenGL/GLX configuration library ii libnvidia-common-470 470.57.02-1pop0~1627044105~21.04~f9815ed all Shared files used by the NVIDIA libraries rc libnvidia-compute-435:amd64 440.31-1pop1~1573485407~19.04~af08493 amd64 Transitional package for libnvidia-compute-440 rc libnvidia-compute-455:amd64 460.67-1pop0~1616430777~20.04~71e1ad1 amd64 Transitional package for libnvidia-compute-460 rc libnvidia-compute-460:amd64 465.31-1pop0~1623777959~20.10~a3ca7f3 amd64 Transitional package for libnvidia-compute-465 rc libnvidia-compute-465:amd64 470.57.02-1pop0~1627044105~20.10~f9815ed amd64 Transitional package for libnvidia-compute-470 ii libnvidia-compute-470:amd64 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA libcompute package ii libnvidia-compute-470:i386 470.57.02-1pop0~1627044105~21.04~f9815ed i386 NVIDIA libcompute package ii libnvidia-decode-470:amd64 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA Video Decoding runtime libraries ii libnvidia-decode-470:i386 470.57.02-1pop0~1627044105~21.04~f9815ed i386 NVIDIA Video Decoding runtime libraries ii libnvidia-encode-470:amd64 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVENC Video Encoding runtime library ii libnvidia-encode-470:i386 470.57.02-1pop0~1627044105~21.04~f9815ed i386 NVENC Video Encoding runtime library ii libnvidia-extra-470:amd64 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 Extra libraries for the NVIDIA driver ii libnvidia-fbc1-470:amd64 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA OpenGL-based Framebuffer Capture runtime library ii libnvidia-fbc1-470:i386 470.57.02-1pop0~1627044105~21.04~f9815ed i386 NVIDIA OpenGL-based Framebuffer Capture runtime library ii libnvidia-gl-440:i386 470.57.02-1pop0~1627044105~21.04~f9815ed i386 Transitional package for libnvidia-gl-470 ii libnvidia-gl-470:amd64 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD ii libnvidia-gl-470:i386 470.57.02-1pop0~1627044105~21.04~f9815ed i386 NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD ii libnvidia-ifr1-470:amd64 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA OpenGL-based Inband Frame Readback runtime library ii libnvidia-ifr1-470:i386 470.57.02-1pop0~1627044105~21.04~f9815ed i386 NVIDIA OpenGL-based Inband Frame Readback runtime library rc nvidia-compute-utils-460 460.73.01-1pop0~1620243205~20.10~9a91ef9 amd64 NVIDIA compute utilities ii nvidia-compute-utils-470 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA compute utilities rc nvidia-dkms-460 460.73.01-1pop0~1620243205~20.10~9a91ef9 amd64 NVIDIA DKMS package ii nvidia-dkms-470 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA DKMS package rc nvidia-driver-460 460.67-1pop0~1616430777~20.10~71e1ad1 amd64 NVIDIA driver metapackage ii nvidia-driver-470 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA driver metapackage rc nvidia-kernel-common-460 460.73.01-1pop0~1620243205~20.10~9a91ef9 amd64 Shared files used with the kernel module ii nvidia-kernel-common-470 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 Shared files used with the kernel module ii nvidia-kernel-source-470 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA kernel source package ii nvidia-settings 470.57.01-0ubuntu0.21.04.1 amd64 Tool for configuring the NVIDIA graphics driver ii nvidia-utils-470 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA driver support binaries ii screen-resolution-extra 0.18build2 all Extension for the nvidia-settings control panel ii xserver-xorg-video-nvidia-470 470.57.02-1pop0~1627044105~21.04~f9815ed amd64 NVIDIA binary Xorg driver ~
Re-Install the driver package by installing the latest nvidia-driver-xxx
package to your system with the following command:
sudo apt install nvidia-driver-xxx
Accept the additional packages and after the installation, reboot your system. You should now have the correct output when you run the glxinfo
command in the first paragraph.
glxinfo|egrep "OpenGL vendor|OpenGL renderer"
Example output:
~ glxinfo|egrep "OpenGL vendor|OpenGL renderer" OpenGL vendor string: NVIDIA Corporation OpenGL renderer string: NVIDIA GeForce GTX 1050 Ti with Max-Q Design/PCIe/SSE2 ~