diff options
| author | Tobin Ehlis <tobine@google.com> | 2016-06-02 12:41:47 -0600 |
|---|---|---|
| committer | Tobin Ehlis <tobine@google.com> | 2016-06-02 16:58:47 -0600 |
| commit | 07286c1f26b9bc37f84cccbcfcff77e0b9ef7a38 (patch) | |
| tree | fe91a3578a7d5e9f1aa80a48bc994aa22d513a60 /layers/descriptor_sets.cpp | |
| parent | b6cb17cbade092a74b25c40b9042fb4cd804b167 (diff) | |
| download | usermoji-07286c1f26b9bc37f84cccbcfcff77e0b9ef7a38.tar.xz | |
layers: Added getSwapchainNode() helper
Added getSwapchainNode() helper to core_validation and update
DescriptorSet class to use it.
Diffstat (limited to 'layers/descriptor_sets.cpp')
| -rw-r--r-- | layers/descriptor_sets.cpp | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/layers/descriptor_sets.cpp b/layers/descriptor_sets.cpp index 2393d308..8ccd334e 100644 --- a/layers/descriptor_sets.cpp +++ b/layers/descriptor_sets.cpp @@ -264,9 +264,8 @@ cvdescriptorset::AllocateDescriptorSetsData::AllocateDescriptorSetsData(uint32_t : required_descriptors_by_type{}, layout_nodes(count, nullptr) {} cvdescriptorset::DescriptorSet::DescriptorSet(const VkDescriptorSet set, const DescriptorSetLayout *layout, - const core_validation::layer_data *dev_data, - const std::unordered_map<VkSwapchainKHR, SWAPCHAIN_NODE *> *swapchain_map) - : some_update_(false), set_(set), p_layout_(layout), device_data_(dev_data), swapchain_map_(swapchain_map) { + const core_validation::layer_data *dev_data) + : some_update_(false), set_(set), p_layout_(layout), device_data_(dev_data) { // Foreach binding, create default descriptors of given type for (uint32_t i = 0; i < p_layout_->GetBindingCount(); ++i) { auto type = p_layout_->GetTypeFromIndex(i); @@ -581,7 +580,6 @@ bool cvdescriptorset::ValidateSampler(const VkSampler sampler, const core_valida bool cvdescriptorset::ValidateImageUpdate(VkImageView image_view, VkImageLayout image_layout, VkDescriptorType type, const core_validation::layer_data *dev_data, - const std::unordered_map<VkSwapchainKHR, SWAPCHAIN_NODE *> *swapchain_map, std::string *error) { auto iv_data = getImageViewData(dev_data, image_view); if (!iv_data) { @@ -604,9 +602,9 @@ bool cvdescriptorset::ValidateImageUpdate(VkImageView image_view, VkImageLayout // Also need to check the swapchains. auto swapchain = getSwapchainFromImage(dev_data, image); if (swapchain) { - auto swapchain_pair = swapchain_map->find(swapchain); - if (swapchain_pair != swapchain_map->end()) { - format = swapchain_pair->second->createInfo.imageFormat; + auto swapchain_node = getSwapchainNode(dev_data, swapchain); + if (swapchain_node) { + format = swapchain_node->createInfo.imageFormat; } } } @@ -1028,7 +1026,7 @@ bool cvdescriptorset::DescriptorSet::VerifyWriteUpdateContents(const VkWriteDesc // Validate image auto image_view = update->pImageInfo[di].imageView; auto image_layout = update->pImageInfo[di].imageLayout; - if (!ValidateImageUpdate(image_view, image_layout, update->descriptorType, device_data_, swapchain_map_, error)) { + if (!ValidateImageUpdate(image_view, image_layout, update->descriptorType, device_data_, error)) { std::stringstream error_str; error_str << "Attempted write update to combined image sampler descriptor failed due to: " << error->c_str(); *error = error_str.str(); @@ -1059,7 +1057,7 @@ bool cvdescriptorset::DescriptorSet::VerifyWriteUpdateContents(const VkWriteDesc for (uint32_t di = 0; di < update->descriptorCount; ++di) { auto image_view = update->pImageInfo[di].imageView; auto image_layout = update->pImageInfo[di].imageLayout; - if (!ValidateImageUpdate(image_view, image_layout, update->descriptorType, device_data_, swapchain_map_, error)) { + if (!ValidateImageUpdate(image_view, image_layout, update->descriptorType, device_data_, error)) { std::stringstream error_str; error_str << "Attempted write update to image descriptor failed due to: " << error->c_str(); *error = error_str.str(); @@ -1149,7 +1147,7 @@ bool cvdescriptorset::DescriptorSet::VerifyCopyUpdateContents(const VkCopyDescri // Validate image auto image_view = img_samp_desc->GetImageView(); auto image_layout = img_samp_desc->GetImageLayout(); - if (!ValidateImageUpdate(image_view, image_layout, type, device_data_, swapchain_map_, error)) { + if (!ValidateImageUpdate(image_view, image_layout, type, device_data_, error)) { std::stringstream error_str; error_str << "Attempted copy update to combined image sampler descriptor failed due to: " << error->c_str(); *error = error_str.str(); @@ -1162,7 +1160,7 @@ bool cvdescriptorset::DescriptorSet::VerifyCopyUpdateContents(const VkCopyDescri auto img_desc = static_cast<const ImageDescriptor *>(src_set->descriptors_[index + di].get()); auto image_view = img_desc->GetImageView(); auto image_layout = img_desc->GetImageLayout(); - if (!ValidateImageUpdate(image_view, image_layout, type, device_data_, swapchain_map_, error)) { + if (!ValidateImageUpdate(image_view, image_layout, type, device_data_, error)) { std::stringstream error_str; error_str << "Attempted copy update to image descriptor failed due to: " << error->c_str(); *error = error_str.str(); @@ -1268,11 +1266,12 @@ bool cvdescriptorset::ValidateAllocateDescriptorSets( return skip_call; } // Decrement allocated sets from the pool and insert new sets into set_map -void cvdescriptorset::PerformAllocateDescriptorSets( - const VkDescriptorSetAllocateInfo *p_alloc_info, const VkDescriptorSet *descriptor_sets, - const AllocateDescriptorSetsData *ds_data, std::unordered_map<VkDescriptorPool, DESCRIPTOR_POOL_NODE *> *pool_map, - std::unordered_map<VkDescriptorSet, cvdescriptorset::DescriptorSet *> *set_map, const core_validation::layer_data *dev_data, - const std::unordered_map<VkSwapchainKHR, SWAPCHAIN_NODE *> &swapchain_map) { +void cvdescriptorset::PerformAllocateDescriptorSets(const VkDescriptorSetAllocateInfo *p_alloc_info, + const VkDescriptorSet *descriptor_sets, + const AllocateDescriptorSetsData *ds_data, + std::unordered_map<VkDescriptorPool, DESCRIPTOR_POOL_NODE *> *pool_map, + std::unordered_map<VkDescriptorSet, cvdescriptorset::DescriptorSet *> *set_map, + const core_validation::layer_data *dev_data) { auto pool_state = (*pool_map)[p_alloc_info->descriptorPool]; /* Account for sets and individual descriptors allocated from pool */ pool_state->availableSets -= p_alloc_info->descriptorSetCount; @@ -1283,7 +1282,7 @@ void cvdescriptorset::PerformAllocateDescriptorSets( * global map and the pool's set. */ for (uint32_t i = 0; i < p_alloc_info->descriptorSetCount; i++) { - auto new_ds = new cvdescriptorset::DescriptorSet(descriptor_sets[i], ds_data->layout_nodes[i], dev_data, &swapchain_map); + auto new_ds = new cvdescriptorset::DescriptorSet(descriptor_sets[i], ds_data->layout_nodes[i], dev_data); pool_state->sets.insert(new_ds); new_ds->in_use.store(0); |
