QEmu mit OpenGL-“Pass-Through”

Even Roault hat einen Patch für QEmu vorgestellt, welcher eine Art “Pass-Through”vom OpenGL-Kommandos zwischen Gast-System und Host erlaubt. Während die Änderungen an QEmu selbst nicht allzu umfangreich ausfallen sollen, muss dem Gast-System eine modifzierte libGL untergeschoben werden. Diese leitet alle OpenGL-Kommandos an den Host weiter, welcher sie dann an die Grafikkarte schickt. Momentan setzt der als Proof-of-Concept gedachte Patch Linux auf beiden Seiten voraus, als OpenGL-Clients taugen momentan nur einige wenige Demos wie glxgears. Spiele und XGl scheitern an der unvollständigen Implementation der OpenGL-API. Roault vermeldet auch, dass sich die Performance beim Einsatz des QEmu-Kernelmoduls KQEMU nicht verbessere, sondern einbreche. Der Grund dafür ist noch unbekannt.

QEmu-Autor Fabrice Bellard hat seine Unterstützung bereits angekündigt. Um den Code auch auf anderen Plattformen als i386 lauffähig zu machen, soll die Kommunikation zwischen Guest und Host eher durch die von QEmu emulierte VGA-Grafikkarte erfolgen, für Windows als Guest kann z.B. eine Direct3D-Implementierung auf Basis von WineD3D erstellt werden.

QEmu startete als CPU-Emulator und emuliert heute x86, x86-64 bzw. AMD64, ARM, PowerPC, Sparc32/64 und MIPS, an der Unterstützung von SH-4 und m68k wird gearbeitet. Ähnlich wie bei anderen Anwendungen dieser Art emuliert QEmu zunächst CPU und Peripherie komplett in Software, erlaubt aber an manchen Stellen das “durchreichen” realer Hardware an das Guest-Betriebssystem. Ein – anders als der restliche Code – nicht unter der GPL freigegebenes Kernel-Modul erlaubt es QEmu, x86/x86_64-Code auf x86/x86_64-Systemen direkt auf der realen CPU auszuführen. Dies ähnelt dem z.B. von VMWare genutzten Konzept und sorgt für eine deutliche Beschleunigung.