If I understand correctly, vkMergePipelineCaches is useful because it allows us to merge caches created from multiple threads into a single one, and then save that on disk. However, I fail to see how to create these multiple caches once the application is restarted. All I have on disk is the merged cache, so do I need to point to that same big cache on each vkCreatePipelineCache call (one per thread)?

If I'm supposed to save each cache separately, then what is the purpose of vkMergePipelineCaches?