diff --git a/src/common/rendering/vulkan/pipelines/vk_renderpass.cpp b/src/common/rendering/vulkan/pipelines/vk_renderpass.cpp index 66d08c363..f75b8504a 100644 --- a/src/common/rendering/vulkan/pipelines/vk_renderpass.cpp +++ b/src/common/rendering/vulkan/pipelines/vk_renderpass.cpp @@ -276,6 +276,7 @@ VkVertexFormat *VkRenderPassManager::GetVertexFormat(int index) VulkanPipelineLayout* VkRenderPassManager::GetPipelineLayout(bool levelmesh, int UserUniformSize) { + std::unique_lock lock(PipelineLayoutsMutex); auto &layout = PipelineLayouts[levelmesh][UserUniformSize]; if (layout) return layout.get(); diff --git a/src/common/rendering/vulkan/pipelines/vk_renderpass.h b/src/common/rendering/vulkan/pipelines/vk_renderpass.h index d477f175b..c12e8954f 100644 --- a/src/common/rendering/vulkan/pipelines/vk_renderpass.h +++ b/src/common/rendering/vulkan/pipelines/vk_renderpass.h @@ -11,6 +11,7 @@ #include #include #include +#include class VulkanRenderDevice; class ColorBlendAttachmentBuilder; @@ -183,6 +184,7 @@ private: VulkanRenderDevice* fb = nullptr; std::map> RenderPassSetup; + std::mutex PipelineLayoutsMutex; std::map> PipelineLayouts[2]; std::vector VertexFormats;