From 1f732cb40d1a752aa1ebf3c3eb4c1ae7a9c2a04a Mon Sep 17 00:00:00 2001 From: Tobin Ehlis Date: Tue, 25 Oct 2016 20:56:47 -0600 Subject: layers:CreateDescriptorSetLayout cleanup Streamline duplicate binding check, use [] operator instead of emplace, remove dead comment and add new comment. --- layers/core_validation.cpp | 2 +- layers/descriptor_sets.cpp | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index c2b78c08..4e3c5f31 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -6723,7 +6723,7 @@ static bool PreCallValidateCreateDescriptorSetLayout(layer_data *dev_data, const static void PostCallRecordCreateDescriptorSetLayout(layer_data *dev_data, const VkDescriptorSetLayoutCreateInfo *create_info, VkDescriptorSetLayout set_layout) { - // TODOSC : Capture layout bindings set + // TODO: Convert this to unique_ptr to avoid leaks dev_data->descriptorSetLayoutMap[set_layout] = new cvdescriptorset::DescriptorSetLayout(create_info, set_layout); } diff --git a/layers/descriptor_sets.cpp b/layers/descriptor_sets.cpp index 52c0b339..500957c0 100644 --- a/layers/descriptor_sets.cpp +++ b/layers/descriptor_sets.cpp @@ -30,7 +30,7 @@ cvdescriptorset::DescriptorSetLayout::DescriptorSetLayout(const VkDescriptorSetL uint32_t global_index = 0; for (uint32_t i = 0; i < binding_count_; ++i) { descriptor_count_ += p_create_info->pBindings[i].descriptorCount; - binding_to_index_map_.emplace(p_create_info->pBindings[i].binding, i); + binding_to_index_map_[p_create_info->pBindings[i].binding] = i; binding_to_global_start_index_map_[p_create_info->pBindings[i].binding] = global_index; global_index += p_create_info->pBindings[i].descriptorCount ? p_create_info->pBindings[i].descriptorCount - 1 : 0; binding_to_global_end_index_map_[p_create_info->pBindings[i].binding] = global_index; @@ -55,12 +55,11 @@ bool cvdescriptorset::DescriptorSetLayout::ValidateCreateInfo(debug_report_data bool skip = false; std::unordered_set bindings; for (uint32_t i = 0; i < create_info->bindingCount; ++i) { - if (bindings.count(create_info->pBindings[i].binding)) { + if (!bindings.insert(create_info->pBindings[i].binding).second) { skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, VALIDATION_ERROR_02345, "DS", "duplicated binding number in VkDescriptorSetLayoutBinding. %s", validation_error_map[VALIDATION_ERROR_02345]); } - bindings.insert(create_info->pBindings[i].binding); } return skip; } -- cgit v1.2.3