diff options
| author | Tobin Ehlis <tobine@google.com> | 2016-05-05 10:16:02 -0600 |
|---|---|---|
| committer | Tobin Ehlis <tobine@google.com> | 2016-05-05 16:05:18 -0600 |
| commit | dac6ce3ddb395eeb53756a56dac5b203218b2828 (patch) | |
| tree | 166f683401e13f6c09b6bc5f6983f477537aba5c /layers/descriptor_sets.cpp | |
| parent | 561bcf5e322ea2747ebc1eccf33c68d83e1b47dc (diff) | |
| download | usermoji-dac6ce3ddb395eeb53756a56dac5b203218b2828.tar.xz | |
layers: Remove use of map at() function from descriptor_set class
Diffstat (limited to 'layers/descriptor_sets.cpp')
| -rw-r--r-- | layers/descriptor_sets.cpp | 79 |
1 files changed, 57 insertions, 22 deletions
diff --git a/layers/descriptor_sets.cpp b/layers/descriptor_sets.cpp index f4d896dc..0f80c5f2 100644 --- a/layers/descriptor_sets.cpp +++ b/layers/descriptor_sets.cpp @@ -65,9 +65,11 @@ void cvdescriptorset::DescriptorSetLayout::FillBindingSet(std::unordered_set<uin } VkDescriptorSetLayoutBinding const * cvdescriptorset::DescriptorSetLayout::GetDescriptorSetLayoutBindingPtrFromBinding(const uint32_t binding) const { - if (!binding_to_index_map_.count(binding)) - return nullptr; - return bindings_.at(binding_to_index_map_.at(binding))->ptr(); + const auto &bi_itr = binding_to_index_map_.find(binding); + if (bi_itr != binding_to_index_map_.end()) { + return bindings_[bi_itr->second]->ptr(); + } + return nullptr; } VkDescriptorSetLayoutBinding const * cvdescriptorset::DescriptorSetLayout::GetDescriptorSetLayoutBindingPtrFromIndex(const uint32_t index) const { @@ -77,9 +79,11 @@ cvdescriptorset::DescriptorSetLayout::GetDescriptorSetLayoutBindingPtrFromIndex( } // Return descriptorCount for given binding, 0 if index is unavailable uint32_t cvdescriptorset::DescriptorSetLayout::GetDescriptorCountFromBinding(const uint32_t binding) const { - if (!binding_to_index_map_.count(binding)) - return 0; - return bindings_.at(binding_to_index_map_.at(binding))->descriptorCount; + const auto &bi_itr = binding_to_index_map_.find(binding); + if (bi_itr != binding_to_index_map_.end()) { + return bindings_[bi_itr->second]->descriptorCount; + } + return 0; } // Return descriptorCount for given index, 0 if index is unavailable uint32_t cvdescriptorset::DescriptorSetLayout::GetDescriptorCountFromIndex(const uint32_t index) const { @@ -90,7 +94,11 @@ uint32_t cvdescriptorset::DescriptorSetLayout::GetDescriptorCountFromIndex(const // For the given binding, return descriptorType VkDescriptorType cvdescriptorset::DescriptorSetLayout::GetTypeFromBinding(const uint32_t binding) const { assert(binding_to_index_map_.count(binding)); - return bindings_.at(binding_to_index_map_.at(binding))->descriptorType; + const auto &bi_itr = binding_to_index_map_.find(binding); + if (bi_itr != binding_to_index_map_.end()) { + return bindings_[bi_itr->second]->descriptorType; + } + return VK_DESCRIPTOR_TYPE_MAX_ENUM; } // For the given index, return descriptorType VkDescriptorType cvdescriptorset::DescriptorSetLayout::GetTypeFromIndex(const uint32_t index) const { @@ -112,22 +120,40 @@ VkDescriptorType cvdescriptorset::DescriptorSetLayout::GetTypeFromGlobalIndex(co // For the given binding, return stageFlags VkShaderStageFlags cvdescriptorset::DescriptorSetLayout::GetStageFlagsFromBinding(const uint32_t binding) const { assert(binding_to_index_map_.count(binding)); - return bindings_.at(binding_to_index_map_.at(binding))->stageFlags; + const auto &bi_itr = binding_to_index_map_.find(binding); + if (bi_itr != binding_to_index_map_.end()) { + return bindings_[bi_itr->second]->stageFlags; + } + return VkShaderStageFlags(0); } // For the given binding, return start index uint32_t cvdescriptorset::DescriptorSetLayout::GetGlobalStartIndexFromBinding(const uint32_t binding) const { assert(binding_to_global_start_index_map_.count(binding)); - return binding_to_global_start_index_map_.at(binding); + const auto &btgsi_itr = binding_to_global_start_index_map_.find(binding); + if (btgsi_itr != binding_to_global_start_index_map_.end()) { + return btgsi_itr->second; + } + // In error case max uint32_t so index is out of bounds to break ASAP + return 0xFFFFFFFF; } // For the given binding, return end index uint32_t cvdescriptorset::DescriptorSetLayout::GetGlobalEndIndexFromBinding(const uint32_t binding) const { assert(binding_to_global_end_index_map_.count(binding)); - return binding_to_global_end_index_map_.at(binding); + const auto &btgei_itr = binding_to_global_end_index_map_.find(binding); + if (btgei_itr != binding_to_global_end_index_map_.end()) { + return btgei_itr->second; + } + // In error case max uint32_t so index is out of bounds to break ASAP + return 0xFFFFFFFF; } // For given binding, return ptr to ImmutableSampler array VkSampler const *cvdescriptorset::DescriptorSetLayout::GetImmutableSamplerPtrFromBinding(const uint32_t binding) const { assert(binding_to_index_map_.count(binding)); - return bindings_.at(binding_to_index_map_.at(binding))->pImmutableSamplers; + const auto &bi_itr = binding_to_index_map_.find(binding); + if (bi_itr != binding_to_index_map_.end()) { + return bindings_[bi_itr->second]->pImmutableSamplers; + } + return nullptr; } // For given index, return ptr to ImmutableSampler array VkSampler const *cvdescriptorset::DescriptorSetLayout::GetImmutableSamplerPtrFromIndex(const uint32_t index) const { @@ -185,15 +211,22 @@ bool cvdescriptorset::DescriptorSetLayout::IsCompatible(const DescriptorSetLayou bool cvdescriptorset::DescriptorSetLayout::IsNextBindingConsistent(const uint32_t binding) const { if (!binding_to_index_map_.count(binding + 1)) return false; - auto type = bindings_.at(binding_to_index_map_.at(binding))->descriptorType; - auto stage_flags = bindings_.at(binding_to_index_map_.at(binding))->stageFlags; - auto immut_samp = bindings_.at(binding_to_index_map_.at(binding))->pImmutableSamplers ? true : false; - if ((type != bindings_.at(binding_to_index_map_.at(binding + 1))->descriptorType) || - (stage_flags != bindings_.at(binding_to_index_map_.at(binding + 1))->stageFlags) || - (immut_samp != (bindings_.at(binding_to_index_map_.at(binding + 1))->pImmutableSamplers ? true : false))) { - return false; + auto const &bi_itr = binding_to_index_map_.find(binding); + if (bi_itr != binding_to_index_map_.end()) { + const auto &next_bi_itr = binding_to_index_map_.find(binding + 1); + if (next_bi_itr != binding_to_index_map_.end()) { + auto type = bindings_[bi_itr->second]->descriptorType; + auto stage_flags = bindings_[bi_itr->second]->stageFlags; + auto immut_samp = bindings_[bi_itr->second]->pImmutableSamplers ? true : false; + if ((type != bindings_[next_bi_itr->second]->descriptorType) || + (stage_flags != bindings_[next_bi_itr->second]->stageFlags) || + (immut_samp != (bindings_[next_bi_itr->second]->pImmutableSamplers ? true : false))) { + return false; + } + return true; + } } - return true; + return false; } cvdescriptorset::DescriptorSet::DescriptorSet(const VkDescriptorSet set, const DescriptorSetLayout *layout, @@ -367,9 +400,11 @@ uint32_t cvdescriptorset::DescriptorSet::GetStorageUpdates(const std::unordered_ for (uint32_t i = 0; i < p_layout_->GetDescriptorCountFromBinding(binding); ++i) { if (descriptors_[start_idx + i]->updated) { auto bufferview = static_cast<TexelDescriptor *>(descriptors_[start_idx + i].get())->GetBufferView(); - auto buffer = buffer_view_map_->at(bufferview).buffer; - buffer_set->insert(buffer); - num_updates++; + const auto &buff_pair = buffer_view_map_->find(bufferview); + if (buff_pair != buffer_view_map_->end()) { + buffer_set->insert(buff_pair->second.buffer); + num_updates++; + } } } } else if (GeneralBuffer == descriptors_[start_idx]->descriptor_class) { |
