
Several years ago, I wrote articles about a dummy VGA dongle based on a DVI-VGA adapter (see HERE and HERE). Let’s see if this old trick is still valid today with an HDMI-VGA adapter.
The main goal of this dummy VGA/HDMI dongle is to fool Windows (or Linux or macOS) by simulating a ghost monitor that would be plugged on the HDMI port. To be accurate, this dummy dongle will not simulate a real HDMI monitor but rather a VGA monitor connected to the HDMI port via an HDMI to VGA adapter. When the OS thinks a monitor is attached to the graphics card, it enables the GPU.
I currently need this dummy HDMI dongle because I added a second graphics card in my devbox, an MSI Radeon R9 290X. A monitor is connected on the first card (an EVGA GeForce GTX 1070 FTW) and I don’t want to connect a monitor on the Radeon. The Radeon is used to test my Vulkan code. This is handy because I can now develop and quickly test Vulkan on both GeForce and Radeon GPUs.

To build this simple HDMI display emulator, you need an HDMI-VGA adapter and three resistors.
the HDMI-VGA adapter


I successfully tested the dummy monitor with two sets of resistors: three 100 ohms and three 120 ohms. I selected the 120 ohms resistances in order to draw less current.
100 ohms resistors

120 ohms resistors
To concretely build the display emulator, just connect the three resistors (120 ohms in my case) on the VGA side of the adapter following this schema:


Now just plug this fake display dongle on the HDMI port of the second graphics card, reboot you PC and the second graphics card should be properly enabled on Windows.

A quick test with GPU Shark shows us both cards:

Here is a screenshot of GPU Shark without the display emulator dongle:

AMD Crimson graphics driver with no dongle:

Is there a way to have OpenGL (not OpenCL) run on the “dummy” graphics card but with the display still redirected to the monitor connected to the master graphics card?
I don’t think so, because you gonna have to find a way to redirect the information which graphics card B has to graphics card A. Assuming that graphics card A has monitor attached to it. This will involve may be a lot of driver and OS wizardry/trickery just to get it to work?
But again, I might be wrong xP
Correct, but this is what Windows does when you have 2 graphics cards, 2 monitors and with *each* graphics card connected to a monitor.
Windows has the concept of primary monitor that you define in the display properties.
From there, the OS looks at the graphics card this monitor is connected to. This graphics card will handle OpenGL. It will also dynamically send the frame of the second monitor to the second graphics card for display. Basically, the first graphics card has an internal FBO which size is the display size of the monitor connected to the second graphics card.
The FBO contents are then blitted over to the second graphics card in realtime.
On my computer, I have my primary monitor set to my GeForce GTX 980, and my second monitor is connected to my Intel Skylake adapter. So the Skylake adapter receives its display contents from the GeForce in realtime.
And I can change the primary monitor if I want to test my OpenGL programs on Skylake. It’s that simple.
Here, your scenario is different, unfortunately.
There is no way to tell Windows OpenGL should NOT be handled by the graphics card connected to the primary monitor.
“There is no way to tell Windows OpenGL should NOT be handled by the graphics card connected to the primary monitor.”
Yep, exactly what I was thinking =)
i want to try this but when i buy resistors they asked me the wattage. pls help.
You can buy 1/4W (0.25W) or 1/2W (0.5W) resistors. 0.25-watt resistors are fine for this use.
No way is this trick gonna work?
What if I put the pin in wrong hole with wrong resistors.
You might cause a short circuit that can destroy hardware.
So let it be done by s.o. who knows what he is doing.
So, if I understand well, this trick allows a second GC to be used only with OpenCL or Vulkan because those API can let us select which device to compute with, right? This trick is in no way a solution to make OpenGL using the second GC, right? If I’m not mistaken, you need to set the primary screen on the monitor plugged on the right GC to run OpenGL upon it – something not confortable to deal with.