From 7dd16c66b901c4ed9683ccd655d60d9863019553 Mon Sep 17 00:00:00 2001 From: Georg Hagen Date: Tue, 28 May 2024 22:18:33 +0200 Subject: [PATCH] Fix multithreaded rendering --- openVulkanoCpp/Vulkan/Resources/ResourceManager.cpp | 1 + openVulkanoCpp/Vulkan/Scene/VulkanShader.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/openVulkanoCpp/Vulkan/Resources/ResourceManager.cpp b/openVulkanoCpp/Vulkan/Resources/ResourceManager.cpp index 5d1b409..2e1a04f 100644 --- a/openVulkanoCpp/Vulkan/Resources/ResourceManager.cpp +++ b/openVulkanoCpp/Vulkan/Resources/ResourceManager.cpp @@ -345,6 +345,7 @@ namespace OpenVulkano::Vulkan VulkanShader* ResourceManager::CreateShader(Scene::Shader* shader) { const std::unique_lock lock(mutex); + if (shader->renderShader) return static_cast(shader->renderShader); VulkanShader* vkShader = new VulkanShader(); vkShader->Init(context, shader, this); shaders.emplace_back(vkShader); diff --git a/openVulkanoCpp/Vulkan/Scene/VulkanShader.cpp b/openVulkanoCpp/Vulkan/Scene/VulkanShader.cpp index 11870f3..88d2d1a 100644 --- a/openVulkanoCpp/Vulkan/Scene/VulkanShader.cpp +++ b/openVulkanoCpp/Vulkan/Scene/VulkanShader.cpp @@ -33,7 +33,6 @@ namespace OpenVulkano::Vulkan this->shader = shader; this->owner = owner; this->context = context; - shader->renderShader = this; shaderModules.reserve(shader->shaderPrograms.size()); shaderStageCreateInfo.resize(shader->shaderPrograms.size()); int i = 0; @@ -45,6 +44,7 @@ namespace OpenVulkano::Vulkan i++; } BuildPipeline(); + shader->renderShader = this; } void VulkanShader::BuildPipeline()