Vulkan

There where no volcanic eruptions at long peaks in 2008

Vulkan is a low level API like DirectX12 and Metal. It is made by Khronos that also handle OpenGL.

The Basic Stuff

Vulkan is a C API and it use the prefix vk on it's functions. Constants begin with VK_ and use all capital letters. Vulkan objects are created with vkCreate* and take a Vk*CreateInfo structure with the parameters to create the object. The objects are destroyed with a vkDestroy* command. The create commands also takes a pAllocator structure that can be set to non-NULL if the application wish to handle host side memory allocation for objects.

Guide

    • Startup - How to startup vulkan and create all the basic objects needed.
      • Layers - What layers exist and can be helpful in development.
      • Extensions - What extensions exist.
    • Memory - How to get memory on the device.
    • Assets - All the type of things you need to create to put textures and meshes in.
    • Binding - Select what buffers or textures to use.
    • Command - How to create and use the command buffers.
    • Drawing - Use draw command in the command buffer.
    • Synchronize - Synchronize things.
    • Compute - Computer buffers and commands.
    • SPIR-V -

Tutorials

Links

IHV Blogs

Larger Code Examples

Games/Engines

Porting your engine to Vulkan or DX12 - 2018 : Video

Efficient use of Vulkan on UE4 Mobile - 2018

Vulkanised! Vulkanising Mad Max (notes) - 2017

Bringing Galaxy on Fire 3 to Vulkan - 2017 Part1, Part2, Part3, Part4 and Part5.

Halcyon + Vulkan - 2018

Videos

GDC 2018 - Getting explicit: How Hard is Vulkan really? - 2018

GDC 2018 - What's New in Vulkan - 2018

2018 Vulkanised - 2018

Vulkan 2017 GDC - 2017

2017 Vancouver DevU Vulkan - 2017

Reference

How Magnum does GFX API enum mapping - 2019

niagara - A Vulkan renderer written from scratch on stream - 2018

V-EZ - 2018

Introduction to the Vulkan Graphics API - 2018

A Tour of sokol_gfx.h - 2017

I Am Graphics And So Can You - 2017

vkFX: Effect’ive Approach for Vulkan API – nvidia - 2017

Improving Vulkan Breakout - Comparing Uniform Data Transfer Methods In Vulkan - 2017

Migrating from OpenGL to Vulkan - 2016

Vulkan Graphics - 2016

Vulkan in 30 minutes - 2016

Vulkan at FOSDEM - 2016

Vulkan Webinars

1: Scaling to multiple threads - Youtube / Blog - 2015

2: High efficiency on mobile - Youtube / Blog - 2015

3: Scaling to multiple threads - Youtube / Blog - 2015

=== Raytrace

Ray Tracing In Vulkan - 2020

NVIDIA Vulkan Ray Tracing Tutorials - 2020

Bringing HLSL Ray Tracing to Vulkan - 2020

Vulkan NV Ray Tracing with HLSL

=== SpirV

SPIR-V Guide - 2020

Virtual machine for executing SPIR-V - 2020

=== Binding

Vulkan sparse binding - a quick overview

=== Memory

There is a way to query GPU memory usage in Vulkan - use DXGI

Differences in memory management between Direct3D 12 and Vulkan - 2019

=== Assets

Robust pipeline cache serialization - 2019

Vulkan Mobile Best Practices: Frequently Asked Questions - Part 1 - 2020

Vulkan-Guide - 2020

ARM-software /vulkan_best_practice_for_mobile_developers - 2020

Writing an efficient Vulkan renderer - 2020

Vulkan Mobile Best Practices - Descriptor and Buffer Management - 2020

[Video] Optimizing Roblox: Vulkan Best Practices for Mobile Developers - 2020

Prefix sum on Vulkan - 2020

Vulkan Mobile Best Practices - Management of Command Buffers and Multi-Threaded Recording - 2020

New: Vulkan Device Generated Commands - 2020

Vulkan Best Practices: Frequently Asked Questions - Part 2 - 2020

Tips and Tricks: Vulkan Dos and Don’ts - 2020

optimising a aaa vulkan title on desktop - 2020

Vulkan Textures Unbound - 2020

Vulkan: Bad Practices - 2020

Writing an efficient Vulkan renderer - 2020

Handling Device Orientation Efficiently in Vulkan With Pre-Rotation - 2020

Guide to Vulkan SynchronizationValidation - 2020

Constant data in Vulkan - 2020

Introduction to the Vulkan Computer Graphics API - 2020

Intro to gfx-hal - 2020 • Drawing a triangle, Push constants, Vertex buffers

Vulkan: Long way to access data - 2019

Flax Facts #25 – Vulkan - 2019

Vulkan Releases Unified Samples Repository - 2019

How to design API of a library for Vulkan? - 2019

Flipping the Vulkan viewport - 2019

A tour of Granite’s Vulkan backend – Part 1, part 2, part 3, part 4 and part 5. Part 6 - 2019

optimising a aaa vulkan title on desktop - 2019

Thoughts on graphics APIs and libraries - 2019

Turn your Frame Rate up to 60 with Vulkan on the Nintendo Switch: – Reboot Develop Blue 2019

Vulkan: Long way to access data - 2019

Shader games with Vulkan - 2019

World War Z – Using Vulkan® to Tame the Zombie Swarm - 2019

Understanding Vulkan objects - 2017

Arm Releases Vulkan Best Practices for Mobile Developers

Debugging VK_ERROR_DEVICE_LOST with Nvidia Device Diagnostics

Multi-GPU Rendering with Vulkan API

Tips and Tricks: Vulkan Dos and Don’ts

Pipeline Management

GPU-Assisted Validation

Lava Vulkan Utilities

Optimising a AAA Vulkan Title on Desktop

Make Your Game Friendly for Graphics Debugging and Optimization

Triangles Are Precious – Let’s Treat Them with Care

LunarG releases GFXReconstruct, a new Vulkan Capture/Replay Tool, with SDK 1.2.141

[Twitter] Low-Level Rendering API discussion

Vulkan synchronisation and graphics-compute-graphics hazards: Part I & Part 2

Fundamentals of the Vulkan Graphics API: Why Rendering a Triangle is Complicated

Jet Set Vulkan : Reflecting on the move to Vulkan