So recently I got the Radeon RX 580, and now working on debugging SE on AMD cards. Many bugs are fixed already, but some serious ones are still left (random crashes on a planet). I using some debugging tools from AMD to detect issues and performance problems, but sometimes these tools crashes together with SE (and with driver), so this work is not easy.
It is important to switch GPU time to time, to make sure I did not break something on NVidia while polishing code on AMD. To make life easy, I put RX 580 to the same PC where GeForce 1060 lives. This eliminates the need to swap GPU physically, just reconnect monitor cable on the back of PC. But I wanted to go further and find a way to choose the GPU for SE programmatically.
Windows virtualized driver system is okay with dual GPU setup, I was able to install NVidia and AMD drivers to with no problems. I have 2 displays (monitor and TV), and Windows works well, showing extended desktop even if displays are connected to different GPUs. But some games goes crazy with this setup. Some refuses to launch or launch on TV instead of monitor. HTC Vive games shows weird behaviour: loading the GPU to 100%, while in HMD I can see only the Steam VR "empty space" scene. As far as I know now, VR games tends to work only then HMD is connected to the same GPU where the primary display is connected. Also, OpenGL (and thus SE) does not have a way to programmatically choose the GPU where to start rendering (NVidia and AMD have some API for this, but it works only if you have dual GPU of the same vendor). As like VR, OpenGL games, including SE, uses the same GPU, where the primary display is connected.
So I found a way to switch GPU for SE by software way, not touching the computer physically. Currently my monitor is connected to Radeon, and TV is connected to GeForce, so SE launches on Radeon by default. But then I want to switch, I change the "primary display" in Windows screen resolution settings to TV, then SE launches on GeForce. Changing the primary display moves all icons and taskbar to TV, which is not convenient (TV is far from my table), but I use the DisplayFusion tool to duplicate the taskbar to both screens, so it is okay for tests (I am on Windows 7, which does not have double taskbar).
My i7-4930K CPU is still powerful enough
, and SE is certainly GPU-bound, so I am able to run two copies of SE on full speed simultaneously. To do this, I run one copy of SE (which is launches on Radeon), minimize it, change the primary display, and run the second copy (which is now launches on GeForce). Here is a screenshot of both desktops with two copies of SE rendering the same starting location. This location is pretty heavy, both GPUs are barely able to make 60 fps. Performance of one SE does not depend on the second one, it has the same ~60 fps no matter that I do, thanks to powerful CPU and parallel work of GPU drivers (and CPU is still at 50% load).
The left screen is GeForce GTX 1060, the right one is Radeon RX 580 with some factory overclocking (Povercolor RX 580 Red Devil), and it is slightly faster than 1060. Load/temperature graph window is MSI Afterburner, on-screen graphs in SE is Riva tuner overlay (it glitches on Radeon, not visible every frame, but it is there). GTX 1060 is slightly hotter than RX 580, but it has much lower TDP - only 120 W compared to 250 W of RX 580 (power graph is the lower one, unfortunately MSI Afterburner can display only GeForce and CPU there). Also Radeon's fans are louder than Geforce's, as usual.