utmapp / UTM

Virtual machines for iOS and macOS
https://getutm.app
Apache License 2.0
26.79k stars 1.34k forks source link

Windows 3D acceleration possible with Wine3d? #3323

Open Rastafabisch opened 2 years ago

Rastafabisch commented 2 years ago

Hello community and developers,

I just came across a video which demonstrates 3D acceleration being available for windows on macOS qemu. Though it requires several additional resources and backends and currently seems to be limited to DirectX9 (just like virtualbox) and x86 (-64) virtualised Windows OS, though as all required libraries are open source I assume it can be compiled for arm VMs as well. Leveraging newer libraries it could even be possible to achieve DX11 feature level using Metal -> MoltenVK -> Vulkan -> DirectX11. The linked video provides some further details regarding the used libraries.

Here you’ll find the demo-video, and some additional resources.

Best, Rastafabi

brunocastello commented 2 years ago

I have a compiled version, but this is not true 3D acceleration inside a guest, only sort of a method for API passthrough. Unlike the linux implementation, which is a true Virgl 3D acceleration implementation, since even the desktop is benefitting from it.

This is only a patch for Glide and MESA passthrough, only useful for old games from 90's decade. What it does is, patches QEMU to allow for the wrappers inside a guest to "translate" Glide and OpenGL calls to the host machine. The games need to have stubs (DLLs) next to their executables for it to be recognized and passed. It uses OpenGlide for Glide passthrough and WineD3D for MESA passthrough. Also requires you have Xquartz installed for X11, because the patch was built primarily for Linux and the developer did not want or does not have the knowledge on how to do it natively for macOS, hence why the X11 requirement. UPDATE: The developer made it work without X11 on macOS.

So far, I have only managed to make games like FIFA 99 and Need For Speed II SE to work with it flawlessly.

It's no different from the Glide wrappers from early 2000's, like Svens glide to open gl, Zeckensacker's Glide Wrapper, nGlide, to name a few. Even DOSBox has a similar approach with OpenGlide.

It does not enable 3D acceleration for applications on Windows, for example AutoCAD wouldn't work with it. Doesn't even enable Windows 7 Aero theme. It's strictly for Glide and 3dfx games.

If you expect to have full 3D acceleration for modern games from it, sorry to disappoint you.

Here: https://github.com/kjliew/qemu-3dfx/wiki/QEMU-3D-APIs-Pass-Through