Git Product home page Git Product logo

glove's Introduction

GLOVE - GL Over Vulkan

GLOVE functionality

GLOVE (GL Over Vulkan) is a software library that acts as an intermediate layer between an OpenGL 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. Currently, GLOVE supports OpenGL ES 2.0 and EGL 1.4 on a Linux platform, but the modular design can be easily extended to encompass implementations of other client APIs as well.

GLOVE is considered as a work-in-progress and is open-sourced under the LGPL v3 license through which it is provided as free software with unlimited use for educational and research purposes.

Future planned extensions of GLOVE include the support for OpenGL ES 3.x and OpenGL applications.

Prerequisites

As a prerequisite for correct functioning, GLOVE must be linked to a Vulkan driver implementation which supports VK_KHR_maintenance1 extension, mandatory for OpenGL to Vulkan Coordinates conversion (left handed to right handed coordinate system). Also, the minimum Vulkan loader version must be 1.0.24.

Tested with the following configurations

GLOVE has been tested with GLOVE demos with the following configurations

GL version Vulkan Driver Vulkan API version OS Windows Platform Graphics Card status notes
Open GL ES 2.0 MESA Vulkan Intel driver (version 0x4402008) 1.0.54 Ubuntu 16.04 XCB Intel Ivybridge Desktop success -
Open GL ES 2.0 MESA Vulkan Intel driver (version 0x4800001) 1.0.57 Ubuntu 16.04 XCB Intel HD Graphics 530 (Skylake GT2) success applied depth buffer workaround
Open GL ES 2.0 NVIDIA Vulkan driver (version 384.130) 1.0.49 Ubuntu 16.04 XCB NVIDIA GeForce 940M ongoing -

SW Design

You can find a short description on GLOVE SW design as well as "How To extend GLOVE" guidelines in GLOVE Design Document

Installation Instructions

Download the Repository

To create your local git repository:

git clone https://github.com/Think-Silicon/GLOVE.git

Required Packages

To install all required packages:

sudo apt-get install git cmake extra-cmake-modules libvulkan-dev vulkan-utils build-essential libx11-xcb-dev

Optionally "mesa-vulkan-drivers" package is needed if no other Vulkan driver is available. The compiler minimum version that this project is built with, is GCC 4.9.3, although earlier versions may work.

External Repositories Dependencies

Khronos glslang repository is mandatory for compiling, validating and generating SPIR-V from ESSL shaders.

Google googletest repository is used for unit testing.

To get and build the above projects:

./update_external_sources.sh

Configure Building

GLOVE building can be configured according to the options listed in the following table:

./configure.sh [-options]
Option Default Description
-a | --arm-compile OFF Enable cross building for ARM platform
-d | --debug OFF Enable building Debug mode
-i | --install-prefix (dir) System Installation Prefix (/usr/local) Set custom installation prefix path
-s | --sysroot (dir) - Set sysroot for cross compilation
-t | --trace-build OFF Enable logs
-u | --vulkan-include-path (dir) System Include Path Set custom Vulkan include path
-v | --vulkan-loader (lib) System Vulkan Loader Set custom Vulkan loader library
-w | --no-workarounds OFF Disable workarounds

Build Project

To build the Project:

make

Install Project

To install all necessary files to system directories (superuser privilege might be required):

make install

Uninstall

To uninstall the libraries from the system directories (superuser privilege might be required):

make uninstall

Known Issues

GLOVE is considered as work-in-progress, therefore there are known issues that have to be resolved or improved.

You can see a detailed list of issues in Known Issues List

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

Benchmarking

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 in Benchmarking README

glove's People

Contributors

de2nis avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.