clspv - Clspv is a prototype compiler for a subset of OpenCL C to Vulkan compute shaders

  •        99

Clspv is a prototype compiler for a subset of OpenCL C to Vulkan compute shaders.Clspv is licensed under the terms of the Apache 2.0 license. The AUTHORS file lists the copyright owners, while individual credit is given in the CONTRIBUTORS file. To contribute, see



Related Projects

vulkan_minimal_compute - Minimal Example of Using Vulkan for Compute Operations. Only ~400LOC.

  •    C++

This is a simple demo that demonstrates how to use Vulkan for compute operations only. In other words, this demo does nothing related to graphics, and only uses Vulkan to execute some computation on the GPU. For this demo, Vulkan is used to render the Mandelbrot set on the GPU. The demo is very simple, and is only ~400LOC. The code is heavily commented, so it should be useful for people interested in learning Vulkan. The application launches a compute shader that renders the mandelbrot set, by rendering it into a storage buffer. The storage buffer is then read from the GPU, and saved as .png. Check the source code comments for further info.

SPIRV-Cross - SPIRV-Cross is a practical tool and library for performing reflection on SPIR-V and disassembling SPIR-V back to high level languages

  •    C++

SPIRV-Cross is a tool designed for parsing and converting SPIR-V to other shader languages. SPIRV-Cross tries hard to emit readable and clean output from the SPIR-V. The goal is to emit GLSL or MSL that looks like it was written by a human and not awkward IR/assembly-like code.


  •    C++

[2017/11/12] - Added simple tessellation shader sample. Fixed misc issues with pipeline setup for tessellation. [2017/11/10] - Added ChessSet demo. Added geometry shader sample. Fixes to depth stencil handling. [2017/11/10] - Added TexturedCube sample. Updated depth attachment handling on swapchain render pass. Switched out lc_image for stb_image. Added DXC shader build script. [2017/05/27] - Fixed some annoying buffer state transitions. Added build script for shaders. Updated shader naming convention to be more exact. Added OpaqueArgs and PassingArrays for investigation. [2017/05/20] - Updated Append/Consume sample for Vulkan. Requires latest glslang. ConstantBuffer also works for both platforms. [2017/05/13] - Added Linux support. Moved to project files to cmake. Moved glsl shaders to glsl sub directory - forcing HLSL for now. [2017/04/30] - Clarified shader usage in some sample programs to point out which source they're coming from. [2017/04/27] - Added ConstantBuffer sample (D3D12 only for now). Updated Vulkan samples to use negative viewport height. [2017/04/25] - Updated SimpleCompute and StructuredBuffer to work on Vulkan. [2017/04/24] - Added compute samples (D3D12 only for now). One for simple compute and another for structured buffers.

SPIRV-LLVM - LLVM framework with SPIR-V support

  •    C++

The khronos/spirv-3.6.1 branch of this repository contains source code for the LLVM/SPIR-V Bi-Directional Translator, a library for translating between LLVM and SPIR-V. The LLVM/SPIR-V Bi-Directional Translator is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt.

AMDVLK - AMD Open Source Driver For Vulkan

  •    Python

The AMD Open Source Driver for Vulkan® is an open-source Vulkan driver for Radeon™ graphics adapters on Linux®. It is built on top of AMD's Platform Abstraction Library (PAL), a shared component that is designed to encapsulate certain hardware and OS-specific programming details for many of AMD's 3D and compute drivers. Leveraging PAL can help provide a consistent experience across platforms, including support for recently released GPUs and compatibility with AMD developer tools. Shaders that compose a particular VkPipeline object are compiled as a single entity using the LLVM-Based Pipeline Compiler (LLPC) library. LLPC builds on LLVM's existing shader compilation infrastructure for AMD GPUs to generate code objects compatible with PAL's pipeline ABI. Notably, AMD's closed-source Vulkan driver currently uses a different pipeline compiler, which is the major difference between AMD's open-source and closed-source Vulkan drivers.


  •    C++

The SPIR-V Tools project provides an API and commands for processing SPIR-V modules. The project includes an assembler, binary module parser, disassembler, validator, and optimizer for SPIR-V. Except for the optimizer, all are based on a common static library. The library contains all of the implementation details, and is used in the standalone tools whilst also enabling integration into other code bases directly. The optimizer implementation resides in its own library, which depends on the core library.

Vulkan-Forward-Plus-Renderer - Forward+ renderer in Vulkan using Compute Shader

  •    C++

In this project, we created a Forward Plus (tiled forward) renderer in Vulkan using compute shader to deal with light culling. Our implementation is ~1000% faster than regular forward renderer (tested in Vulkan) under the condition of 200 lights.

vulkano - Safe and rich Rust wrapper around the Vulkan API

  •    Rust

See also Vulkano is a Rust wrapper around the Vulkan graphics API. It follows the Rust philosophy, which is that as long as you don't use unsafe code you shouldn't be able to trigger any undefined behavior. In the case of Vulkan, this means that non-unsafe code should always conform to valid API usage.

dxvk - Vulkan-based D3D11 and D3D10 implementation for Linux / Wine

  •    C++

A Vulkan-based translation layer for Direct3D 10/11 which allows running 3D applications on Linux using Wine. For the current status of the project, please refer to the project wiki.

VK9 - Direct3D 9 compatibility layer using Vulkan.

  •    C++

Runs Direct3D 9 applications on Windows or Linux (/w Wine) over Vulkan. Please refer to the Github wiki for current state and details about the project.

lwjgl3 - LWJGL is a Java library that enables cross-platform access to popular native APIs useful in the development of graphics (OpenGL), audio (OpenAL) and parallel computing (OpenCL) applications

  •    Kotlin

LWJGL ( is a Java library that enables cross-platform access to popular native APIs useful in the development of graphics (OpenGL/Vulkan), audio (OpenAL) and parallel computing (OpenCL) applications. This access is direct and high-performance, yet also wrapped in a type-safe and user-friendly layer, appropriate for the Java ecosystem.LWJGL is an enabling technology and provides low-level access. It is not a framework and does not provide higher-level utilities than what the native libraries expose. As such, novice programmers are encouraged to try one of the frameworks or game engines that make use of LWJGL, before working directly with the library.

vulkan - Vulkan API bindings for Go programming language

  •    Go

Package vulkan provides Go bindings for Vulkan — a low-overhead, cross-platform 3D graphics and compute API. Updated October 13, 2018 — Vulkan 1.1.88. Vulkan API is the result of 18 months in an intense collaboration between leading hardware, game engine and platform vendors, built on significant contributions from multiple Khronos members. Vulkan is designed for portability across multiple platforms with desktop and mobile GPU architectures.

DiligentEngine - Master repository for Diligent Engine project

  •    C++

Diligent Engine is a lightweight cross-platform abstraction layer between the application and the platform-specific graphics API designed to take advantages of next-generation APIs such as Direct3D12 and Vulkan, while providing support for older platforms via Direct3D11, OpenGL and OpenGLES. Diligent Engine exposes common front-end for all supported platforms and provides interoperability with underlying native API. Shader source code converter allows HLSL shaders to be used on all supported platforms and rendering backends. The engine is intended to be used as a graphics subsystem in a game engine or any other 3D application, and supports integration with Unity. Diligent Engine is distributed under Apache 2.0 license and is free to use. Alternatively, you can get master repository fisrt, and then individually clone all submodules into the engine's root folder.

compute - A C++ GPU Computing Library for OpenCL

  •    C++

Boost.Compute is a GPU/parallel-computing library for C++ based on OpenCL. The core library is a thin C++ wrapper over the OpenCL API and provides access to compute devices, contexts, command queues and memory buffers.

Vulkan - Examples and demos for the new Vulkan API

  •    C++

A comprehensive collection of open source C++ examples for Vulkan®, the new graphics and compute API from Khronos. from the root of the repository after cloning or see this for manual download.

The-Forge - The Forge Cross-Platform Rendering Framework PC, Linux, Ray Tracing, macOS / iOS, Android, XBOX, PS4

  •    C++

The intended usage of The Forge is to enable developers to quickly build their own game engines. The Forge can provide the rendering layer for custom next-gen game engines. Added a unified input system based on Gainput to all platforms ( The new input system substantially simplified input management on the application level over all platforms. We also simplified the camera controller. Added also new VirtualJoystick class in UI.

Chlorine - Dead Simple OpenCL

  •    C++

Chlorine is the easiest way to interact with OpenCL compatible devices. It is a header-only C++11 library that allows you to write cross-platform code that runs on GPUs without ever touching the complicated OpenCL API, leaving you free to write code that matters: kernels that process data. Chlorine is composed of just two headers: chlorine.hpp, and its dependency, the OpenCL C++ Bindings. To integrate Chlorine into your own project, install OpenCL; then add chlorine/include to your include paths and link with OpenCL. Chlorine also requires a compiler with C++11 support. An example of how to use Chlorine is below, or read a more detailed walkthrough if you prefer.

VulkanTutorial - Tutorial for the Vulkan graphics and compute API

  •    C++

This repository hosts the contents of The website itself is based on, which supports GitHub flavored Markdown. A few changes were made to and its themes, which are included in daux.patch and are licensed as MIT. The patch is based on commit d45ccff. Use issues and pull requests to provide feedback related to the website. If you have a problem with your code, then use the comments section in the related chapter to ask a question. Please provide your operating system, graphics card, driver version, source code, expected behaviour and actual behaviour.

shaderc - A collection of tools, libraries and tests for shader compilation.

  •    C++

Shaderc has maintained backward compatibility for quite some time, and we don't anticipate any breaking changes. Ongoing enhancements are described in the CHANGES file.For licensing terms, please see the LICENSE file. If interested in contributing to this project, please see

ShaderConductor - ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages

  •    C++

ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages. Note that this project is still in an early stage, and it is under active development.