[Feature] GPU Acceleration
Feature Description
Adding Virglrenderer and Virtio-gpu to Winboat should give some level of GPU Acceleration to Windows Apps.
Use-Case
It will make Windows Apps run faster that need GPU Acceleration.
Proposed Implementation
No response
Notice
- [x] I have checked the issue tracker and verified that this Feature Request has not been proposed before.
- [ ] I would like to help out implementing this feature
We're working on this, but it's a super hard and long journey to get there, since we'd need to implement a Windows kernel-mode driver and heavily modify the Mesa VirtIO Vulkan ICD to add support for this. It's possible, but it is at a minimum months and months away.
Basically the idea from our internal discussions is the following:
Windows:
Windows works with DirectX, DX already has translation layers, namely VKD3D for DX12 and DXVK for DX11, the rest Windows can deal with internally. We can translate DX code into Vulkan with existing technologies, eliminating the need to reverse engineer DX altogether.
Vulkan can be used in Windows and you can easily supply your own ICD/UMD (User Mode Driver) for applications. It's essentially a DLL and a JSON file describing it.
VirtIO
Now, a VirtIO GPU device is capable of proxying Vulkan using Venus using VirGLRenderer. Google already does this for their Android emulators and ChromeOS, they made Venus as far as I know.
Linux & Mesa
Linux implements the VirtIO GPU device KMD, while Mesa implements the Vulkan ICD/UMD.
Conclusion
We'd need to implement our own KMD in Windows, and perhaps use viogpu as a base and the Linux driver as inspiration. We can hopefully borrow most of the UMD code from Mesa and compile it for Windows with changes.
I don't know how useful this would be in this context, or how open you are to something like this. But I know of a few projects where donations were collected to hire external programmers to implement such essential and crucial points quickly and professionally. (In case the capacity of contributors here is an obstacle.)
For me - and certainly many others - GPU acceleration would be THE decisive step toward finally being able to do without Windows as the primary operating system or dual boot.
For something like this if you were to contract devs, you'd need a bare minimum of €50,000 - 100,000, since this is a very specific field of expertise while also being excruciatingly hard. I think very few open source projects raise anything even remotely close to that ballpark.
I'm not sure if there's anyone would help us raise that kind of money, and we don't really have a company structure to bear that sort of burden anyway. Still, I wouldn't mind having that opportunity so shoot us a mail if you have experience with this sort of thing.
I'm not very much of a low-level developer (especially not graphics), @Levev is closer to that but even for him all these things are brand new, so we're still in the early stages of trying to figure out how to best make this work, learning as we go. I can't really make any promises, because it really is hard stuff.
So yeah, we need expertise, OSS devs, or someone who can manage and raise the funds to contract specialized folks to speed this up.
This feature is really needed, without proper GPU acceleration it renders a lot of the apps we need Windows for useless or difficult to use, is there any way to implement SR-IOV, If we have dual GPU, iGPU and a dGPU we can pass through the iGPU?
Some updates: https://github.com/tenclass/mvisor-win-vgpu-driver/issues/29#issuecomment-3429880845
Seems awesome! Will this be added as an experimental feature in the near future or are you gonna wait for stability?
Some updates: tenclass/mvisor-win-vgpu-driver#29 (comment)
This is very exciting. I would love to be able to do all my design work in linux.
would it be possible to collaborate with related projects to work on this? I would imagine Red Hat would appreciate the work and would assist if it can help with running Windows in KVM. I know that SR-IOV in on the way but it might take a very long time to be available.
SR-IOV is already working on a bunch of modern intel iGPUs and dGPUs. Maybe we can just leverage the power of vGPU to provide acceleration?