This is a list of resources related to learning Vulkan that I've come across.
- Vulkan 101
- Porting to Vulkan
- Swapchains Unchained
- Command Buffers and Pipelines
- Vulkan Subpasses
- Feeding Your Shaders
- Keeping Your GPU Fed
- Intro to SPIR V and using SPIR V Cross
- Asynchronous compute
API Without Secrets: Introduction to Vulkan by Pawel Lapinski Github
https://www.toptal.com/api-developers/a-brief-overview-of-vulkan-api
Vulkan API Overview by Henri Tuhola.
Vulkan API Tutorial Video series by Niko Kauppi - Visual Studio/C++ Github Repository
- Play List
- Getting started with vulkan code
- New Project, Instance and Device
- Debugging & Layers
- Recap and SDK
- Command Buffers and Syncrhonization
- Window
- Window Surface
- Swapchain
Tutorial by José Henriques
- Vulkan Part 1
- Vulkan Part 2
- Vulkan WSI/Swapchains - Alon Or-bach - Samsung
- LunarG SDK - Karan Ghavam - LunarG
- A Next Gen Engine Design - Dan Baker - Oxide Games
- Performance Lessons Porting Source 2 Engine to Vulkan - Dan Ginsberg - Valve
- Vulan does Retro - libRetro - Hans-Kristian Arntzen
- Porting Cinder to Vulkan- Hai Nguyen - Google - Art Copy and Code Project
- GFXBench 5- Gergely Juhasz - Kishonti
- Comparing Vulkan to OpenGL ES - Barthold Lichtenbelt - NVIDIA
- Using the Vulkan™ Validation Layers by Daniel Rakos
- The most common Vulkan Mistakes by Dominik Witczak
This is mainly filled with Powerpoint presentations :(.
http://nextgenapis.realtimerendering.com/
- C++ Examples by Sascha Willems
- C++ Examples from LunarG
- C++ Examples by Z80Fan
- C/Linux Tutorials by Shabi
- NVidia Examples
- Spinning Vulkan Cube in C by Kristian Høgsberg
- Vulkan-sxs
- Google Android Samples
- Google Samples Currently just LunarG samples
- VKTS Samples (C++) Vulkan examples using VulKan ToolS (VKTS)
- The Stardust sample application The Stardust sample application uses the Vulkan graphics API to efficiently render a cloud of animated particles.
- C SDL2 Window
- Android PowerVR - requires registration.
- Vulkan Code to Clear the Screen
- A simple Vulkan Compute Example
- C++
- C#/F#/Visual Basic
- Haskell
- D
- Common Lisp
- Julia
- Rust
- Go
- C++ GPGPU lib
- Vulkan Quickreference (PDF)
- Vulkan Specification
- Khronous.org Resources
- Vulkan on Stackoverflow
- Vulkan on reddit
- Awsome Vulkan (Lots of Links)
- Vulkan Android API
- Vulkan GPU Info
This links in this section help you understand the GPU in detail
A Trip Through the Pipeline by Fabian Giesen
Render Hell 2.0 by Simon Trümpler
- Queue : A queue onto which you submit commands that the GPU reads and executes (asynchronously).
- Semaphore : A GPU-GPU synchronization object.
- Fence : A GPU-CPU synchronization object.
- Buffer : Linear data for use on the device.
- Image : Texture data (including dimensions & format) for use on the device.
- Sampler : A collection of state required for a shader to sample textures (format, filtering etc).
- Pipeline : A compiled collection of GPU state setting commands, shaders and other such data. (Almost) everything the GPU needs to get ready for rendering/compute work.
- PipelineCache : A cache used by the pipeline compilation process. It is used to avoid unnecessary recompilations and can be saved and restored to and from disk to speed up subsequent compilations (for instance, in subsequent runs of the application).
- Swapchain : A "ring buffer" of images offered by the platform's presentation engine (desktop compositors etc) on which the application can render and then submit for presentation.
- Pool : A fast memory allocator specifically designed for objects of some specific type (descriptors, command buffers etc).