El proyecto QEMU ha presentado Triton, un controlador gráfico para invitados Windows que, combinado con la capa de virtualización Neptune, ofrece aceleración 3D nativa basada en DirectX 11 dentro de máquinas virtuales. El anuncio, publicado en el blog técnico del proyecto, explica por qué los enfoques previos —basados en sustituir manualmente las DLL d3d11.dll y dxgi.dll del sistema— resultaban insuficientes: el compositor DWM debe recurrir a blitting por CPU, muchos juegos con sistemas antitrampas detectan la modificación y la experiencia de escritorio nunca llega a ser fluida.
La clave técnica de Triton reside en implementar la Interfaz de Controlador de Dispositivo (DDI) de DirectX, es decir, los componentes UMD (modo usuario) y KMD (modo kernel), en lugar de reimitar las API. En la arquitectura de Windows, la aplicación habla con d3d11.dll y dxgi.dll, que traducen las llamadas a comandos DDI consumidos por el UMD; este, a su vez, dialoga con el KMD, encargado de pilotar el hardware —o, en este caso, el hardware virtual—. Neptune ya cubre la parte de reenvío de comandos Direct3D al anfitrión, y los trabajos previos de anonymix007 y arehnman sobre Venus han servido de base para el KMD.
Para el UMD, los autores descartaron el camino seguido por VirtualBox, que convierte el DDI en un bytecode intermedio, por los problemas de compatibilidad con juegos que ello acarrea y por la incompatibilidad de licencia (GPLv3 frente al MIT de virglrenderer o la LGPLv2 de QEMU). En su lugar, el UMD de Triton reconvierte las llamadas DDI en llamadas a la API DirectX ya existente, lo que permite reutilizar el protocolo Neptune sin inventar un transporte nuevo. Como referencias se han tomado el UMD de DirectX 10 incluido en Mesa y el código de VirtualBox, del que se extrajo la lista mínima de prototipos DDI necesarios y el algoritmo de firma DXBC.
