Vulkan & Rust using Ash binding tutorial for beginners 1
Channel: Codotaku
Date: 2023-01-27

Vulkan & Rust using Ash binding tutorial for beginners 1
In this video, we have successfully created the simplest fully functional vulkan program from start to finish.

Am using:
- Language: Rust
- Libraries: ash, gpu_allocator, bytemuck, anyhow, image
- OS: Windows 11
- IDE: vscode

This channel is AD-free and will always be AD-free, it's purely for educational purposes in the name of the one and only God and the name of knowledge and science.

This video is Creative Commons, you're free to use all of it or part of it for educational purposes without any permissions as long as you mention my channel's name or put a link to this video as a reference.

I'm a Vulkan beginner too, but my knowledge and videos are based on experience, research, trial, and error. I believe in teaching a subject while I am a beginner because a beginner won't skip details and will explain the subject in a more beginner-friendly way than a professional at the cost of potential loss of accuracy and rigor. the struggle of learning is still fresh on a beginner's mind. Finally am learning more by teaching and am learning better code and asking more questions because I know someone will read my code and watch my video : )
TLDR: A beginner understands beginners more than an expert and teaching is a good learning method.

Discord server:
https://discord.gg/mxqM4hf

Ash binding:
https://github.com/ash-rs/ash

Vulkano high level wrapper over ash binding:
https://github.com/vulkano-rs/vulkano

Gpu allocator:
https://github.com/Traverse-Research/gpu-allocator

Vulkan Caps Viewer:
https://vulkan.gpuinfo.org/download.php

Vulkan GPU Database:
https://vulkan.gpuinfo.org/

GitHub repo:
https://github.com/CodesOtakuYT/codotaku_ash_tutorial

GitHub commit (repo):
https://github.com/CodesOtakuYT/codotaku_ash_tutorial/tree/aea69c7d4d7e236de15f1b83051277ff8cf3a810

▬ Contents of this video  ▬▬▬▬▬▬▬▬▬▬
00:00 Rust & Vulkan crates
05:00 Ash entry
8:15 anyhow crate
11:00 Instance
19:20 Physical device
25:45 Device
33:00 Validation, vkconfig and vkcube
35:30 VulkanCapsViewer and Vulkan Database
40:30 Queue families and queues
1:02:00 gpu-allocator crate
1:04:55 Command pool
1:12:00 Command buffer
1:16:30 Buffer
1:39:20 Record command buffer
1:49:00 Submit command buffer
1:55:30 Fence
1:57:00 Read buffer from Host (CPU)
2:02:00 Drop the allocator before destroying device
2:07:40 Reading per u32 instead of u8
2:10:40 bytemuck crate
2:14:00 Saving buffer as an image using image crate
2:21:00 Use TRANSFER_DST instead of UNIFORM_BUFFER for optimal performance
2:22:40 u32 color bit manipulation
2:26:50 std::env::args
2:32:37 Testing our little program
2:34:10 Release build
2:35:50 Measuring time of GPU and saving PNG image