Simple Display Emulator with an HDMI-VGA Adapter

Display Emulator with an HDMI-VGA adapter

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.

JeGX's devbox: GeForce GTX 1070 + Radeon R9 290X

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

the HDMI-VGA adapter
HDMI-VGA adapter
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
100 ohms resistors

120 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:

Dummy VGA electronic schema
Dummy HDMI-VGA dongle with three 120 ohms resistors

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.

The HDMi-VGA dongle connected to the graphics card

A quick test with GPU Shark shows us both cards:

GeForce GTX 1070 + Radeon R9 290X

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

GeForce GTX 1070 + Radeon R9 290X (disabled)

AMD Crimson graphics driver with no dongle:

AMD Crimson with disabled graphics card

9 thoughts on “Simple Display Emulator with an HDMI-VGA Adapter”

  1. MF

    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?

    1. MrDeprecated

      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

  2. MF

    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.

    1. MrDeprecated

      “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 =)

  3. ramg

    i want to try this but when i buy resistors they asked me the wattage. pls help.

    1. JeGX Post Author

      You can buy 1/4W (0.25W) or 1/2W (0.5W) resistors. 0.25-watt resistors are fine for this use.

    1. Stefan

      You might cause a short circuit that can destroy hardware.
      So let it be done by s.o. who knows what he is doing.

  4. hlide fremen

    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.

Comments are closed.