OpenGL ES Support For QEMU Emulator

Posted by Michael Larabel on May 11, 2011

One of the items brought up this week at UDS Budapest was about providing OpenGL / OpenGL ES support for QEMU guests. The need for OpenGL ES 2.0 support in QEMU guests has come up since it's used in emulating Maemo / MeeGo for development environments. This would also make it possible to use Canonical's Unity desktop in a virtualized environment.

Code was already written to accelerate OpenGL in QEMU when using x86 software on the guest and host, followed by support for an ARM guest on an x86 system, and then a library was also written for translating OpenGL ES calls to OpenGL.

This Ubuntu-developed OpenGL QEMU acceleration method works by having a fake OpenGL ES library on the guest that implements the EGL, OpenGL ES 1.1, and OpenGL ES 2.0 APIs. This fake library passes the calls onto a kernel module via iomem. There's then some hacked-up QEMU code that reads these OpenGL ES calls from registers and copies the buffers from the guest user-space memory to host user-space. This component though is targeted for being rewritten so that it's much cleaner. This would also be needed for potential upstream QEMU acceptance.

There's also another library in-development that does the EGL / GLES 1.1 / GLES 2.0 translations to GLX, Windows GL, and Apple GL. This part is not dependent upon QEMU but just having a host with OpenGL 2.1+ support. It's working with the proprietary NVIDIA/AMD drivers and the Intel classic Mesa driver, but not much else in terms of the other Mesa / Gallium3D drivers.

This is the rough solution for what Canonical's after, but they haven't explored what Red Hat may be doing for OpenGL acceleration with KVM and SPICE. It would also be interesting to leverage a virtual Gallium3D driver such as what VMware does with their virtualization stack, but that's not a target for these Ubuntu / Linaro developers.

More details in the UDS notes.

Discuss this article in our forums, IRC channel, or email the author. You can also follow our content via RSS and on social networks like Facebook, Identi.ca, and Twitter (@Phoronix and @MichaelLarabel). Subscribe to Phoronix Premium to view our content without advertisements, view entire articles on a single page, and experience other benefits.
Latest Hardware Reviews
  1. Sumo Lounge Emperor
  2. Gallium3D Continues Improving OpenGL For Older Radeon GPUs
  3. 15-Way Open vs. Closed Source NVIDIA/AMD Linux GPU Comparison
  4. Nouveau vs. NVIDIA Linux Comparison Shows Shortcomings
Latest Software Articles
  1. GCC 4.8.0 vs. LLVM Clang 3.3 Compiler Performance
  2. Intel Linux OpenGL Driver Leading Over Apple OS X
  3. The Cost Of Ubuntu Disk Encryption
  4. Btrfs vs. EXT4 vs. XFS vs. F2FS On Linux 3.10
Latest Linux News
  1. A New X.Org-Free Wayland LiveCD Released
  2. Unity 8, Mir Made Progress This Week On Features
  3. LLVM Clang 3.3 RC2 Is Ready For Testing
  4. AMD RadeonSI Gallium3D Begins Simple CL Demos
  5. Intel Shows Off GNOME3-Based Tizen Shell
  6. Linux Desktop Security Could Be A Whole Lot Better
  7. KDE 4.11 Will Be The Last Major KDE4 Workspaces Feature Release
  8. New NVIDIA Linux Driver Supports The GeForce GTX 780
  9. Chrome 28 To Offer More Speed Improvements
  10. Digia Announces "Boot To Qt" Project
  11. X.Org Libraries Hit By Round Of Security Issues
Latest Forum Talk
  1. GCC 4.8.0 vs. LLVM Clang 3.3 Compiler Performance
  2. Linux's "Ondemand" Governor Is No...
  3. A New X.Org-Free Wayland LiveCD Released
  4. Jolla Announces Their First Phone
  5. Steam: No used games...
  6. AMD RadeonSI Gallium3D Begins Simple CL Demos
  1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Motherboards
  5. Peripherals
  6. Processors
  7. Software
  8. Operating Systems
  9. All Articles
  1. Linux Benchmarking
  2. OpenBenchmarking.org
  3. Phoronix Test Suite