I’m really excited to see this progress. Awesome work!
Would it be possible to tell Windows to dynamically change it’s resolution based on the size of the Window?
Something like this: https://youtu.be/AxqvE4CWrK8?t=3m4s
I’ve seen the video with Wendell and I got some questions, if you don’t mind…
Looks like you’re using Spice (or maybe you hacked Spice to use it). Will this work across a LAN?
Since you’re copying frames across memory region, does this opens the option to run few VM’s on a single GPU? (I’m pretty sure the answer is No, but one can always hope…)
Can other operations work on the same GPU that runs the guest VM? like using it’s GPU to compress/decompress those frames so it can work reliably on network?
Thanks and keep up the good work
Spice is being used simply for keyboard and mouse input, I wrote my own light weight C client from scratch for this as the spice libraries are not really usable in their existing state in external projects. It is optional if you wan’t to use Spice if you would rather pass the VM a physical KB & Mouse directly.
No, each VM needs dedicated access to the GPU, this is a physical hardware limitation. It would be nice though.
Yes, compression in the guest in VGA hardware is completely possible, but it introduces latency and quality loss, which is what this project is attempting to avoid. At a later date we can look at adding this as I know there at current the other options to do this (Steam InHouse Streaming) is all game targetted and not general desktop.
At this point in time, no.
The video card has no concept of VM and wants to drive a physical monitor, the only way to do this would be to convince the video card that the monitor attached can do anything. For now this is outside the scope of the project, but it is certainly not off the table, I believe there is a way to make this work with nVidia but no idea for VEGA until I can play with the hardware.
There are times when I do cringe cringe need to debug some JS in IE, and I have to suffer painfully slow services such as BrowserStack — yes, this is a rather boring use case, but for devs it certainly would be something. Imagine you need to administer some Citrix Xen boxes and need to use their windows only client… now you can (headless!)…
Oh… and decent gaming too I imagine (when the boss isn’t looking…)
One of my primary use cases for VMs
My secondary use case, I can already confirm that major online titles like PUBG and BF3, BF4, BF1 and TitanFall all work perfectly under this setup. The capture method doesn’t hook or inject into any of the applications as such it doesn’t risk triggering any anti-cheat measures.
Why not simulate the resize request to the VM/GPU as a monitor disconnect/reconnect w/fake EDID data for a resolution >= resized window?
Do the drivers work for every graphics card or do new drivers have to be made for each card to work?
In time, at current this is a low priority .
Also remember that the monitor is not a virtual device, you can’t exactly simulate a reconnect, there will need to be some vendor specific trickery here to achieve this. It is possible and I have a solution for nVidia at this point, but as stated above, this is low priority at current.
The driver is not related to the video card at all, it is simply a way of mapping memory between the guest and the host. I have been working with RedHat to have this included into the official VirtIO driver package. The source has been accepted upstream, we are just waiting for an official signed build now.
For now I am signing a test driver using my personal driver signing certificate, which is one of the reasons we can’t just release this yet.
hey so this is insanely awesome, I just watched the video wendell made and had an idea that might work for the needing a monitor attached situation. Not sure if it’s been brought up yet, but you can get “dummy plugs” for running on headless units:
not sure if anyone’s thought about this, but it could be really useful if you need to trick the system into thinking there’s a monitor attached in order to send the display to the buffer without needing an actual monitor
havent tested this but I remember coming across these a while back when i was working on my 4k stream/recording setup. hope it helps!
Yes, these devices are an option, the problem is though that they usually only contain the EDID information for a single resolution, or a set of limited resolutions.
well, i have another solution, but it’s not cheap. I own one of these:
with it you can clone your monitor’s edid to the device
ie hdmi out on gpu->hdfury (with cloned id from monitor)->hdfury out to dummy
i havent tested it with a dummy plug but i can snag the plug and give an update. with the price im not sure if itd be worth though
also the edid clone software is windows only. womp womp
This is some amazing stuff. Can’t wait to see how it goes. Keep being awesome!
Was thinking about a name for it, ill make a list here for any of my bad ideas
- internal Mirror
- LSFB (Locally Shared FrameBuffer)
- DWARF - Dmw Writting Against Reflected Framebuffer
Had to sign up to express my interest in this, good luck!
Next level stuff for vfio. Incredible. I’ll be heading straight out to build a Ryzen-based vfio rig as soon as this drops.
#2 Porthole sounds good. It reminds me of the game Portal
Porthole sounds good, other ideas i had or remembered
- Looking Glass
then it should be super easy to capture the output of the guest machine with OBS on the the host ?
or maybe even directly dumping it to a file for processing later
I have a threadripper and dual vega 64 here so i am looking forward to using that hopefully soon
i will be able to invest in one giant screen and have windows in a window… that will be so much better and more usable…