Graphics‎ > ‎Graphic API‎ > ‎

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

Reference

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

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



Vulkan: Bad Practices - 2020
Writing an efficient Vulkan renderer - 2020
Handling Device Orientation Efficiently in Vulkan With Pre-Rotation
Bringing HLSL Ray Tracing to Vulkan - 2020
Tips and Tricks: Vulkan Dos and Don’ts - 2020
optimising a aaa vulkan title on desktop - 2020
Vulkan Textures Unbound - 2020
LunarG releases GFXReconstruct, a new Vulkan Capture/Replay Tool, with SDK 1.2.141
SPIR-V Guide - 2020
Vulkan Mobile Best Practices: Frequently Asked Questions - Part 1 - 2020
Virtual machine for executing SPIR-V - 2020
Vulkan-Guide - 2020
ARM-software /vulkan_best_practice_for_mobile_developers - 2020
[Twitter] Low-Level Rendering API discussion
Robust pipeline cache serialization - 2019
Differences in memory management between Direct3D 12 and Vulkan - 2019
Vulkan Releases Unified Samples Repository - 2019
Vulkan Mobile Best Practices - Descriptor and Buffer Management - 2020
[Video] Optimizing Roblox: Vulkan Best Practices for Mobile Developers - 2020
Prefix sum on Vulkan - 2020
NVIDIA Vulkan Ray Tracing Tutorials - 2020
Vulkan Mobile Best Practices - Management of Command Buffers and Multi-Threaded Recording - 2020
New: Vulkan Device Generated Commands - 2020
Ray Tracing In Vulkan - 2020
Vulkan Best Practices: Frequently Asked Questions - Part 2 - 2020

Vulkan synchronisation and graphics-compute-graphics hazards: Part I
https://www.imgtec.com/blog/vulkan-synchronisation-and-graphics-compute-hazards-part-i/

Vulkan synchronisation and graphics-compute-graphics hazards: Part 2
https://www.imgtec.com/blog/vulkan-synchronisation-and-graphics-compute-graphics-hazards-part-2/

Fundamentals of the Vulkan Graphics API: Why Rendering a Triangle is Complicated
https://liamhinzman.com/blog/vulkan-fundamentals

Constant data in Vulkan
https://github.com/KhronosGroup/Vulkan-Samples/blob/master/samples/performance/constant_data/constant_data_tutorial.md

Introduction to the Vulkan Computer Graphics API
http://web.engr.oregonstate.edu/~mjb/vulkan/

Jet Set Vulkan : Reflecting on the move to Vulkan
https://developer.samsung.com/galaxy-gamedev/gamedev-blog/infinitejet.html