StarCraft 2 uses wrong inferior GPU instead of HIGH PERFORMANCE

I have two GPUs on my computer:
An AMD RX 5700xt which is a fairly decent GPU for games and a Nvidia GTX 960 as a secondary GPU for more screens and RTX VOICE.

The problem:
Starcraft 2 is the only game as far as I can see (out of 40 games i have including Diablo 2) that keeps using the GTX 960 instead of the RX. I’ve tried everything so far. I’ve read bunch of blizzard articles, googled a lot , changed the settings on nvidia control to disable cuda for starcraft 2, I changed the graphics settings in windows with the new option and forced battlenet and starcraft both executables (the one inside “Starcraft 2/Versions” folder and the regular one a level above on program files to use HIGH PERFORMANCE which forces to use the RX GPU. Yet SC2 keeps ignoring those settings and forcing the use of the GTX 960. I can tell so for the reduced performance, the task manager also shows the RX inactive and the game has less fps and on top of that it says it using GTX 960 on the Menu Options. If there is any way you could help me , a command line to force the other GPU or some workaround I would be thankful. So far the only option is to disable the GTX 960 completely, only then Starcraft uses the RX but that affects all the other things I have going on. Again this is only happening to SC2 I haven’t had any issues with other games or programs. If anything a solution for this will set a precedent since there isn’t a real answer for this issue in the past.
Thanks a lot

Hey there,

So you have one monitor hooked up to the AMD card and another monitor hooked up to the Nvidia card?

Which monitor do you have set as the primary monitor in Windows? Is it the monitor hooked up to the Nvidia card? If so, try swapping the primary monitor to the one hooked up to the AMD card and then try launching the game again.

If that doesn’t work, post your latest Graphics log file from the Documents\Starcraft II\GameLogs folder and we can take a look at that.

*Edited post for visual improvement

No. My main monitor uses AMD. I tried switching main screen to GTX and back to AMD but problem persists. I actually have 6 monitors ^_^!. 4 (including the “main display”) connected to the AMD RX 5700xt and two side monitors connected to the GTX 960.

I do think you have a hint somewhere there because FULLSCREEN SC2 will always start using the (GTX) screen identified as #1 in windows , disregarding the actual main screen which is identified as Screen#3 (AMD).

I was reading the log it actually confirms what im saying. SC2 uses adapter 0 GTX… Also please notice SC2 is not installed on C drive idk if that makes any difference.

The following is the Graphics log Thanks for your help Jambrix

Blockquote
GFX 22:46:01.068 ====================================================================================================
GFX 22:46:01.068 StarCraft II (B83830)
GFX 22:46:01.068
GFX 22:46:01.068 Executable D:\Games\StarCraft II\Versions\Base83830\SC2_x64.exe
GFX 22:46:01.068 -sso=1 -launch -uid s2
GFX 22:46:01.068 Parent Executable \Device\HarddiskVolume8\Games\StarCraft II\Support64\SC2Switcher_x64.exe
GFX 22:46:01.068 Grandparent Executable \Device\HarddiskVolume6\Program Files (x86)\Battle.net\Battle.net.exe
GFX 22:46:01.068 LocalTime 2021-02-28 22:46:01.068
GFX 22:46:01.068 osori
GFX 22:46:01.068 DIVINE
GFX 22:46:01.068 <Exe.Architecture> x86_64
GFX 22:46:01.068 5.0.6.83830
GFX 22:46:01.068 B83830
GFX 22:46:01.068 branches/SC2.5.0.a
GFX 22:46:01.068 624636
GFX 22:46:01.068 <Locale.Assets> enUS
GFX 22:46:01.068 <Locale.Data> enUS
GFX 22:46:01.068 <Locale.Install> enUS
GFX 22:46:01.068 USA
GFX 22:46:01.068 2.24.1.7342
GFX 22:46:01.068 ====================================================================================================
GFX 22:46:01.067 DXGI: Available
GFX 22:46:01.304 Resource Cache Override Variable: 0MB
GFX 22:46:01.304 Resource Cache: 2048MB Win64 (49079MB Physical, 19449MB Process Virtual)
GFX 22:46:01.304 Resource Cache Sound: 204MB
GFX 22:46:01.304 Resource Cache Common: 1843MB
GFX 22:46:01.304 Resource Cache VRam: 0MB
GFX 22:46:01.304 Adapter [0]: AMD Radeon RX 5700 XT (VendorID 0x1002 DeviceID 0x731f)
GFX 22:46:01.304 Adapter [1]: NVIDIA GeForce GTX 960 (VendorID 0x10de DeviceID 0x1401)
GFX 22:46:01.304 Adapter [2]: NVIDIA GeForce GTX 960 (VendorID 0x10de DeviceID 0x1401)
GFX 22:46:01.305 Adapter [3]: AMD Radeon RX 5700 XT (VendorID 0x1002 DeviceID 0x731f)
GFX 22:46:01.305 Adapter [4]: AMD Radeon RX 5700 XT (VendorID 0x1002 DeviceID 0x731f)
GFX 22:46:01.305 Adapter [5]: AMD Radeon RX 5700 XT (VendorID 0x1002 DeviceID 0x731f)
GFX 22:46:01.305 Attempting CreateDevice on adapter [1] (VendorID 0x10de DeviceID 0x1401)
GFX 22:46:01.404 CreateDevice succeeded
GFX 22:46:01.405 Using adapter [1]
GFX 22:46:01.405 Floating point render targets supported.
GFX 22:46:01.408 DXGI Adapter Name: NVIDIA GeForce GTX 960
GFX 22:46:01.408 VRAM Detected: Dedicated [2007MB] Shared [24539MB] (DXGI)
GFX 22:46:01.408 VRAM Override Variables: Dedicated [0MB] Shared [0MB]
GFX 22:46:01.408 Initialized D3D9 GraphicsDevice: NVIDIA GeForce GTX 960 (Driver Version: 27.21.14.6140, VRAM: 2007MB, SVMEM: 24539MB).
GFX 22:46:01.409 Hardware Depth Sampling: Available
GFX 22:46:01.409 VRAM texture space: 1505MB
GFX 22:46:02.673 PerfNotifiers initialized
GFX 22:46:02.997 Lost D3D9 device
GFX 22:46:03.000
GFX 22:46:03.000 D3D9 Device Reset from unknown returned e_errorKindGfx(0)
GFX 22:46:28.629 Lost D3D9 device

Howdy StYliShGuY,

Have you tried forcing SC2 to use the AMD card?

  1. Select ‘Catalyst Control Center‘ from the context menu.
  2. From the list of panels on the left, select ‘Power‘.
  3. Under ‘Power’, select ‘Switchable application graphics settings‘.

You could also change which monitor is the primary monitor in Windows, setting one of the AMD monitors to #1.

Zenlaka thanks for your input. However, I can’t follow your steps. I think your process it not valid for my GPU as it no longer uses Catalyst Control Center, instead it uses the new “AMD Radeon Software”. I remember the first time I started using this GPU and I tried Catalyst it’s not compatible, in fact I had to restore windows because it crashed hard. AMD Radeon Software doesn’t have any context menu as I would like it to have. I did set up all SC2 executables and launchers to use High Perfomance via windows settings (more details below)

I also tried manually swapping the PCI#1 and #3. Since windows was taking screens 1,2 as GTX and 3,4,5,6 as RX… Now I have screens 1234 listed as RX and GTX has # 56… Yet SC2 keeps overriding all the configuration and keeps going for the GTX 960 first instead of the RX…
I tried uninstalling NVIDIA drivers. SC2 worked with AMD for a few minutes until windows just automatically loaded some drivers for the GTX960. After that game uses GTX…

Below I’m attaching 4 links of pictures

  1. https ibb. co /xqwKkWZ - Starcraft showing it uses GTX 960
  2. https ibb. co /qCMKZjM - AMD Radeon Software showing 4 of my displays, the selected “Display 1 using Displayport AMD Radeon RX 5700XT” is my main screen on W10.
  3. https ibb. co /dWqH8M5 - Picture of my windows configuration. … Here #1 ,#2,#3,#4 are AMD screens (#1 is main screen). #5,#6 are GTX (#5 is defaulted by SC2)
  4. https ibb. co /ZNyt8ZT - I’ve set everything in windows to use RX as high performance.

I’m starting to believe this is somehow “hard coded” on the game code as in "prioritize any NVIDIA GPU over AMD’s "
I don’t know up to what point it would be feasible for the developers to make a drop down to select which GPU or a parameter at launch to select adapter 0 or 1…
Another way to implement this would be to just not force anything within the game and let windows 10 decide.

Again, the only time it works with the RX is when I have the NVIDIA card disabled.

Here are the latest logs when game works with RX (GTX is disabled, SC has no choice):

GFX 13:36:29.579 ====================================================================================================
GFX 13:36:29.579 StarCraft II (B83830)
GFX 13:36:29.579
GFX 13:36:29.579 Executable D:\Games\StarCraft II\Versions\Base83830\SC2_x64.exe
GFX 13:36:29.579 -sso=1 -launch -uid s2
GFX 13:36:29.579 Parent Executable \Device\HarddiskVolume8\Games\StarCraft II\Support64\SC2Switcher_x64.exe
GFX 13:36:29.579 Grandparent Executable \Device\HarddiskVolume6\Program Files (x86)\Battle.net\Battle.net.exe
GFX 13:36:29.579 LocalTime 2021-03-01 13:36:29.579
GFX 13:36:29.579 osori
GFX 13:36:29.579 DIVINE
GFX 13:36:29.579 <Exe.Architecture> x86_64
GFX 13:36:29.579 5.0.6.83830
GFX 13:36:29.579 B83830
GFX 13:36:29.579 branches/SC2.5.0.a
GFX 13:36:29.579 624636
GFX 13:36:29.579 <Locale.Assets> enUS
GFX 13:36:29.579 <Locale.Data> enUS
GFX 13:36:29.579 <Locale.Install> enUS
GFX 13:36:29.579 USA
GFX 13:36:29.579 2.24.1.7342
GFX 13:36:29.579 ====================================================================================================
GFX 13:36:29.578 DXGI: Available
GFX 13:36:29.756 Resource Cache Override Variable: 0MB
GFX 13:36:29.756 Resource Cache: 2048MB Win64 (49079MB Physical, 33159MB Process Virtual)
GFX 13:36:29.756 Resource Cache Sound: 204MB
GFX 13:36:29.756 Resource Cache Common: 1843MB
GFX 13:36:29.756 Resource Cache VRam: 0MB
GFX 13:36:29.827 Selected display mode 1920x1080x0 with format D3DFMT_X8R8G8B8 and error delta 0
GFX 13:36:29.828 Adapter [0]: AMD Radeon RX 5700 XT (VendorID 0x1002 DeviceID 0x731f)
GFX 13:36:29.828 Adapter [1]: AMD Radeon RX 5700 XT (VendorID 0x1002 DeviceID 0x731f)
GFX 13:36:29.828 Adapter [2]: AMD Radeon RX 5700 XT (VendorID 0x1002 DeviceID 0x731f)
GFX 13:36:29.828 Adapter [3]: AMD Radeon RX 5700 XT (VendorID 0x1002 DeviceID 0x731f)
GFX 13:36:29.828 Attempting CreateDevice on adapter [0] (VendorID 0x1002 DeviceID 0x731f)
GFX 13:36:30.058 CreateDevice succeeded
GFX 13:36:30.058 Using adapter [0]
GFX 13:36:30.058 Floating point render targets supported.
GFX 13:36:30.063 DXGI Adapter Name: AMD Radeon RX 5700 XT
GFX 13:36:30.063 VRAM Detected: Dedicated [8152MB] Shared [24539MB] (DXGI)
GFX 13:36:30.063 VRAM Override Variables: Dedicated [0MB] Shared [0MB]
GFX 13:36:30.063 Initialized D3D9 GraphicsDevice: AMD Radeon RX 5700 XT (Driver Version: 27.20.14501.28009, VRAM: 8152MB, SVMEM: 24539MB).
GFX 13:36:30.113 Selected display mode 1920x1080x0 with format D3DFMT_X8R8G8B8 and error delta 0
GFX 13:36:30.113 Hardware Depth Sampling: Available
GFX 13:36:30.114 VRAM texture space: 2048MB
GFX 13:36:31.542 PerfNotifiers initialized
GFX 13:36:32.804 Selected display mode 1920x1080x0 with format D3DFMT_X8R8G8B8 and error delta 0
GFX 13:36:32.805 DirectX call failed with error code -2005530520
GFX 13:36:35.337 DirectX call m_device->TestCooperativeLevel() failed with error code -2005530520
GFX 13:36:45.498 DirectX call m_device->TestCooperativeLevel() failed with error code -2005530519
GFX 13:36:45.498 DirectX call failed with error code -2005530519
GFX 13:36:45.498 Lost D3D9 device
GFX 13:36:45.628
GFX 13:36:45.628 D3D9 Device Reset from ::OnRender returned e_errorKindGfx(0)
GFX 13:37:06.957 Lost D3D9 device

And Here is the code when both GPU are working (SC chooses NVIDIA):

GFX 13:41:47.245 ====================================================================================================
GFX 13:41:47.245 StarCraft II (B83830)
GFX 13:41:47.245
GFX 13:41:47.245 Executable D:\Games\StarCraft II\Versions\Base83830\SC2_x64.exe
GFX 13:41:47.245 -sso=1 -launch -uid s2
GFX 13:41:47.245 Parent Executable \Device\HarddiskVolume8\Games\StarCraft II\Support64\SC2Switcher_x64.exe
GFX 13:41:47.245 Grandparent Executable \Device\HarddiskVolume6\Program Files (x86)\Battle.net\Battle.net.exe
GFX 13:41:47.245 LocalTime 2021-03-01 13:41:47.245
GFX 13:41:47.245 osori
GFX 13:41:47.245 DIVINE
GFX 13:41:47.245 <Exe.Architecture> x86_64
GFX 13:41:47.245 5.0.6.83830
GFX 13:41:47.245 B83830
GFX 13:41:47.245 branches/SC2.5.0.a
GFX 13:41:47.245 624636
GFX 13:41:47.245 <Locale.Assets> enUS
GFX 13:41:47.245 <Locale.Data> enUS
GFX 13:41:47.245 <Locale.Install> enUS
GFX 13:41:47.245 USA
GFX 13:41:47.245 2.24.1.7342
GFX 13:41:47.245 ====================================================================================================
GFX 13:41:47.244 DXGI: Available
GFX 13:41:47.453 Resource Cache Override Variable: 0MB
GFX 13:41:47.453 Resource Cache: 2048MB Win64 (49079MB Physical, 28292MB Process Virtual)
GFX 13:41:47.453 Resource Cache Sound: 204MB
GFX 13:41:47.453 Resource Cache Common: 1843MB
GFX 13:41:47.453 Resource Cache VRam: 0MB
GFX 13:41:47.517 Selected display mode 1920x1080x0 with format D3DFMT_X8R8G8B8 and error delta 0
GFX 13:41:47.517 Adapter [0]: AMD Radeon RX 5700 XT (VendorID 0x1002 DeviceID 0x731f)
GFX 13:41:47.518 Adapter [1]: AMD Radeon RX 5700 XT (VendorID 0x1002 DeviceID 0x731f)
GFX 13:41:47.518 Adapter [2]: AMD Radeon RX 5700 XT (VendorID 0x1002 DeviceID 0x731f)
GFX 13:41:47.518 Adapter [3]: AMD Radeon RX 5700 XT (VendorID 0x1002 DeviceID 0x731f)
GFX 13:41:47.518 Adapter [4]: NVIDIA GeForce GTX 960 (VendorID 0x10de DeviceID 0x1401)
GFX 13:41:47.518 Adapter [5]: NVIDIA GeForce GTX 960 (VendorID 0x10de DeviceID 0x1401)
GFX 13:41:47.518 Attempting CreateDevice on adapter [4] (VendorID 0x10de DeviceID 0x1401)
GFX 13:41:47.605 CreateDevice succeeded
GFX 13:41:47.606 Using adapter [4]
GFX 13:41:47.606 Floating point render targets supported.
GFX 13:41:47.610 DXGI Adapter Name: NVIDIA GeForce GTX 960
GFX 13:41:47.610 VRAM Detected: Dedicated [2007MB] Shared [24539MB] (DXGI)
GFX 13:41:47.610 VRAM Override Variables: Dedicated [0MB] Shared [0MB]
GFX 13:41:47.610 Initialized D3D9 GraphicsDevice: NVIDIA GeForce GTX 960 (Driver Version: 26.21.14.3200, VRAM: 2007MB, SVMEM: 24539MB).
GFX 13:41:47.647 Selected display mode 1920x1080x0 with format D3DFMT_X8R8G8B8 and error delta 0
GFX 13:41:47.647 Hardware Depth Sampling: Available
GFX 13:41:47.648 VRAM texture space: 1505MB
GFX 13:41:48.678 PerfNotifiers initialized
GFX 13:41:48.996 Selected display mode 1920x1080x0 with format D3DFMT_X8R8G8B8 and error delta 0
GFX 13:41:48.996 Lost D3D9 device
GFX 13:41:49.049
GFX 13:41:49.049 D3D9 Device Reset from unknown returned e_errorKindGfx(0)
GFX 13:42:08.628 Lost D3D9 device

Thanks for the logs!

Definitely an odd one. It’s possible that it’s coded this way to prefer the Nvidia card if it detects both AMD and Nvidia cards. It’s also possible there’s just a configuration issue in Windows and it’s telling the game to launch on the Nvidia card if it’s available.

Your setup isn’t a very common one I would say. Most of the time when we see more than one GPU they’re both the same model/manufacturer. I know there are laptops out there that use an AMD CPU with AMD integrated graphics, and have a dedicated Nvidia card. So this may stem from that kind of setup where it would prefer the higher performing Nvidia card.

You could possibly try wiping both Nvidia and AMD drivers using Display Driver Uninstaller, then reinstall AMD drivers (set up the displays), and finally install Nvidia drivers. This may be a long shot, no guarantees it will work, but might be worth a try.

Hello, sorry for the late response but I have a similar configuration, in the main pciex slot I have an RX 6650 XT connected to a Display, and in the second pciex slot I have a GTX 1050 to use the NVENC codec and it is also connected to another Smaller screen, and since Starcraft 2 always starts on the GTX 1050 using the other screen, I tried turning off or removing the cable from the smaller screen and it always used the gtx 1050, so what I did was do a fresh reinstallation with the Latest drivers for each GPU using DDU, and then in Windows Configuration, Screen section in the section called ‘‘Multiple Screens’’ (the option extend screens was activated), I change it to ‘‘Show only on Screen X’’ where X It is the number of the screen that is connected to its main GPU, with this option the screen that is connected to the second GPU is deactivated and there when starting Starcraft 2 it already uses the main GPU, then when I stop playing SF2 I go back to m i configured before in Extend Screens mode, that’s the only solution, I’m on Windows 10 22H2

This is very useful for this type of problem, especially with integrated / discrete GPUs:

NVIDIA Support - Setting the Preferred Graphics Processor -> https://www.nvidia.com/content/Control-Panel-Help/vLatest/en-us/mergedProjects/nv3d/Setting_the_Preferred_Graphics_Processor.htm

I have been fighting this and can tell you I can force sc2 to open on asus 6900xt vs. nvidia 1070 (later replaced by 3060) by disabling extend monitors or the nvidia card. however when running other GPU intensive apps that run for a weeks time I cannot end or disable things. Need the choice in sc2 to choose what screen/graphics card to display on. Seems to always pick nvidia… Even when the nvidia card is on monitor 3-4 only and not the primary display adapter…

1 Like

GFX 23:27:02.630 ====================================================================================================
GFX 23:27:02.630 StarCraft II (B90136)
GFX 23:27:02.630
GFX 23:27:02.630 Executable C:\Program Files (x86)\StarCraft II\Versions\Base90136\SC2_x64.exe
GFX 23:27:02.630 -sso=1 -amd -launch -uid s2
GFX 23:27:02.630 Parent Executable \Device\HarddiskVolume3\Program Files (x86)\StarCraft II\Support64\SC2Switcher_x64.exe
GFX 23:27:02.630 Grandparent Executable \Device\HarddiskVolume3\Program Files (x86)\Battle.net\Battle.net.exe
GFX 23:27:02.630 LocalTime 2023-04-26 23:27:02.631
GFX 23:27:02.630 nephi
GFX 23:27:02.630 AT3-RYZEN5
GFX 23:27:02.630 <Exe.Architecture> x86_64
GFX 23:27:02.630 5.0.11.90136
GFX 23:27:02.630 B90136
GFX 23:27:02.630 branches/SC2.5.0.a
GFX 23:27:02.630 643567
GFX 23:27:02.630 <Locale.Assets> enUS
GFX 23:27:02.630 <Locale.Data> enUS
GFX 23:27:02.630 <Locale.Install> enUS
GFX 23:27:02.630 USA
GFX 23:27:02.630 2.27.7.8209
GFX 23:27:02.630 ====================================================================================================
GFX 23:27:02.406 DXGI: Available
GFX 23:27:02.976 Resource Cache Override Variable: 0MB
GFX 23:27:02.976 Resource Cache: 2048MB Win64 (65442MB Physical, 54619MB Process Virtual)
GFX 23:27:02.976 Resource Cache Sound: 204MB
GFX 23:27:02.976 Resource Cache Common: 1843MB
GFX 23:27:02.976 Resource Cache VRam: 0MB
GFX 23:27:02.977 Adapter [0]: AMD Radeon RX 6900 XT (VendorID 0x1002 DeviceID 0x73bf)
GFX 23:27:02.977 Adapter [1]: AMD Radeon RX 6900 XT (VendorID 0x1002 DeviceID 0x73bf)
GFX 23:27:02.977 Adapter [2]: NVIDIA GeForce RTX 3060 (VendorID 0x10de DeviceID 0x2504)
GFX 23:27:02.977 Adapter [3]: NVIDIA GeForce RTX 3060 (VendorID 0x10de DeviceID 0x2504)
GFX 23:27:02.977 Attempting CreateDevice on adapter [2] (VendorID 0x10de DeviceID 0x2504)
GFX 23:27:03.078 CreateDevice succeeded
GFX 23:27:03.079 Using adapter [2]
GFX 23:27:03.079 Floating point render targets supported.
GFX 23:27:03.084 DXGI Adapter Name: NVIDIA GeForce RTX 3060
GFX 23:27:03.084 VRAM Detected: Dedicated [12129MB] Shared [32721MB] (DXGI)
GFX 23:27:03.084 VRAM Override Variables: Dedicated [0MB] Shared [0MB]
GFX 23:27:03.084 Initialized D3D9 GraphicsDevice: NVIDIA GeForce RTX 3060 (Driver Version: 31.0.15.3161, VRAM: 12129MB, SVMEM: 32721MB).
GFX 23:27:03.085 Hardware Depth Sampling: Available
GFX 23:27:03.086 VRAM texture space: 2048MB
GFX 23:27:09.169 PerfNotifiers initialized
GFX 23:27:11.105 Lost D3D9 device
GFX 23:27:11.107
GFX 23:27:11.107 D3D9 Device Reset from unknown returned e_errorKindGfx(0)
GFX 23:29:35.995 Lost D3D9 device