What you'll learn:
- Install Vulkan library and use it in a C project
- Create Makefile for a project
- Enumerate GPUs in the system
- Allocate a GPU and its resources
- Prepare and submit a command buffer to a queue in the GPU
- Allocate a memory in the GPU and read/write to it.
- Write a program for GPU (i.e. shader) and run it in thousands instances at once.
- Generate a fractal image in the GPU
The course shows the simplest possible way to create a project utilizing Vulkan library to run a compute shader: From Makefile to the program performing very fast parallel calculations in GPU. Don't expect much theory, the course is intended for developers who prefer to see the code to learn "how to ...".
Vulkan is a cross plattform 3D graphics and computing library, successor of OpenGL. It was first released in 2016 and it is available on most of modern operating systems today.
All functions and operations with Vulkan library are demonstrated using C language, in a very understandable way, suitable also for developers specialized in other languages. To fully understand the course, some experience in programming and using static libraries is required though.
The course tries to lead you to visible results as soon as possible. Vulkan library usually requires to write hundreds (up to thousand) of lines to get first results and to understand what is happening inside, but here, the project grows while keeping your attention to all the dependencies.
The course describes how to:
Read properties and limits of the graphics adapters in the system
Allocate the GPUlogical device and its execution queues
Allocate the GPUmemory, read and write data from/to it
create a command buffer, records actions in it and send it to the GPUqueue for execution
Implement data processing in a shader and execute in parallel
Generate a fractal image in the GPU
Compare results of GPUand CPUcomputing
Compare the speed of GPUand CPUcomputing
At the end, you'll be ready to write and execute your own compute shader using Vulkan library. Or, it gives a very good start to implement 3D graphics in Vulkan since you will already understand the principle and basics of Vulkan API.