[Mesa-dev] Mesa driver for VirtualBox

Michael Thayer michael.thayer at oracle.com
Thu Jun 20 07:47:53 PDT 2013


I am looking at the possibility of writing a driver for VirtualBox 
(ahem, yes) which could partly live inside of the Mesa tree.  My initial 
idea was to have the driver in two parts, a driver/client part in the 
Mesa tree and a server part in the VirtualBox tree which would 
communicate using an agreed-on protocol through a local socket.  The 
reasons for wanting to split the driver this way are on the one hand 
that we still don't feel quite ready to commit our host-guest 3D 
interface to eternity, and on the other that the driver part on the Mesa 
side might well be useful in other contexts - controlled 3D access 
(insofar as such a thing is possible) out of a sand box comes to mind.

I was considering a textual protocol between client and server which 
would more or less model the Gallium3D API, with (texture and other) 
buffers passed using shared memory via file descriptors.  Gallium3D 
would have the advantage that it is a much smaller target surface (if I 
may use that word) than OpenGL.  It has the disadvantage that it is 
closer to D3D than to OpenGL, which may be better for modelling 
hardware, but perhaps less so for proxying OpenGL APIs on a guest to 
OpenGL APIs on a host.  In particular the fact that we can't directly 
access the GLSL shader source which applications on a guest system are 
presumably trying to send us, and which we need to pass through to the 
host, disturbs me somewhat.  Of course, I realise that on the other hand 
this potentially gives us access to shaders in different formats, but 
our main target will still be OpenGL on OpenGL for the immediately 
forseeable future.  I understand that Gallium3D receives shaders in a 
format close to compiled D3D shaders, which suggests that WineD3D might 
be of use.  An alternative is to go straight for a DRI driver rather 
than a Gallium3D one.  I would be interested in any thoughts and 

For background, I have some knowledge of 3D programming but am certainly 
no expert.  I can browse the Mesa source code and the drivers in it 
without getting too worried, but need to use a search engine as I do so 
to feel confident that I understand what is happening in the code.

I look forward to reading any answers.

Thanks in advance!

ORACLE Deutschland B.V. & Co. KG   Michael Thayer
Werkstrasse 24                     VirtualBox engineering
71384 Weinstadt, Germany           mailto:michael.thayer at oracle.com

Hauptverwaltung: Riesstr. 25, D-80992 München
Registergericht: Amtsgericht München, HRA 95603
Geschäftsführer: Jürgen Kunz

Komplementärin: ORACLE Deutschland Verwaltung B.V.
Hertogswetering 163/167, 3543 AS Utrecht, Niederlande
Handelsregister der Handelskammer Midden-Niederlande, Nr. 30143697
Geschäftsführer: Alexander van der Ven, Astrid Kepper, Val Maher

More information about the mesa-dev mailing list