So it's looking like I'll have to start trying to toy around with vulkan and at least get things working to where I can understand it at a high level. I was wondering if there was any general advice, good tutorials/information you've found, or things to watch out (any major gotchas) for when starting with it, based on your experience.
I did some Vulkan work during the pandemic (see here) and mastered the basics.
I learned from vulkan-tutorial.com, which is the most popular one around. It's in modern C++ and has complexity issues -- here are the gotchas you should be aware of. There's currently no better place to learn the API though.
What I did was write all the tutorial examples in vanilla C without the Vulkan SDK. You can completely avoid the SDK by using this excellent single-header Vulkan loader.
Joey de Vries of LearnOpenGL fame will eventually write learnvulkan.com. Given his track record, that website will become a better resource, eventually.
Hope this helps!
Thanks for your input. After skimming through the vulkan-tutorial.com website it states that the SDK makes debugging easier and without it you can have a lot more driver crashes and situations where you do not know why things aren't working. Do you experience difficulty with this? Do you think the SDK would be helpful in this area? As far as I can tell you can use the SDK with plain c as well, even though the tutorial website uses c++ concepts.
SDK gives prebuilt/ready to use validation layer binary. Which is very very useful. You should always use API validation layer during development - this applies to other GPU api like OpenGL and D3D11/12 too. They help a lot for you to diagnose and debug issues related to wrong api usage.
Vulkan SDK also gives glsl to spirv compiler. So you can precompile all shaders you ship in your application. Technically you can build it from source yourself, or even ship with your application, but meh.. why bother if they already give you binary to use.
Also, to make sure I'm understanding everything correctly:
Within the SDK if I look into the includes folder it lists headers for the extra stuff like the shader compiler (dxc) and spirv conversion (spirv_cross) but the actual vulkan specification headers are found in the vulkan/vk_video folders. After including the vulkan headers in my app, I make sure to link to the vulkan-1.lib found within the SDK's lib folder. This lib is an import library that knows where the standard installs of the vulkan-1.dll's are (which are your graphics card's vulkan drivers that have been downloaded at some point). Depending on the vulkan version your drivers support, you can use certain vulkan extensions which are called through the vulkan headers and loaded via the vulkan-1.lib file (assuming you're using the same version headers/.lib). If this understanding is correct, where does the vulkan loader come into play? Is that a part of the vulkan-1.lib file?