Vulkan
Explicit API for Graphics and Compute on GPUsIntroduction to Vulkan
The best short introduction to Vulkan for developers that we have so far is written by baldurk. He is the author of RenderDoc, a graphics debugger with Vulkan support.
I’ve written this post with a specific target audience in mind, namely those who have a good grounding in existing APIs (e.g. D3D11 and GL) and understand the concepts of multithreading, staging resources, synchronisation and so on but want to know specifically how they are implemented in Vulkan. … Mostly, this is the document I wish had already been written when I first encountered Vulkan – so for the most part it is tuned to what I would have wanted to know.
Vulkan Information and News
Vulkan Resources
- Main Khronos Vulkan page: https://www.khronos.org/vulkan, and resources page.
- The official Valve and LunarG Vulkan SDK: http://lunarg.com/vulkan/
- Official assembler/disassembler for SPIR-V, the portable binary IR for Vulkan Shaders: https://github.com/KhronosGroup/SPIRV-Tools/
- Khronos official Vulkan resources. Fork that and make a pull request to contribute.
Vulkan Primers
Vulkan Tutorials
- API without Secrets: Introduction to Vulkan, by Pawel L., Intel, April 2016.
- ARM Mali Vulkan SDK Tutorials
- Overview of Vulkan This document will give you a brief overview of the Vulkan API.
- Introduction to Vulkan on Android Shows you how to create a Vulkan instance, device and swapchain on Android.
- Using Validation Layers for Debugging Applications Introduces how to use the LunarG Validation Layers with your Vulkan application.
- Hello Triangle Introduction to "Hello Triangle", the most basic Vulkan application.
- Rotating Texture This tutorial introduces texturing and uniform buffers.
- Multithreading in Vulkan Shows you how to use Vulkan to draw a scene using multiple CPU threads.
- Introduction to Compute Shaders in Vulkan Shows you how to use compute shaders in Vulkan.
- Multisampling in Vulkan This document will give you an introduction to efficiently use multisampling in Vulkan.
- Spinning Cube with Depth Testing and Push Constants This tutorial introduces depth testing and push constants.
- Deferring shading with Multipass Introduces Vulkan Multipass, which enables highly efficient deferred shading on Mali GPUs.
- Adaptive Scalable Texture Compression (ASTC) with ARM Mali Introduces how to use the ASTC compression standard for textures in Vulkan.
- Mipmapping in Vulkan Introduces how to use mipmaps and how to generate them from a source image.
- José Henriques
- I Am Graphics And So Can You, by Dustin H Land
- Part 1: Introduction
- Part 2: Intuition
- Part 3: The First 1,000 Covers getting started with Vulkan, writing all the boilerplate needed.
- Part 4: Resources Rush The Stage Memory allocation and resources that live in it.
- Part 5: Your Pixels Are Served Presentation, the swap chain, and managing CPU/GPU asynchrony.
- Part 6: Pipelines
- Vulkan-sxs by Philip Taylor. Read the README.md in each sub-folder.
- List of Beginner's Guides to Vulkan: This list assumes some programming knowledge but not much else.
Vulkan Articles
Vulkan Wrappers, Helpers, and Utility Libraries
- ARM Mali Vulkan SDK for Android (Documentation here)
- Simplified Vulkan Synchronization: Exposes 40 distinct usage types of pipeline barriers and events, and a couple of options for handling image layouts. The aim is to cover 99% of cases.
- Khronos C++ Wrapper: Originally a side project of a member of the NVIDIA workstation graphics team, this C++ wrapper gives a safer interface than the raw C API, some help with RAII for API objects, and optional exceptions.
- ARM Mali PerfDoc:
A standard Vulkan
Layer
, able to run over any Vulkan implementation, which checks for performance pitfalls specific to ARM Mali. - VKTS (VulKan ToolS) library, by Norbert Nopper.
- Vulkano: A Rust language wrapper for Vulkan by Tomaka who has worked with Mantle.
- OpenFrameworks Vulkan Renderer: Provides a GL-like context interface over Vulkan.
Example Vulkan Code
- Norbert Nopper: Samples using VKTS (VulKan ToolS) library.
- Sascha Willems: Vulkan examples and demos.
- Google Android Samples
- ARM Vulkan best practice for mobile developers
Presentations on Vulkan
- Migrating from OpenGL to Vulkan, Mark Kilgard, NVIDIA, January 19, 2016. PDF
- C++ API Layer on top of Vulkan, Markus Tavenrath, NVIDIA, 2016. PDF
- High Performance Vulkan: Lessons Learned from Source 2, John McDonald, Valve, 2016. PDF
- Vulkan Overview and Roadmap for NVIDIA GPUs, Piers Daniell, NVIDIA, January 19 2016. PDF
Projects Using Vulkan
- Hatchit: Open Source 3D Game Engine rendering through Vulkan and DX12. Vukan Headers. Vulkan Implementation Code.
Discussion & Q&A
- NVIDIA Gameworks Vulkan Board
- The official forum.
- Stack Overflow Vulkan tag
- Reddit /r/vulkan.
Other Vulkan Resource Pages
- Roundup of Vulkan information by Alexander Overvoorde, the author of open.gl: http://vulkan-tutorial.com/
- Another roundup of Vulkan information by TheBuzzSaw: https://sites.google.com/site/cachefriendly/vulkan
- Yet another Vulkan link roundup by Renderpipeline (Robert Menzel).
- jcoder58's Vulkan Resources.
Prerelease Information
- [PRERELEASE]Loads of code and information in these SIGGRAPH 2015 Presentations - An Overview of Next-Generation Graphics APIs, "This introductory course provides an overview of switching from current to next-gen APIs; discusses similarities between next-gen APIs; covers basic API details for DirectX12, Vulkan, etc.; explores specific case studies from developers working with these APIs": http://nextgenapis.realtimerendering.com/
- [PRERELEASE]Imagination Technology Vulkan
Webinars
(Videos and blog posts)
- [PRERELEASE]Vulkan: One API for all Platforms, by Tobias Hector of Imagination Technology, October 19th 2015.
Prerelease Videos
- November 2015, Vulkan: Scaling to multiple threads, by Tobias Hector of Imagination Technologies
- November 2015, Vulkan: High efficiency on mobile, by Tobias Hector of Imagination Technologies
- October 2015, Vulkan: One API for all platforms, by Tobias Hector of Imagination Technologies
- August 2015, Vulkan on NVIDIA GPUs, by Piers Daniell
- August 2015, 3D Graphics API State of the Union, Vulkan Status Update at SIGGRAPH
- March 2015, Vulkan and SPIR-V Session at GDC
- March 2015, Vulkan - The Future of High Performance Graphics, at
GDC
- Johan Andersson, Introducing Vulkan
- Pierre-Loup Griffais of Valve on High Level Concepts in Vulkan
- Dan Baker on Vulkan and Many Threads
- Niklas Smedberg of Epic Games, Vulkan Binding Model
- Aras Pranckevičius of Unity on Vulkan shaders and SPIR-V
- John McDonald of Valve on Layers, Loader, SDK, and tools for Vulkan line the GLAVE debugger
- Q&A
- March 2015, Oxide Games Show Their Game, Engine, and a only a tiny bit about Vulkan (basically just that they are using it)
Vulkan and the Vulkan logo are trademarks of the Khronos Group Inc.