[vbox-dev] 3d acceleration of android-x86 for virtualbox

Michael Thayer michael.thayer at oracle.com
Tue Jul 18 08:20:43 UTC 2017

Hello Dong Hao,

(Is that the right way to address you?)

15.07.2017 19:57, tim3385 wrote:
>       vboxguest, vboxvideo and vboxsf have been probed into android-x86.
> We are finding the entrance of translate android-x86 3d implement to
> host OS.
>       We have a few questions about virtualbox, thanks^^:
> 1 "external_vboxguest-linux-module" is a driver for virtualbox's virtual
> hardware, is my understanding right?

The vboxguest module drives the virtual "guest" device which does most
of the work of letting the Guest Additions communicate with the host.

> 2 There is a sentense "Hardware 3D acceleration under Ubuntu 10.10 and
> Fedora 14 have been tested and confirmed as working"
> in http://www.virtualbox.org/manual/ch04.html#guestadd-video . Can you
> introduce the theory? eg. where is the entrance that The additon
> translate 3d api invoke to host?

I see that our manual needs some adjusting not to refer to precise guest
versions which get out of date quickly.  To repeat: the theory is that
we replace libGL.so.1 on the guest with our own one: VBoxOGL.so, with
various dependencies VBoxOGL*.so.  Those marshall OpenGL API calls
(though they deal with some things locally in the address space of the
caller) which they send through the guest device using the HGCM
transport (though it can also be done through the graphics device using
the HGSMI transport) to the host for rendering.  See the make file
for an overview of what goes into those libraries.  The source files are
rather scattered over the tree, and some are auto-generated, but if you
want to do something here you will not get around doing a lot of reading
of source.  We could probably answer specific questions, but generic
explanations of "how it works" will probably not help much without that

See though my suggestion by private e-mail of modifying the vboxvideo
graphics device to be able to channel Qemu's virgl rendering protocol
through to the host.  You would be able to leave the guest rendering
code in Mesa almost unmodified (just changed enough to recognise
vboxvideo as a supported device) and re-use the host rendering code (the
virglrenderer library) which would just need to be hooked, more or less
unmodified, into our host code.  The changes to vboxvideo itself should
be reasonably trivial too.  In comparison, reworking our current 3D code
will be a lot of work.

> 3 We want to do some modification based
> on "external_vboxguest-linux-module". Could you please give us some
> suggestions or samples?

That is hard without knowing what you want to do.

> 4 About android-x86: is there some way to directly(like by usb
> wire)  connect host to android-x86 in virtualbox by adb? We only found
> the way  "adb connect IP"  can success, and the "IP" must be a lan IP
> but so that the transfer speed would be low.

Not that I know of, though I don't know much about adb.  In theory you
could write a virtual USB device to do that, but I suspect you have
already set more than enough work for yourself.

> 5 How can sound card of virtualbox Android-x86 work fine?

Sound is being worked on.  What problems are you experiencing?


> best
> Dong Hao
> ------------------------------------------------------------------------
> Sent from YoMail for Gmail <http://www.yomail.com/?utm_source=signature>
> < Michael Thayer <mailto:michael.thayer at oracle.com>> 在 2017-07-12
> 19:17:49 写道:
>     10.07.2017 10:52, tim3385 wrote:
>     > Dear Sirs:
>     >
>     > I want to make virtualbox addition for android-x86 to improve the
>     > efficient of 3d and 2d.
>     > Mr. Chih-Wei Huang, current project maintainer of android-x86, has
>     given
>     > me some reference about android-x86 3d acceleration. They just discuss
>     > this with VWare.
>     >
>     > I want to look for somebody who can help me begin. thanks.
>     Hello Tim (is that the right name to address you by?),
>     I'm afraid that no one has a lot of time to help you with this. I will
>     make a quick suggestion about where you could start looking. You will
>     probably have most luck studying the code and asking precise questions
>     when things are not clear.
>     You will probably want to start by looking at the X11 libGL.so and its
>     dependencies. This is a purely user-space library which marshalls the
>     OpenGL command stream and some information from GLX commands and sends
>     it to the host, currently via the "guest" device, on Windows through the
>     graphics device. On the host the 3D content is rendered to a host
>     window - a separate one from the normal guest screen window, which
>     sometimes causes unwanted artefacts when 2D and 3D guest rendering are
>     mixed.
>     It will probably take you a while to get used to our build system to
>     work out what goes into libGL.so (including generated files), but you
>     will probably have to go through that.
>     Hope that helps for a start.
>     Regards
>     Michael

Michael Thayer | VirtualBox engineer
ORACLE Deutschland B.V. & Co. KG | Werkstr. 24 | D-71384 Weinstadt

ORACLE Deutschland B.V. & Co. KG
Hauptverwaltung: Riesstraße 25, D-80992 München
Registergericht: Amtsgericht München, HRA 95603

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

More information about the vbox-dev mailing list