Description

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 functionality

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.

System Architecture

System Architecture

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.

Product Support

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:

  • NEMA®|S-100/400/1600
  • NEMA®|p-100
  • NEMA®|t-100/200/400
  • NEMA®|tS-200/400/800/1600

Operating System Support

GLOVE™ is designed to support the following operating systems:

  • Android™,
  • Linux®
  • Windows®

Features

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

Performance

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.

Demos

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.

More information

For more information, including detailed build instructions, installation instructions, demos, and benchmarking, please head on over to GitHub and check out the README.md in the GLOVE™ repository.

Resources

GitHub

Versions and Release Notes

  • Latest version of GLOVE™ | Release v0.3 | LGPL v3 license
  • Other Versions of GLOVE™
    • Release v0.2
      • Support of Window Reshape functionality
      • Support of Native Surface rendering (experimental)
    • 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)

For more information about GLOVE™ you may contact us at info(at)think-silicon.com.