Legacy x86 Applications on OpenPOWER™ via QEMU
3D Graphics Demonstration with x86_64 Guest
This video illustrates a variety of x86_64 native binary applications executing on a POWER8 machine using QEMU user mode translation. These applications are using the full 3D hardware capabilities of the host POWER8 machine, and have access to the host's ALSA audio. Applications that primarily use scalar instructions perform quite well, while applications making heavy use of vector instructions experience lag and stuttering due to missing features in QEMU (see notes below). Multiple 3D games were used to demonstrate the feasibility of a non-native engine binary interfacing with the POWER8 host GPU.
For the best viewing experience, expand the video to full screen mode on your device. A screen resolution of at least 1920 x 1080 pixels is recommended.
General Notes
This QEMU patch series is required, and was applied to the QEMU master version used in this demonstration
Stuttering is largely caused by QEMU not translating target SIMD / vector instructions to host SIMD / vector instructions. QEMU currently translates each vector instruction (e.g. from SSE/SSE2/AVX/NEON/AltiVec) to large chunks of scalar code, resulting in very slow vector execution. This currently affects all target / host pairs available in QEMU, not just the OpenPOWER / x86 combination. The QEMU project is seeking volunteers to implement SIMD / vector translation, so if you would like to help out please contact the developers!
setreuid() / setegid() calls from target binaries currently crash QEMU. Alien Arena was recompiled for x86 with those two calls commented out for this demonstration.
Tested using POWER8 with a single AMD Radeon R290X and the open radeon driver
Host kernel must be compiled with 4k page support to match the x86_64 architecture-defined page size
DRM passthrough requires that the QEMU host process LP mode match the target LP mode; i.e. i386 targets would require a 32-bit build of QEMU. Because OpenPOWER™ ships with a stock 64-bit kernel and userspace, i386 targets have not been tested.
Video captured straight from Radeon DVI output
ALSA audio functions as well, but was not captured for this demonstration
At the end of the video, several applications are re-launched using native ppc64el builds for performance comparison
All data and information provided on this page is for informational purposes only. Raptor Engineering makes no representations as to accuracy, completeness, currentness, suitability, or validity of any information on this page and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. All information is provided on an as-is basis. All product names, logos, and brands are property of their respective owners. All company, product and service names used in this page are for identification purposes only. Use of these names, logos, and brands does not imply endorsement.
Edited and encoded on OpenPOWER using libre software!