Hi all,

This is a some sort of code preview announcement forvirtio-gpu WDDM
Display Only Driver which is just theinitial step toward implementing
Full WDDM virtio-gpu driver we started working on. Along with that I
wouldlike to send some very brief summary regarding to currentand
future work toward adding 3D support for Windows Guests.

0. Outline:
- I.    Display Only Driver
- II.   OpenGL Support
- III.  Full/Render WDDM Driver
- IV.   Direct3D User Mode Display Driver
- V.    Vulkan and OpenCL Installable Client Drivers

I. Display Only Driver

We choose Display Only Driver as an entry point for working on virtio-gpu
for Windows Guests project mostly because DOD architecture provides us with
a quite simple and already good known way how to prototypeand build Kernel
Mode Display Driver for Windows.

Status, known bugs/problems, future work and repository:

- the driver is mostly functional, can be build, installed and survive
most of the normal operation cases.

Known problems:
- interrupts mode. Currently works in triggered mode only. MSI fails at
OS level, when TranslatedResourcesList is NULL which means resources
allocation problem in PCI bus driver.
- colored accelerated cursor generally works but has some glitches.
I prefer keep this feature turned off for now.
- supported resolutions are hard-coded.
- custom resolution. Partially works, but need some more time to
make this feature fully functional.

Future work:
- virtio. Currently virtio-gpu driver linked against virtio-win library
shamelessly taken from our virtio-win project. This part of the project
will be replaced with a new virtio C++ implementation. This work is almost
done but needs some more testing before being merged into the project.


II. OpenGL Support

This project is conducted by Nathan Gauër. Nathan is a GSOC 2017
students who decided to spend this summer working on proof of concept
for this project .
The idea was to bypass OpenGL traffic from Windows OpenGL app through
virtio-gpu driver to host. At the beginning we were not absolutely sure
if Full WDDM driver is required to be involved or justDOD driver will be
enough. Unfortunately only FULL WDDM driver cancommunicate properly with
OpenGL Installiable Client Driver. While FullWDDM driver is still under
development, Nathan is making a good a progress on hooking DxgkDdiEscape
routine to pass OpenGL related requests from guest to host.

Status, repositories and future work:

- Nathan is going to push his work into gitlab shortly. Meanwhile, anyone
who is interested in his work is welcome to visit Nathan's blog at


and check his git repositories at github


to get a better understanding about the work, that Nathan has done so far.

Future work:
- at some point, after implementing command buffers support in Full WDDM
driver,we have to start transforming this project into OpenGL ICD.

III. Full/Render WDDM Driver

We currently have some prototype, which already implementsthe basic WDDM
rendering operation flow. However, DMA and Command buffers support is not
fully implemented yet.

- work in progress

IV. Direct3D User Mode Display Driver

Direct3D Support.
Just like OpenGL ICD driver, this project needs Full WDDM driver to be
implementedfirst. After that, we are going to start working on user mode
display driver to supportDirect3D DDI. Right now we are thinking about
building D3D support on top of OpenGL. For the sake of POC it probably will
be the simplest and the fastest way for prototyping D3D support.

V. Vulkan and OpenCL Installable Client Drivers

Not now. But who knows, maybe one day we will start working on these two
projects as well.These two projects will mostly depend on QEMU backend
and Full WDDM driver.

All the best,
Spice-devel mailing list

Reply via email to