GLOVE™ (GL Over Vulkan) is a cross-platform software library that acts as an intermediate layer between an OpenGL® ES application and Vulkan®.
GLOVE™ is focused towards embedded systems and is comprised of OpenGL ES and EGL implementations, which translate at runtime all OpenGL ES / EGL calls & ESSL shaders to Vulkan commands & SPIR-V shader respectively and finally relays them to the underlying Vulkan driver.
GLOVE™ has been designed towards facilitating developers to easily build and integrate new features, allowing at the same time its further extension, portability and interoperability.
GLOVE™ is comprised of two shared libraries: libGLESv2.so and libEGL.so Additionally, the translation from OpenGL|ES ESSL shaders to Vulkan SPIR-V shaders is handled by the external glslang library from the Khronos github repository. The latter is statically linked to libGLESv2.so.
GLOVE™ is designed to perform various optimizations such as caching OpenGL|ES shaders, use of Vulkan secondary buffers for performance optimization, use of multi threading for modern multicore systems and power optimization techniques for embedded devices. Yet it is modular, portable an easy to extend.
GLOVE™ EGL implementation can be connected to one or more window platforms, such as XCB, Wayland, Android or fbdev, which handle framebuffer allocation / deallocation and presentation onto the system's display. Currently EGL supports XCB back-end, but it is modular and can be easily extended to support more back-ends.
More information about the system architecture of GLOVE™ can be found here.
GLOVE™ is designed to support any Vulkan Compliant GPU. As part of the testing process we continuously test results against Mesa/Intel, nVidia and ARM Mali drivers.
Also GLOVE™ is an integral part of the OpenGL|ES Graphics Stack for all NEMA®|GPU-Series:
Operating System Support
GLOVE™ is designed to support the following operating systems:
GLOVE™ is designed to support the following features:
- OpenGL|ES 2.0
- EGL 1.4
- ESSL shaders
- Vulkan 1.0
- Android support (compilation, examples)
The following features and improvements are planned in future releases:
- Upcoming versions of the OpenGL, EGL, and Vulkan API
- More 3rd party Vulkan implementations will be supported ( AMD)
- Windows support
GLOVE™ is aiming to take advantage of Vulkan in terms of performance. First results are very promising and major performance upgrades are in progress too. Instructions to use some available benchmarks for testing can be found here.
GLOVE™ is accompanied by a demo SDK that contains fully commented, highly optimized C applications (accompanied by the ESSL shader source code). These demos demonstrate some simple rendering techniques with different geometry complexities, as they were designed with the restrictions of low-power embedded platforms in mind.
See details in Demos README
How To Contribute
The GLOVE™ project is continuously updated and considered as work in progress, therefore contributions are more than welcome! Guidelines of how to contribute to GLOVE™ can be found here.
Versions and Release Notes
- Latest version of GLOVE™ | Release v0.3 | LGPL v3 license
- Other Versions of GLOVE™
- Release v0.2
- Compatibility work (NVIDIA Vulkan driver, ARM Vulkan driver)
- Support of Window Reshape functionality
- Support of Native Surface rendering (experimental)
- Release v0.2
- Release v0.1
- Initial Release of GLOVE
- OS Support: Linux (Tested on Ubuntu 16.04)
- Vulkan driver support: MESA Intel
- HW support: Tested on several Intel GPUs on desktop machines (e.g Intel Ivybridge Desktop)
- Release v0.1
For more information about GLOVE™ you may contact us at info(at)think-silicon.com.