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!

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 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.

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

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.

memorymanagement_vulkan_directx12

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:

PDF
The most common Vulkan mistakes
PDF

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.

Sample - "HelloVulkan"

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!

AMD GPUOpen Vulkan Memory Allocator

VMA is our single-header, MIT-licensed, C++ library for easily and efficiently managing memory allocation for your Vulkan® games and applications.

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

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.

AMD Radeon GPU Profiler

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

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.

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.

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.

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.

Latest Vulkan news on GPUOpen

Developing with DirectX®12? We have a similar page for DirectX®12 developers!

DirectX 12

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!

Explore more