Professional Documents
Culture Documents
Tips For Vulkan Development
Tips For Vulkan Development
agenda 4. Multithreading
5. Multithreading - synchronisation
6. Re-use pipeline
7. Minimise render-pass
8. Group descriptor sets by frequency
0. Where does Vulkan come from ?
0. Where does Vulkan come from ?
Old pipeline (OpenGL 1.0)
0. Where does Vulkan come from ?
OpenGL 4.0 pipeline
0. Where does Vulkan come from ?
Scissors /
Descriptor sets layout
buffers
blending
buffers
Pipeline
buffers
Memory
Type 0
Shader module
Descriptor sets
Memory
Framebuffer Type 1
Render pass Command
buffer
Depth buffer
Color buffer
Queue(s)
Memory
Graphic
Type 2
Hardware
Create them outside the critical path (during your scene loading)
Pipeline have a “VkPipelineCache”, use it, and even cache them on your FS
Triangle 1
then
Triangle 2
then
then Tri 2
Tri 2
Tri 3
Triangle 3
Pass 1 Pass 2
Tile 1, Tile 1,
Pass 1 Pass 2
Tile 2, Tile 2,
Pass 1 Pass 2
Shader code
Shader code
layout(set=0,binding=0) uniform { ... } set0;
layout(set=1,binding=0) uniform { ... } set1;
layout(set=2,binding=0) uniform { ... } set2;
[...]
Shader code
Shader code
layout(set=0,binding=0) uniform { ... } set0; // “Scene/Global” data
layout(set=1,binding=0) uniform { ... } set1; // Per mesh data
layout(set=2,binding=0) uniform { ... } set2; // Per Instance data
[...]