diff options
| author | Tobin Ehlis <tobine@google.com> | 2016-06-23 14:25:22 -0600 |
|---|---|---|
| committer | Tobin Ehlis <tobine@google.com> | 2016-06-23 14:34:49 -0600 |
| commit | ffec0871873658bc0a92a200f9ee46c08d74acc6 (patch) | |
| tree | 037c1a0d4609f06ebf8261cdde5527765f4d51b6 /layers/core_validation.cpp | |
| parent | 6e68be315553d9ee34373929ca943faad72e3075 (diff) | |
| download | usermoji-ffec0871873658bc0a92a200f9ee46c08d74acc6.tar.xz | |
layers: Clean up frameBufferMap unique_ptr use
Create local unique_ptr to FRAMEBUFFER_NODE and update that prior
to map insertion. Then move it directly into map in order to avoid
two map accesses.
Diffstat (limited to 'layers/core_validation.cpp')
| -rw-r--r-- | layers/core_validation.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 6805b98b..ca09c70c 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -8372,11 +8372,9 @@ static bool PreCallValidateCreateFramebuffer(layer_data *dev_data, const VkFrame // CreateFramebuffer state has been validated and call down chain completed so record new framebuffer object static void PostCallRecordCreateFramebuffer(layer_data *dev_data, const VkFramebufferCreateInfo *pCreateInfo, VkFramebuffer fb) { // Shadow create info and store in map - // TODO : This insert/lookup sequence is not ideal and with proper safe_* type move support can be improved w/ emplace - dev_data->frameBufferMap.insert( - std::make_pair(fb, unique_ptr<FRAMEBUFFER_NODE>(new FRAMEBUFFER_NODE( - pCreateInfo, dev_data->renderPassMap[pCreateInfo->renderPass]->pCreateInfo)))); - auto & fbNode = dev_data->frameBufferMap[fb]; + std::unique_ptr<FRAMEBUFFER_NODE> fb_node( + new FRAMEBUFFER_NODE(pCreateInfo, dev_data->renderPassMap[pCreateInfo->renderPass]->pCreateInfo)); + for (uint32_t i = 0; i < pCreateInfo->attachmentCount; ++i) { VkImageView view = pCreateInfo->pAttachments[i]; auto view_data = getImageViewData(dev_data, view); @@ -8387,8 +8385,9 @@ static void PostCallRecordCreateFramebuffer(layer_data *dev_data, const VkFrameb get_mem_binding_from_object(dev_data, (uint64_t)(view_data->image), VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, &fb_info.mem); fb_info.image = view_data->image; - fbNode->attachments.push_back(fb_info); + fb_node->attachments.push_back(fb_info); } + dev_data->frameBufferMap[fb] = std::move(fb_node); } VKAPI_ATTR VkResult VKAPI_CALL CreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo *pCreateInfo, |
