Looking Glass host higher resolution/refresh rate

I’ve installed Looking Glass client in the Debian VM host and Looking Glass host in Windows VM guest.
I have a monitor with only one DisplayPort 1.4 supporting 3440x1440@175Hz resolution and two HDMI 2.0 ports supporting 3440x1440@100Hz resolution.
I’ve connected the AMD GPU used by Debian VM host to the monitor using DisplayPort 1.4 to have the maximum supporting resolution and I’ve connected the NVIDIA GPU used by Windows VM guest to the monitor using HDMI 2.0.
But with this setup I have only 100 Hz refresh rate in the Windows which is not optimal.

I’ve found that I can use virtual display drivers instead of connecting my monitor to the Windows GPU to support higher resolution/refresh rate:
https://github.com/ge9/IddSampleDriver
https://github.com/itsmikethetech/Virtual-Display-Driver
But it seems that this solution have some problems with performance so I want to avoid it.

Then I’ve found that I can use DP/HDMI dummy plug and reflash/override its EDID to support higher resolution/refresh rate.
I’ve bought a DisplayPort dummy plug and connected it to the Windows GPU but it was detected as if it was connected using DVI instead of DisplayPort.
I’ve tried to override the EDID using Custom Resolution Utility (CRU) and add higher resolution/refresh rate in the DisplayID 1.3 extension block with “Automatic PC” timing and 3440x1440@175Hz resolution:
https://www.monitortests.com/forum/thread-custom-resolution-utility-cru
But Windows couldn’t detect/use this higher resolution/refresh rate. I guess it was because the DVI limitation.
Then I’ve tried to read my monitor EDID and flash it into this DisplayPort dummy plug using edid-rw:
https://github.com/bulletmark/edid-rw
But my monitor DisplayPort has 384 byte EDID and for some reason I can’t write more than 256 bytes using this tool.
Maybe it’s a driver limitation in Linux the as in Windows:
https://www.monitortests.com/forum/Thread-EDID-DisplayID-Writer

Due to driver limitations, this program can only read and write up to 256 bytes. That is enough for an EDID with one extension block or one DisplayID block. Any data beyond 256 bytes will be preserved.

I’ve tried writing some general EDID with DisplayID extension block containing higher resolution/refresh rate but this higher resolution/refresh rate wasn’t detected in Windows.

Then I’ve bought an HDMI dummy plug and connected it to the Windows GPU and tried to configure it to support higher resolution/refresh rate with HDMI 2.1 support by setting maximum FRL rate to 48 Gbps and adding higher resolution/refresh rate in the DisplayID 1.3 extension block with “Automatic PC” timing and 3440x1440@175Hz resolution and this higher resolution/refresh rate was detected in WIndows but when I try to change to this resolution from the default 3440x1440@60Hz it keeps switching back to 3440x1440@60Hz.
I’ve tried to both write EDID to the HDMI dummy plug and override EDID in Windows using CRU with no success.

It seems that it’s possible to patch the GPU driver in Windows to support higher pixel clock:
https://www.monitortests.com/forum/Thread-NVIDIA-Pixel-Clock-Patcher
But I want to avoid it as well.

So I want to ask, how do other people get the higher resolution/refresh in the Looking Glass host to be the same as the monitor in the Looking Glass client in such cases?

1 Like

I’m gonna bump this because I’m also pretty curious how others have solved this. I’ve turned down some pretty good deals on otherwise great monitors due to only having one high refresh rate port, but wanting to use it on both my host and guest without a hardware kvm switch.

I have an RTX 3060 paired with a 34" WQHD monitor and I’m currently using the Virtual Display Driver from “itsmikethetech” on Github which seems to work nicely. I haven’t done a whole lot of performance testing yet but using Unigine Heaven in W11 I was getting around 65fps in 3440x1440@165Hz with Ultra settings. I disabled one of the options (forget which one) and averaged about 100fps while still on Ultra. If you haven’t found a solution yet, maybe give that virtual display driver a try. Just follow the instructions and change the Hz in the options.txt file to 175 Hz next to the 3440x1440 resolution.

Simple, just disable vsync in your game. LG will capture every frame rendered, it doesn’t care about refresh rates of the screen. The only time this wont work is if your title is not running exclusive full screen because then the windows compositor is well, compositing for your refresh rate.

This is just a renamed IddSampleDriver, it has a large performance impact to use it, we do not condone or recommend it’s usage.

There is a Rust version of virtual-display here, which seems to aim to implement HDR, WCG, and SDR, as well as a $2000 bounty task from Blur Busters here.
However, it appears that performance optimization has not been done at this stage.

There can’t be any optimisation done, period. The IDD by it’s design and nature, MUST take a capture of the desktop. Virtual-Display is not the solution, at best it’s a stop-gap workaround until we get the native LG IDD finished and IMO anyone throwing money at virtual-display or variations of this, is foolish.