10

I want Chrome to utilize iGPU (GT630 on i7-8700k) for video decoding, especially VP9 decoding on YouTube. My discrete GPU is GTX970 and it is not capable of decoding VP9. Currently, VP9 is software decoded on my system, putting load on CPU and occasionally skipping frames.

Both GPUs are detected by the system (Windows 10): GT630 as GPU0 and GTX970 as GPU1. I use 2 screens. I don't care where they need to be connected (970 or Motherboard) as long as Chrome uses iGPU and I can keep using Nvidia for gaming. One of the screens is 144Hz. The motherboard is ASUS ROG Hero.

I've tried different settings, but nothing seems to work as intended, and usually people look for a solution to the exactly opposite problem...

Update (command switches):

Running chrome with --gpu-active-vendor-id=0x8086 --gpu-active-device-id=0x3E92 or --gpu-vendor-id=0x8086 --gpu-device-id=0x3E92 or --gpu-testing-vendor-id=0x8086 --gpu-testing-device-id=0x3E92 results in:

GPU0 VENDOR = 0x10de, DEVICE= 0x13c2 ACTIVE
GPU1 VENDOR = 0x8086, DEVICE= 0x3e92
GL_RENDERER ANGLE (NVIDIA GeForce GTX 970 Direct3D11 vs_5_0 ps_5_0)`

Vivaldi browser seems to accept --gpu-testing-vendor-id=0x8086 --gpu-testing-device-id=0x3E92 which results in:

GPU0 VENDOR = 0x8086, DEVICE= 0x3e92 ACTIVE
GL_RENDERER ANGLE (NVIDIA GeForce GTX 970 Direct3D11 vs_5_0 ps_5_0)`

However it still uses Nvidia for renderer and doesn't utilize GT630 igfx.

The only method that works so far is disabling Nvidia card in Device Manager, launching Chrome, and re-enabling Nvidia card. When Chrome is launched without the discrete card present in the system, it runs with the following configuration and it's the only one that uses HW decoding from GT630:

GPU0 VENDOR = 0x8086, DEVICE= 0x3e92 ACTIVE
GPU1 VENDOR = 0x10de, DEVICE= 0x13c2
GL_RENDERER ANGLE (Intel(R) UHD Graphics 630 Direct3D11 vs_5_0 ps_5_0)

  • Another guy with the same issue here. – guest-vm May 6 '18 at 23:49
  • Would you mind trying this too? close chrome & restart it by chrome --gpu-active-vendor-id=0x8086 --gpu-active-device-id=0x3E92. go to about:gpu, is the active GPU different now? – guest-vm May 7 '18 at 0:04
  • I would try --gpu-vendor-id=0x8086 --gpu-device-id=0x3E92. – harrymc May 7 '18 at 18:36
  • 1
    @guest-vm Actually command switches work if screen connected to igfx is selected as the main display. – Gepard May 10 '18 at 8:44
  • 1
    When I reenable dGPU Chrome keeps using iGPU for video decode, which I can confirm in Task manager. – Gepard May 11 '18 at 20:36
15

I had this problem for a few months now and yesterday I found a solution to the problem:

Display settings -> Graphic settings -> Choose an app to set preference: Classic App -> Browse -> Firefox.exe (Chrome in your case) -> Firefox (Button that appears below the browse button) -> Options. I then chose Power Saving which makes my browser use the iGPU. High Performance would make the browser use my dedicated GPU.

Screenshot:enter image description here

| improve this answer | |
  • Sure, here you go: i5 6600k, R9 280x. Why does it matter? Are these options not showing up for you? – Unrul3r May 21 '18 at 19:27
  • I thought this new feature only works for laptop. With your input, look likes I'm wrong. – guest-vm May 22 '18 at 6:15
  • They are from the last Windows 10 April Update. – Unrul3r May 22 '18 at 12:21
  • 1
    awesome. I tried doing this a few years ago when I got my first 144hz and figured out you could disable the dGPU open Chrome then re-enable the dGPU but that was too much of a pain so I just would turn of acceleration and watch videos at a lower resolution. This solution has worked and chrome now uses GPU1 instead of GPU0 – Brian Sutherland Jan 26 '19 at 20:07
  • Thanks a lot, I've found that I've already set the preference for obs-studio but somehow I completely forget about it and spent a lot of time figuring out why the applications aren't using igpu. – Valen Aug 9 '19 at 21:13
1

If you wish to automate the task of disabling the Nvidia adapter, launching Chrome and re-enabling the adapter, you may use a batch script (.bat file) that you can put on the desktop as an icon.

Using the Microsoft command line tool Devcon.exe :

devcon.exe disable "NVIDIA GeForce GTX 970"
start "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
timeout 5
devcon.exe enable "NVIDIA GeForce GTX 970"

Check in Device Manager, section Display adapters, that the above name of the adapter is correct.

Other utilities that can be used instead of Devcon are DevManView and MultiMonitorTool.

| improve this answer | |
1

Spent a few hours tracking down a working solution to this with Windows 10 October 2018 Update. As of right now, using the directions provided by Unrul3r, I have been able to successfully enable hardware VP9 decoding in Chrome powered by the iGPU.

(Link to screenshot) Setup is as follows:

AMD Radeon R9-290 dGPU -> Connected via DisplayPort to 3840x2160 (4K) primary monitor.

Intel Core i5-8400 w/UHD 630 iGPU -> Connected via motherboard HDMI to 1920x1080 secondary monitor.

(Link to screenshot) This is what you want to see in chrome://gpu to verify everything is working:

Now, here's a quick walkthrough on how to get this working correctly.

Setup requirements

  • A primary and secondary monitor
  • At least one monitor must be physically connected to the iGPU outputs on the motherboard
  • Connect the primary monitor and any others to your dGPU

Step-by-step

  1. Enter BIOS and make sure the iGPU is set to "Enabled" (not "Auto"). Check to make sure your dGPU is still set as the first enabled. Save and restart.
  2. Boot to Windows. It should automatically download and install the Intel drivers for the iGPU since it is now enabled and in-use. Personally I grabbed the full driver package for my UHD 630 from Intel and installed it manually.
    1. Restart once iGPU drivers are installed.
    2. Once back in Windows, open Display Settings and adjust the multiple display settings and positioning if your setup has changed.
    3. Near the bottom of the Display Settings window, click on Graphics settings. Leave the dropdown on Classic app, then click Browse and find the executable for the program you want to force to the iGPU.
    4. Once added, click the new listing, select Options, then select Power Saving to always force the iGPU to handle the rendering for that app.

(Link to screenshot) What you should see in the Graphics settings window when finished:

And there we go! Testing with this 8K YouTube video of the Unigine Superposition benchmark now shows ~2-3% CPU usage and <1% dropped frames (totally smooth to the eye, no stuttering). In comparison without the hardware decoder, CPU usage would be capped out, and the result was an unwatchable mess with >50% of frames dropped.

| improve this answer | |
1

The simple solution is the one gave by Unrul3r, you just need to go to Graphic Settings in Windows 10 Control Panel and add Google Chrome or Firefox in Classic app mode, and press option button, select High performarce and that's it. Run some WebGL Benchmark and you will see the web browser using GPU-1 or the number of your discrete GPU. It works for any other application like Word, Excel, etc.

Another option to improve the performance in Google Chrome and specially the video playback (i.e Youtube), is to use the flags configuration page, to set the GPU Rendering to Enable, see the picture:

Google Chrome flags configuration

As you can see in the next image, my Discrete GPU es the GPU-1 AMD Radeon R7

GPU-1 as Radeon R7

Descripción en español: Activar el uso de la GPU discreta en Google Chrome (ATI Radeon), Activar la reproducción de vídeo por hardware en Youtube.

| improve this answer | |
0

There is no desktop counterpart to Nvidia Optimus (sans discontinued Lucid Virtu) which allows dynamic GPU switching. In order to use Intel IGP for hardware acceleration in Chrome, you must connect a monitor to Intel port and set it as main display in settings (while allowing additional displays with Nvidia).

However, if your goal is to simultaneously game on one screen with Nvidia and play youtube on another screen with Intel, you are out of luck, as games also run from the main display (now rendered by Intel).

If you only do one at a time with a single monitor, try connecting it to both Intel and Nvidia, and toggle main display and panel input source as a workaround.

| improve this answer | |
  • Disclaimer: This is an educated guess. I welcome any disputation backed up with proof, eg. Linux has no such limitation, as stated here. – guest-vm May 6 '18 at 1:04
  • Actually I found out I can force Chrome to use igfx as renderer if I temporarily disable Nvidia in Device manager. After re-enabling Chrome keeps using igfx, and at the same time I can utilize Nvidia for games. – Gepard May 10 '18 at 8:37

Not the answer you're looking for? Browse other questions tagged or ask your own question.