On Linux, If I call vkCreateGraphicsPipelines with a pipeline cache, and have empty descriptor set layouts associated with the pipeline layout, the call fails with a SIGSEGV inside libnvidia-glcore. The empty descriptor sets are 0, 1, 2. It runs correctly without generating warnings when pipeline caches are disabled. With pipeline caches enabled, removing the empty descriptors set layouts, and assigning descriptor set #0 as the only descriptor set fixes the crash.
For completeness, this is how I initialize the empty descriptor set layouts:
VkDescriptorSetLayout zpass_shd_layout[4];
unsigned int i;
for (i = 0; i < 3; i++) {
VkDescriptorSetLayoutCreateInfo desc_layout_info = {0};
desc_layout_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
desc_layout_info.pNext = NULL;
desc_layout_info.bindingCount = 0;
desc_layout_info.pBindings = NULL;
VkResult result = vkCreateDescriptorSetLayout(device,
&desc_layout_info, NULL, &zpass_shd_layout[i));
}
Debugging with GDB produces this output:
0x00007fffeffe7ec9 in ?? () from /lib/x86_64-linux-gnu/libnvidia-glcore.so.470.57.02