From 873c6cb97fd55f816fc4b92376a82b04fc333ec4 Mon Sep 17 00:00:00 2001 From: Artur Wasmut <awasmut@uni-koblenz.de> Date: Tue, 7 Sep 2021 13:14:57 +0200 Subject: [PATCH] [#105] set descriptor count properly. --- include/vkcv/DescriptorConfig.hpp | 8 ---- projects/bindless_textures/src/main.cpp | 8 +++- src/vkcv/DescriptorConfig.cpp | 12 ------ src/vkcv/ShaderProgram.cpp | 56 ++++++++++++------------- 4 files changed, 32 insertions(+), 52 deletions(-) diff --git a/include/vkcv/DescriptorConfig.hpp b/include/vkcv/DescriptorConfig.hpp index 12d57ea3..905ff679 100644 --- a/include/vkcv/DescriptorConfig.hpp +++ b/include/vkcv/DescriptorConfig.hpp @@ -58,14 +58,6 @@ namespace vkcv */ struct DescriptorBinding { - DescriptorBinding( - uint32_t bindingID, - DescriptorType descriptorType, - uint32_t descriptorCount, - ShaderStage shaderStages, - bool variableCount = false - ) noexcept; - uint32_t bindingID; DescriptorType descriptorType; uint32_t descriptorCount; diff --git a/projects/bindless_textures/src/main.cpp b/projects/bindless_textures/src/main.cpp index b340cba8..789557bf 100644 --- a/projects/bindless_textures/src/main.cpp +++ b/projects/bindless_textures/src/main.cpp @@ -154,8 +154,12 @@ int main(int argc, const char** argv) { const vkcv::VertexLayout firstMeshLayout (bindings); - std::unordered_map<uint32_t, vkcv::DescriptorBinding> descriptorBindings = firstMeshProgram.getReflectedDescriptors().at(0); - vkcv::DescriptorSetLayoutHandle descriptorSetLayout = core.createDescriptorSetLayout(descriptorBindings); + const std::unordered_map<uint32_t, vkcv::DescriptorBinding> &descriptorBindings = firstMeshProgram.getReflectedDescriptors().at(0); + + std::unordered_map<uint32_t, vkcv::DescriptorBinding> adjustedBindings = descriptorBindings; + adjustedBindings[1].descriptorCount = 5; + + vkcv::DescriptorSetLayoutHandle descriptorSetLayout = core.createDescriptorSetLayout(adjustedBindings); vkcv::DescriptorSetHandle descriptorSet = core.createDescriptorSet(descriptorSetLayout); const vkcv::PipelineConfig firstMeshPipelineConfig { diff --git a/src/vkcv/DescriptorConfig.cpp b/src/vkcv/DescriptorConfig.cpp index 78a08ed1..15bb05fd 100644 --- a/src/vkcv/DescriptorConfig.cpp +++ b/src/vkcv/DescriptorConfig.cpp @@ -2,18 +2,6 @@ namespace vkcv { - DescriptorBinding::DescriptorBinding( - uint32_t bindingID, - DescriptorType descriptorType, - uint32_t descriptorCount, - ShaderStage shaderStages, - bool variableCount) noexcept: - bindingID(bindingID), - descriptorType(descriptorType), - descriptorCount(descriptorCount), - shaderStages(shaderStages), - variableCount(variableCount){} - bool DescriptorBinding::operator==(const DescriptorBinding &other) const { return (this->bindingID == other.bindingID) && diff --git a/src/vkcv/ShaderProgram.cpp b/src/vkcv/ShaderProgram.cpp index 3c019a2b..f99bd3c6 100644 --- a/src/vkcv/ShaderProgram.cpp +++ b/src/vkcv/ShaderProgram.cpp @@ -161,12 +161,11 @@ namespace vkcv { variableCount = true; } - auto binding = DescriptorBinding( - bindingID, - DescriptorType::UNIFORM_BUFFER, - descriptorCount, - shaderStage, - variableCount); + DescriptorBinding binding{bindingID, + DescriptorType::UNIFORM_BUFFER, + descriptorCount, + shaderStage, + variableCount}; auto insertionResult = m_DescriptorSets[setID].insert(std::make_pair(bindingID, binding)); if(!insertionResult.second) @@ -197,12 +196,12 @@ namespace vkcv { variableCount = true; } - auto binding = DescriptorBinding( - bindingID, - DescriptorType::STORAGE_BUFFER, - descriptorCount, - shaderStage, - variableCount); + DescriptorBinding binding{bindingID, + DescriptorType::STORAGE_BUFFER, + descriptorCount, + shaderStage, + variableCount}; + auto insertionResult = m_DescriptorSets[setID].insert(std::make_pair(bindingID, binding)); if(!insertionResult.second) @@ -232,12 +231,11 @@ namespace vkcv { variableCount = true; } - auto binding = DescriptorBinding( - bindingID, - DescriptorType::SAMPLER, - descriptorCount, - shaderStage, - variableCount); + DescriptorBinding binding {bindingID, + DescriptorType::SAMPLER, + descriptorCount, + shaderStage, + variableCount}; auto insertionResult = m_DescriptorSets[setID].insert(std::make_pair(bindingID, binding)); if(!insertionResult.second) @@ -267,12 +265,11 @@ namespace vkcv { variableCount = true; } - auto binding = DescriptorBinding( - bindingID, - DescriptorType::IMAGE_SAMPLED, - descriptorCount, - shaderStage, - variableCount); + DescriptorBinding binding {bindingID, + DescriptorType::IMAGE_SAMPLED, + descriptorCount, + shaderStage, + variableCount}; auto insertionResult = m_DescriptorSets[setID].insert(std::make_pair(bindingID, binding)); if(!insertionResult.second) @@ -302,12 +299,11 @@ namespace vkcv { variableCount = true; } - auto binding = DescriptorBinding( - bindingID, - DescriptorType::IMAGE_STORAGE, - descriptorCount, - shaderStage, - variableCount); + DescriptorBinding binding {bindingID, + DescriptorType::IMAGE_STORAGE, + descriptorCount, + shaderStage, + variableCount}; auto insertionResult = m_DescriptorSets[setID].insert(std::make_pair(bindingID, binding)); if(!insertionResult.second) -- GitLab