I’m sure at some stage in your development cycle while using the Vulkan graphics API you will crash either in the Vulkan Loader or the Vulkan ValidationLayer. As frustrating or cryptic as this might be, there are tools to peek behind the curtain and see what has gone wrong.
Firstly, I should distinguish between the ‘loader’ and the ‘validation layer‘. The first loads the function pointers from the driver for the Vulkan API calls to communicate to the graphics hardware; acting as a simple intermediary. On Windows, this is the vulkan-1.dll, which is found in the C:\Windows\System32 folder, and the application will link against this via the vulkan-1.lib provided in the Vulkan SDK. The second sits in between your application and vulkan-1.dll and injects certain checks to validate that the Vulkan calls are compliant with the Vulkan specification. Located in the Vulkan SDK, VkLayer_khronos_validation.dll is dynamics loaded when requested by the system or application to work its magic.
Source and Symbols?
Ok, the details! Here’s where to find the source and the symbols for both the loader and the validation layer.
Loader: The vulkan-1.pdb can be obtained from the Vulkan Runtime download on the LunarG Vulkan SDK download page. The source can be obtained from KhronosGroup’s GitHub repo: Vulkan-Loader. When downloading both the source and symbols, you must ensure the versions match the vulkan-1.dll binary (this can be easily checked in the Modules window of Visual Studio while debugging) such that if the vulkan-1.dll binary is 1.3.204.0, then the Runtime/Loader must also be 1.3.204. You can select the correct version from the branch dropdown menu on GitHub, and the correct version from the LunarG Vulkan SDK download page.
Validation Layer: The VkLayer_khronos_validation.pdb is already located in the /Bin folder of the Vulkan SDK - lucky us! The source can be obtained from KhronosGroup’s GitHub repo: Vulkan-ValidationLayers. When downloading the source, you must ensure the version matches the SDK i.e. if the SDK is 1.3.204.0, then the ValidationLayer must also be 1.3.204. You can select the correct version from the branch dropdown menu on GitHub.