Doing some profiling, and skimming the header file, it appears that you always pass VK_NULL_HANDLE to vkCreateComputePipelines. This results in slow performance when initializing the Vulkan backend (you're caching the generated SPIR-V bytecode in saveApplicationString, but not the GPU-native binary generated within the Vulkan driver).
Please allow users to supply a VkPipelineCache during initialization, so that the native binaries can be reused.
Doing some profiling, and skimming the header file, it appears that you always pass VK_NULL_HANDLE to vkCreateComputePipelines. This results in slow performance when initializing the Vulkan backend (you're caching the generated SPIR-V bytecode in saveApplicationString, but not the GPU-native binary generated within the Vulkan driver).
Please allow users to supply a VkPipelineCache during initialization, so that the native binaries can be reused.