From 74aea536f3c3dc5aabba61d4b54cc864a2b2a320 Mon Sep 17 00:00:00 2001 From: Tobias Frisch <tfrisch@uni-koblenz.de> Date: Mon, 10 Oct 2022 13:26:49 +0200 Subject: [PATCH] Add fix for binding usage in multiple stages Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de> --- src/vkcv/ShaderProgram.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/vkcv/ShaderProgram.cpp b/src/vkcv/ShaderProgram.cpp index 6925d40c..508f4de5 100644 --- a/src/vkcv/ShaderProgram.cpp +++ b/src/vkcv/ShaderProgram.cpp @@ -1,5 +1,5 @@ /** - * @authors Simeon Hermann, Leonie Franken + * @authors Simeon Hermann, Leonie Franken, Tobias Frisch * @file src/vkcv/ShaderProgram.cpp * @brief ShaderProgram class to handle and prepare the shader stages for a graphics pipeline */ @@ -165,6 +165,8 @@ namespace vkcv { auto insertionResult = m_DescriptorSets [setID].insert(std::make_pair(bindingID, binding)); if (!insertionResult.second) { + insertionResult.first->second.shaderStages |= shaderStage; + vkcv_log(LogLevel::WARNING, "Attempting to overwrite already existing binding %u at set ID %u.", bindingID, setID); @@ -197,6 +199,8 @@ namespace vkcv { auto insertionResult = m_DescriptorSets [setID].insert(std::make_pair(bindingID, binding)); if (!insertionResult.second) { + insertionResult.first->second.shaderStages |= shaderStage; + vkcv_log(LogLevel::WARNING, "Attempting to overwrite already existing binding %u at set ID %u.", bindingID, setID); @@ -228,6 +232,8 @@ namespace vkcv { auto insertionResult = m_DescriptorSets [setID].insert(std::make_pair(bindingID, binding)); if (!insertionResult.second) { + insertionResult.first->second.shaderStages |= shaderStage; + vkcv_log(LogLevel::WARNING, "Attempting to overwrite already existing binding %u at set ID %u.", bindingID, setID); @@ -260,6 +266,8 @@ namespace vkcv { auto insertionResult = m_DescriptorSets [setID].insert(std::make_pair(bindingID, binding)); if (!insertionResult.second) { + insertionResult.first->second.shaderStages |= shaderStage; + vkcv_log(LogLevel::WARNING, "Attempting to overwrite already existing binding %u at set ID %u.", bindingID, setID); @@ -292,6 +300,8 @@ namespace vkcv { auto insertionResult = m_DescriptorSets [setID].insert(std::make_pair(bindingID, binding)); if (!insertionResult.second) { + insertionResult.first->second.shaderStages |= shaderStage; + vkcv_log(LogLevel::WARNING, "Attempting to overwrite already existing binding %u at set ID %u.", bindingID, setID); @@ -315,6 +325,8 @@ namespace vkcv { auto insertionResult = m_DescriptorSets [setID].insert(std::make_pair(bindingID, binding)); if (!insertionResult.second) { + insertionResult.first->second.shaderStages |= shaderStage; + vkcv_log(LogLevel::WARNING, "Attempting to overwrite already existing binding %u at set ID %u.", bindingID, setID); @@ -343,3 +355,4 @@ namespace vkcv { return m_pushConstantsSize; } } // namespace vkcv + -- GitLab