aboutsummaryrefslogtreecommitdiff
path: root/layers/core_validation.cpp
diff options
context:
space:
mode:
authorTobin Ehlis <tobine@google.com>2016-06-23 14:25:22 -0600
committerTobin Ehlis <tobine@google.com>2016-06-23 14:34:49 -0600
commitffec0871873658bc0a92a200f9ee46c08d74acc6 (patch)
tree037c1a0d4609f06ebf8261cdde5527765f4d51b6 /layers/core_validation.cpp
parent6e68be315553d9ee34373929ca943faad72e3075 (diff)
downloadusermoji-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.cpp11
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,