Google Chrome not using the nVidia GPU anymore

Hello! I noticed that recently something bad happened to my system. My system setup used to run on the Intel GPU, offloading some applications to the nVidia GPU. To do this, I run Google Chrome using this command:

__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia /usr/bin/google-chrome-stable %U

It seems that recently, something happened (maybe some update?) and Chrome is no more able to use the nVidia GPU, and falls back to the CPU:

Graphics Feature Status
Canvas: Software only, hardware acceleration unavailable
Compositing: Software only. Hardware acceleration disabled
Multiple Raster Threads: Enabled
Out-of-process Rasterization: Disabled
OpenGL: Disabled
Hardware Protected Video Decode: Disabled
Rasterization: Software only. Hardware acceleration disabled
Skia Renderer: Enabled
Video Decode: Software only. Hardware acceleration disabled
Vulkan: Disabled
WebGL: Software only, hardware acceleration unavailable
WebGL2: Software only, hardware acceleration unavailable

I see these errors from Chrome:

[1596:1596:1025/105602.106783:WARNING:angle_platform_impl.cc(48)] : checkLinkStatus(985): Program link or binary loading failed: Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.
[1596:1596:1025/105602.106889:ERROR:shared_context_state.cc(74)] : Skia shader compilation error ------------------------ Errors: Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.
[1596:1596:1025/105602.125545:WARNING:angle_platform_impl.cc(48)] : checkLinkStatus(985): Program link or binary loading failed: Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.
[1596:1596:1025/105602.125685:ERROR:shared_context_state.cc(74)] : Skia shader compilation error ------------------------ Errors: Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.
GpuProcessHost: The GPU process crashed!
[1780:1780:1025/105603.207074:WARNING:angle_platform_impl.cc(48)] : checkLinkStatus(985): Program link or binary loading failed: Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.
[1780:1780:1025/105603.207184:ERROR:shared_context_state.cc(74)] : Skia shader compilation error ------------------------ Errors: Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.
[1780:1780:1025/105603.215403:WARNING:angle_platform_impl.cc(48)] : checkLinkStatus(985): Program link or binary loading failed: Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.
[1780:1780:1025/105603.215492:ERROR:shared_context_state.cc(74)] : Skia shader compilation error ------------------------ Errors: Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.
GpuProcessHost: The GPU process crashed!
[1859:1859:1025/105604.052314:WARNING:angle_platform_impl.cc(48)] : checkLinkStatus(985): Program link or binary loading failed: Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.
[1859:1859:1025/105604.052430:ERROR:shared_context_state.cc(74)] : Skia shader compilation error ------------------------ Errors: Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.
[1859:1859:1025/105604.067515:WARNING:angle_platform_impl.cc(48)] : checkLinkStatus(985): Program link or binary loading failed: Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.
[1859:1859:1025/105604.077999:ERROR:shared_context_state.cc(74)] : Skia shader compilation error ------------------------ Errors: Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.
GpuProcessHost: The GPU process crashed!

My understanding is that this is a problem specific to Chrome, cause glxgears seems to run on the nVidia GPU properly when the env variables are set.

I tried to downgrade to older kernel and nVidia proprietary drivers, but nothing fixed the problem. I suspect there is something wrong in my system rather than in Chrome or in the nVidia drivers, cause I don’t see a reason why shaders should not compile properly. At the moment I see I have drivers version 455.28. Anyone with a similar setup who can confirm if this is an issue only for me? Any idea what I could do to fix this?
Thanks!

Warning: As of October 2020, the NVIDIA driver does not support the Linux kernel 5.9. - NVIDIA - ArchWiki

Maybe it is related to this - as kernel developers has stated a backport of the patchset blocking modules when they modules claim they are GPL but in fact they are not.

You’re right, but I tried to downgrade kernel to version 5.8, and I’m still getting the same errors:

[3928:3928:1025/112800.729360:ERROR:shared_context_state.cc(74)] Skia shader compilation error
------------------------

Errors:
Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.

[3928:3928:1025/112800.744013:ERROR:shared_context_state.cc(74)] Skia shader compilation error
------------------------

Errors:
Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.

[3950:1:1025/112801.417281:ERROR:command_buffer_proxy_impl.cc(122)] ContextResult::kTransientFailure: Failed to send GpuChannelMsg_CreateCommandBuffer.
[4094:4094:1025/112801.769693:ERROR:shared_context_state.cc(74)] Skia shader compilation error
------------------------

Errors:
Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.

[4094:4094:1025/112801.779372:ERROR:shared_context_state.cc(74)] Skia shader compilation error
------------------------

Errors:
Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.

[4169:4169:1025/112802.621792:ERROR:shared_context_state.cc(74)] Skia shader compilation error
------------------------

Errors:
Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.

[4169:4169:1025/112802.630335:ERROR:shared_context_state.cc(74)] Skia shader compilation error
------------------------

Errors:
Program binary could not be loaded. Binary is not compatible with current driver/hardware combination. Driver build date Sep 30 2020. Please check build information of source that generated the binary.

[3983:7:1025/112803.257984:ERROR:command_buffer_proxy_impl.cc(122)] ContextResult::kTransientFailure: Failed to send GpuChannelMsg_CreateCommandBuffer.
[4048:1:1025/112809.033972:ERROR:command_buffer_proxy_impl.cc(122)] ContextResult::kTransientFailure: Failed to send GpuChannelMsg_CreateCommandBuffer.

Shouldn’t a downgrade to 5.8 fix the issue?
Thanks.

What do you mean by downgrade the kernel from 5.9 to 5.8 ?
Both kernels can reside and you chose one from Grub menu. Make sure your system is updated and you have the modules installed.
What chrome://flags are you using?

I mean that now I have:

uname -a
Linux luca-precision-5520 5.8.16-2-MANJARO #1 SMP PREEMPT Mon Oct 19 11:33:03 UTC 2020 x86_64 GNU/Linux

I removed kernel 5.9 completely from KDE settings. Also, I reinstalled nVidia proprietary drivers, to be sure modules for 5.8 were properly installed.

I did not change any flag. However, I also reset all and restarted Chrome. Same error appears.

You have to enable this:

#enable-gpu-rasterization
#enable-oop-rasterization
#enable-accelerated-video-decode
#enable-zero-copy
#enable-vulkan

So you will see this in chrome://gpu

Graphics Feature Status
Canvas: Hardware accelerated
Compositing: Hardware accelerated
Multiple Raster Threads: Enabled
Out-of-process Rasterization: Hardware accelerated
OpenGL: Enabled
Hardware Protected Video Decode: Hardware accelerated
Rasterization: Hardware accelerated on all pages
Skia Renderer: Enabled
Video Decode: Hardware accelerated
Vulkan: Enabled
WebGL: Hardware accelerated
WebGL2: Hardware accelerated

And youtube videos should report using VpxVideoDecoder in chrome://media-internals/

I enabled the flags you listed, but nothing changed. This is what I get:

* [14818:14818:1025/121304.686393:FATAL:vulkan_swap_chain.cc(223)] : vkCreateSwapchainKHR() failed: -3
* GpuProcessHost: The GPU process crashed!

I then disabled Vulkan, but I’m back to the previous error.
I also see this in chrome://gpu:

* Gpu compositing has been disabled, either via blocklist, about:flags or the command line. The browser will fall back to software compositing and hardware acceleration will be unavailable.
*Disabled Features: gpu_compositing*

So I also ignored the blacklist, but nothing changed.

I also see below this section:

### Graphics Feature Status for Hardware GPU

* Canvas: Hardware accelerated
* Compositing: Software only. Hardware acceleration disabled
* Multiple Raster Threads: Enabled
* Out-of-process Rasterization: Hardware accelerated
* OpenGL: Enabled
* Hardware Protected Video Decode: Hardware accelerated
* Rasterization: Hardware accelerated on all pages
* Skia Renderer: Enabled
* Video Decode: Hardware accelerated
* Vulkan: Disabled
* WebGL: Hardware accelerated but at reduced performance
* WebGL2: Hardware accelerated but at reduced performance

not sure what the difference is from this, at the top:

### Graphics Feature Status

* Canvas: Software only, hardware acceleration unavailable
* Compositing: Software only. Hardware acceleration disabled
* Multiple Raster Threads: Enabled
* Out-of-process Rasterization: Disabled
* OpenGL: Disabled
* Hardware Protected Video Decode: Disabled
* Rasterization: Software only. Hardware acceleration disabled
* Skia Renderer: Enabled
* Video Decode: Software only. Hardware acceleration disabled
* Vulkan: Disabled
* WebGL: Software only, hardware acceleration unavailable
* WebGL2: Software only, hardware acceleration unavailable

Thanks.

Hardware acceleration has never worked in Google Chrome, use Chromium.

Do you have reference about this? I checked when I setup this the first time and it seemed to work as expected.
By the way, I already tried and Chromiun is now not working either.

It looks like it does, but the flags do nothing.

See Chromium: Hardware video acceleration

I guess you are confusing graphics hardware acceleration and accelerated video decoding. Video decoding is not available and never was. My question only relates to graphics, which has always been working and currently works for me on Intel HD. Question is related to graphics video acceleration on nVidia when running in hybrid environment.

My
~/.config/chromium-flags.conf
looks like this and vaapi is working fine:

--ignore-gpu-blocklist
--enable-gpu-rasterization
--enable-oop-rasterization
--disable-gpu-driver-bug-workarounds
--enable-accelerated-video-decode
--use-gl=desktop
--enable-zero-copy
# --enable-vulkan
# --enable-native-gpu-memory-buffers

I don’t kave vulkan support, 390xxx-bumblebee here. It’s an old fermi card.

Btw: this should work in chrome too, but the config-file should be named
~/.config/chrome-flags.conf

Try with another Chromium-based browser like Vivaldi, Opera, Brave, Yandex, you name it and see if it’s there. Also where’s your mhwd -li?

Maybe your GPU is unsupported with the latest Chromium base. What’s your inxi -GSazy?

When posting chrome://gpu post the whole thing not 1 paragraph.

YES, this configuration is working. Thank you for your kind help.
Video decoding does not seem to be accelerated, even though Chrome reports it as enabled.

Interestingly, what is making a difference is --use-gl=desktop, which is interesting cause I noticed Chrome was trying OpenGL ES instead, which seemed weird in fact. I’m asking myself if this could be a bug in Chrome somehow, it may explain why downgrading kernel version and nVidia driver version is not fixing it.

I asked for info about this in Chromium groups, maybe they can explain it.

Are you sure about that and it’s not --ignore-gpu-blocklist? Anyway since it is solved for you you may mark the “solution”.

It’s documented here .

Yes, I confirm that omitting --ignore-gpu-blocklist works properly. Removing --use-gl=desktop shows the described behavior.

It’s documented here .

What is documented? My understanding is that that chapter refers to accelerated video decoding. It is interesting, but it is not the topic here.

Are you sure about that?

That’s because you’re using Chromium with the VAAPI patch. @luc4 is using Google Chrome which does not have that.

No point, nothing else has the VAAPI patch.

I think he speaks about this

and this:

https://wiki.archlinux.org/index.php/Chromium#Force_GPU_acceleration

,which @bogdancovaciu addressed in a sense, but that’s for Chromium, I’m pretty sure that the rest of the browsers with a GUI on top of it (the aforementioned) all have hardware acceleration enabled from out of the box.

But then again withour proper info and since he found the solution I’m out of this :slight_smile: (I don’t even use Google Chrome :wink:)