How do multiple GPUs work in Windows? (not SLI or Crossfire)

I have a Vega 64 and an RTX 2080 installed, with one monitor plugged in to each.
If I run a game fullscreen and the game gives me options for deciding which monitor or display to fullscreen it on, it usually requires a restart to jump between video cards, but if I run the game in borderless window or windowed mode I can move it freely between monitors no problem (so it’s using one of the GPUs to render the image, and doing a looking-glass-like thing for moving the pixels across the GPUs?)
Is there a way to set which of the graphics cards is the ‘default’ for windowed applications?
In particular I’m having problems running the Unreal Engine 4 editor in DirectX 12 mode because of a GPU reset bug that I think is related to this somehow, so I’d love to see if theres a way to change or at least see which GPU is being used by what app.

By chance do you have an Intel CPU that has built in graphics as well?

nada. Ryzen 2700x…

Typically you can select either one or both of the GPUs for applications that are GPU aware.

In applications like miners, blender, etc. that use them for compute you can maybe pick both of them for calculations.

Multi-GPU and SLI/Crossfire are two different things.

Multi-GPU just means you have two independent GPUs available. SLI/Crossfire are proprietary techniques for using both for real time rasterisation purposes.

Unless an application allows you to specify, i believe the “default” GPU used for rendering is the one plugged into your monitor.

that’s just the problem, you see :wink:
I have one monitor plugged in to the RTX 2080, and one monitor plugged in to the RX Vega 64

I am pretty sure that you are experiencing an Windows “feature”. The compositor is probably handling the GPU offloading.

What version of Windows? Not that I will be anymore helpful, but the information is probably important. I don’t use MS Windows outside of at work.

I am running two monitors, and have one GPU per monitor.
Under certain conditions, windows decides it now is time to let each GPU work instead of primary GPU doing work and copying the frame buffer over.