vk: ignore pipeline cache if loading fails

This commit is contained in:
Flyinghead 2022-04-27 14:30:03 +02:00
parent fc9e1e401b
commit 990a4ad583
1 changed files with 8 additions and 2 deletions

View File

@ -458,10 +458,16 @@ bool VulkanContext::InitDevice()
if (std::fread(cacheData, 1, cacheSize, f) != cacheSize) if (std::fread(cacheData, 1, cacheSize, f) != cacheSize)
cacheSize = 0; cacheSize = 0;
std::fclose(f); std::fclose(f);
try {
pipelineCache = device->createPipelineCacheUnique(vk::PipelineCacheCreateInfo(vk::PipelineCacheCreateFlags(), cacheSize, cacheData)); pipelineCache = device->createPipelineCacheUnique(vk::PipelineCacheCreateInfo(vk::PipelineCacheCreateFlags(), cacheSize, cacheData));
delete [] cacheData;
INFO_LOG(RENDERER, "Vulkan pipeline cache loaded from %s: %zd bytes", cachePath.c_str(), cacheSize); INFO_LOG(RENDERER, "Vulkan pipeline cache loaded from %s: %zd bytes", cachePath.c_str(), cacheSize);
} }
catch (const vk::SystemError& err) {
WARN_LOG(RENDERER, "Error loading pipeline cache: %s", err.what());
pipelineCache = device->createPipelineCacheUnique(vk::PipelineCacheCreateInfo());
}
delete [] cacheData;
}
allocator.Init(physicalDevice, *device, *instance); allocator.Init(physicalDevice, *device, *instance);
shaderManager = std::unique_ptr<ShaderManager>(new ShaderManager()); shaderManager = std::unique_ptr<ShaderManager>(new ShaderManager());