Developing Vulkan® applications
Vulkan is developed by the Khronos Group, and provides an open standard low-level graphics API for creating graphics applications.
Here on GPUOpen, we not only provide tools and libraries to help you with the development of your Vulkan application, but we’ve produced quite a few detailed blogs and videos to support you along the way too.
Jump to the section you need:
Videos
Our engineers regularly present at industry conferences on topics relating to Vulkan.
These links to YouTube videos will usually provide an opportunity to download the slides shown as well.
Don’t miss our other videos about Vulkan and more available here on GPUOpen!
Memory Management in Vulkan® – YouTube link
This talk by AMD’s Ste Tovey discusses memory management with Vulkan® at Vulkanised 2018.
Optimising a AAA Vulkan® Title on Desktop
This talk by AMD’s Lou Kramer discusses optimising AAA Vulkan® titles on desktop.
Porting Your Engine to Vulkan® or DirectX®12
This talk by AMD’s Adam Sawicki at Digital Dragons in 2018 discusses how to port your engine to Vulkan® or DirectX®12.
Blog posts
We have many blog posts covering Vulkan, but those chosen below are a handy introduction to some of the important concepts.
Vulkan® Renderpasses
Renderpasses are objects designed to allow an application to communicate the high-level structure of a frame to the driver.
Using the Vulkan® Validation Layers
Vulkan validation layers make it easier to catch any mistakes, provide useful information beyond basic errors and minimize portability issues.
Using Vulkan® Device Memory
This post serves as a guide on how to best use the various Memory Heaps & Memory Types exposed in Vulkan on AMD drivers, starting with some high-level tips.
Vulkan® Barriers Explained
Barriers control resource and command synchronisation in Vulkan applications and are critical to performance and correctness. Learn more here.
Understanding Vulkan® Objects
An important part of learning the Vulkan® API is to understand what types of objects are defined by it, what they represent and how they relate to each other.
Decoding Radeon™ Vulkan® versions
A guide to using our machine-readable mapping that you can integrate into your software for decoding Radeon™ Vulkan® versions.
Vulkan’s Best Practice layer now has AMD-specific checks
Introducing AMD checks for the Vulkan® Best Practice validation layer! Find out more about how it now incorporates many of our performance suggestions.
For more of our blog posts on Vulkan, see further down.
Presentations
These presentations are a great place to start for those new to Vulkan.
Concurrency Model in Explicit Graphics APIs
Dr. Matthäus G. Chajdas and Dominik Baumeister give a (slightly) more in-depth look for people interested in graphics programming. They prepare the mental model for explicit graphics APIs such as DirectX12 and Vulkan.
Memory Management in Vulkan and DX12
Adam Sawicki introduces memory management in Vulkan and DirectX 12 with a detailed presentation on the different memory types, gives some tips and tricks, and discusses the libraries involved.
Don’t miss more presentations on Vulkan and other topics available on GPUOpen!
For more advanced Vulkan developers, take a look here:
Radeon Vulkan version table
We regularly update a table (including a machine-readable XML version) which you can integrate into your application for decoding the version of Vulkan being used in a particular AMD Software: Adrenalin Edition driver.
Decoding Radeon™ Vulkan® versions
A guide to using our machine-readable mapping that you can integrate into your software for decoding Radeon™ Vulkan® versions.
Radeon™ Vulkan® Drivers Version Table
A handy table listing the equivalent versions of Vulkan®, Windows Store, and internal drivers for each Radeon Software Adrenalin driver release.
Sample - "HelloVulkan"
HelloVulkan Introductory Vulkan® Sample
HelloVulkan is a small, introductory Vulkan® “Hello Triangle” sample which shows how to set up a window, set up a Vulkan context, and render a triangle.
Ready to put things into practice? Our “HelloVulkan” sample is a great way to get hands-on and see how everything works.
We have more Vulkan samples further down the page too.
Libraries and tools
If you’re looking for some welcome help with allocating and managing memory, our critically acclaimed and widely used Vulkan Memory Allocator (VMA) library, now available as an optional add-on with the Vulkan SDK, is exactly what you need!
Our very popular Radeon Developer Tool Suite is a package containing several tools to help you analyze and optimize your Vulkan application, and now includes ray tracing analysis.
Radeon™ Raytracing Analyzer (RRA) is a tool which allows you to investigate the performance of your raytracing applications and highlight potential bottlenecks.
Radeon™ Memory Visualizer (RMV) is a tool to allow you to gain a deep understanding of how your application uses memory for graphics resources.
RGP gives you unprecedented, in-depth access to a GPU. Easily analyze graphics, async compute usage, event timing, pipeline stalls, barriers, bottlenecks, and other performance inefficiencies.
Radeon GPU Analyzer is an offline compiler and performance analysis tool for DirectX®, Vulkan®, SPIR-V™, OpenGL® and OpenCL™.
Don’t forget, you can also find Vulkan support with our FidelityFX effects. We also have other tools and SDKs which support Vulkan.
Ready to learn more?
Pay a visit to our dedicated Vulkan page here on GPUOpen. And don’t forget to visit vulkan.org for lots more information.
Other GPUOpen blog posts related to Vulkan
GPU Work Graphs mesh nodes now in Vulkan®
We’ve added mesh nodes to our Vulkan® experimental extension, VK_AMDX_shader_enqueue.
Announcing Vulkan Memory Allocator 3.0.0 and Direct3D 12 Memory Allocator 2.0.0
Find out more about the latest releases of VMA and D3DMA – our easy-to-integrate memory allocation libraries for Vulkan® and Direct3D® 12.
Radeon™ GPU Profiler v1.10 introduces GPU cache counters, Vulkan® ray tracing, and more
This latest release adds support for GPU cache counters, Vulkan® ray tracing, the latest RDNA™ 2 GPUs, and more.
Porting Detroit: Become Human from PlayStation® 4 to PC – Part 3
The final part of this joint series with Quantic Dream discusses shader scalarization, async compute, multithreaded render lists, memory management using our Vulkan Memory Allocator (VMA), and much more.
Porting Detroit: Become Human from PlayStation® 4 to PC – Part 2
Part 2 of this joint post between Quantic Dream and AMD looks at non-uniform resource indexing on PC and for AMD cards specifically.
Porting Detroit: Become Human from PlayStation® 4 to PC – Part 1
Porting the PS4® game Detroit: Become Human to PC presented some interesting challenges. This first part of a joint collaboration from engineers at Quantic Dream and AMD discusses the decision to use Vulkan® and talks shader pipelines and descriptors.
Reducing Vulkan® API call overhead
This guest post, by Arseny Kapoulkine from Roblox, looks at the costs associated with calling various Vulkan functions tens or hundreds of thousands of times per frame, and ways to bring them down.
Stable Barycentric Coordinates
The AMD GCN Vulkan extensions allow developers to get access to the barycentric coordinates at the fragment-shader level.
Vulkan® and DOOM
This post takes a look at the interesting bits of helping id Software with their DOOM Vulkan effort, from the perspective of AMD’s Game Engineering Team.
AMD Driver Symbol Server
How to set up the AMD Driver Symbol Server in Visual Studio.
GCN Shader Extensions for Direct3D® and Vulkan®
One of the mandates of GPUOpen is to give developers better access to the hardware, and this post details extensions for Vulkan and Direct3D12 that expose additional GCN features to developers.
Fast Compaction with mbcnt
With shader extensions, we provide access to a much better tool to get compaction done: GCN provides a special op-code for compaction within a wavefront.
Unlock the Rasterizer with Out-of-Order Rasterization
GCN hardware supports a special out-of-order rasterization mode which relaxes the ordering guarantee, and allows fragments to be produced out-of-order.
Other GPUOpen samples that use Vulkan
glTFSample Cauldron Sample Project
This sample demonstrates how to use most of Cauldron’s features. It is also a useful reference for getting started with developing your own samples and prototypes.
Vulkan® mbcnt Sample
This sample shows how to use the AMD_shader_ballot extension and mbcnt to perform a fast reduction within a wavefront.
Vulkan® OoORasterization
The Vulkan™ out-of-order rasterization sample shows how to use the out-of-order rasterization extension.
Latest Vulkan news on GPUOpen
Vulkan Memory Allocator v3.1, with many fixes and improvements, is out now!
VMA V3.1 gathers fixes and improvements, mostly GitHub issues/PRs, including improved compatibility with various compilers and GPUs.
AMF v1.4.33 provides native DX12 encoding support, public Vulkan Khronos decoding extensions + more
In addition, AMF on Linux can now be used with AMD Pro Vulkan and experimentally with RADV drivers. Download Advanced Media Framework now!
Announcing GPU Work Graphs in Vulkan®
AMD is providing an experimental AMD extension to access GPU Work Graphs in Vulkan. Check out this post for usage examples and resources.
Developing with DirectX®12? We have a similar page for DirectX®12 developers!
Developing DirectX® applications
Developing with DirectX? This page shares our DirectX blog posts, presentations, samples, and more. Let us help you create and optimize your DirectX applications!