From ffec0871873658bc0a92a200f9ee46c08d74acc6 Mon Sep 17 00:00:00 2001 From: Tobin Ehlis Date: Thu, 23 Jun 2016 14:25:22 -0600 Subject: 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. --- layers/core_validation.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'layers/core_validation.cpp') 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(new FRAMEBUFFER_NODE( - pCreateInfo, dev_data->renderPassMap[pCreateInfo->renderPass]->pCreateInfo)))); - auto & fbNode = dev_data->frameBufferMap[fb]; + std::unique_ptr 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, -- cgit v1.2.3