From 43da0bd4137df812a76b7f1488f641a4c8299f35 Mon Sep 17 00:00:00 2001 From: Tobin Ehlis Date: Wed, 14 Sep 2016 08:12:08 -0600 Subject: layers: Update BufferView state tracking Create BUFFER_VIEW_STATE class to hold VkBufferViewCreateInfo and update related state tracking. This class derives from BASE_NODE in preparation for tracking in_use for BufferViews consistent to other object in_use tracking. --- layers/core_validation.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'layers/core_validation.cpp') diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index eb2e136e..4ab2b2de 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -115,7 +115,7 @@ struct layer_data { unordered_map> samplerMap; unordered_map> imageViewMap; unordered_map> imageMap; - unordered_map> bufferViewMap; + unordered_map> bufferViewMap; unordered_map> bufferMap; unordered_map pipelineMap; unordered_map commandPoolMap; @@ -302,7 +302,7 @@ VkSwapchainKHR getSwapchainFromImage(const layer_data *dev_data, VkImage image) return img_it->second; } // Return buffer node ptr for specified buffer or else NULL -VkBufferViewCreateInfo *getBufferViewInfo(const layer_data *my_data, VkBufferView buffer_view) { +BUFFER_VIEW_STATE *getBufferViewState(const layer_data *my_data, VkBufferView buffer_view) { auto bv_it = my_data->bufferViewMap.find(buffer_view); if (bv_it == my_data->bufferViewMap.end()) { return nullptr; @@ -5612,9 +5612,9 @@ DestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocationCa layer_data *dev_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map); std::unique_lock lock(global_lock); - auto item = dev_data->bufferViewMap.find(bufferView); - if (item != dev_data->bufferViewMap.end()) { - dev_data->bufferViewMap.erase(item); + auto view_state = getBufferViewState(dev_data, bufferView); + if (view_state) { + dev_data->bufferViewMap.erase(bufferView); } lock.unlock(); dev_data->device_dispatch_table->DestroyBufferView(device, bufferView, pAllocator); @@ -6106,7 +6106,7 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateBufferView(VkDevice device, const VkBufferV VkResult result = dev_data->device_dispatch_table->CreateBufferView(device, pCreateInfo, pAllocator, pView); if (VK_SUCCESS == result) { lock.lock(); - dev_data->bufferViewMap[*pView] = unique_ptr(new VkBufferViewCreateInfo(*pCreateInfo)); + dev_data->bufferViewMap[*pView] = unique_ptr(new BUFFER_VIEW_STATE(*pView, pCreateInfo)); lock.unlock(); } return result; -- cgit v1.2.3