diff options
| author | Tobin Ehlis <tobine@google.com> | 2016-05-06 10:22:16 -0600 |
|---|---|---|
| committer | Mark Lobodzinski <mark@lunarg.com> | 2016-05-06 11:10:43 -0600 |
| commit | bdd5bb68629c5ed07237f32ae4339b3cd828122f (patch) | |
| tree | 562877cc545ef151546917f7d8da9bd89948f2d6 | |
| parent | 47680eb617fe5b9d71148b9e4c1169c822d00648 (diff) | |
| download | usermoji-bdd5bb68629c5ed07237f32ae4339b3cd828122f.tar.xz | |
layers: GH494 Add constructors for IMAGE and BUFFER nodes
Add proper constructors for IMAGE_NODE and BUFFER_NODE classes and
correctly initialize all of their data members.
Change-Id: I6c9d4a3ba6f3ef8e569de55793de9d6f7fd406b1
| -rw-r--r-- | layers/core_validation.cpp | 5 | ||||
| -rw-r--r-- | layers/core_validation_types.h | 14 |
2 files changed, 16 insertions, 3 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index ee4509a6..7a935022 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -5504,8 +5504,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(VkDevice device, c if (VK_SUCCESS == result) { std::lock_guard<std::mutex> lock(global_lock); // TODO : This doesn't create deep copy of pQueueFamilyIndices so need to fix that if/when we want that data to be valid - dev_data->bufferMap[*pBuffer].createInfo = *pCreateInfo; - dev_data->bufferMap[*pBuffer].in_use.store(0); + dev_data->bufferMap.insert(std::make_pair(*pBuffer, BUFFER_NODE(pCreateInfo))); } return result; } @@ -5539,7 +5538,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(VkDevice device, co IMAGE_LAYOUT_NODE image_node; image_node.layout = pCreateInfo->initialLayout; image_node.format = pCreateInfo->format; - dev_data->imageMap[*pImage].createInfo = *pCreateInfo; + dev_data->imageMap.insert(std::make_pair(*pImage, IMAGE_NODE(pCreateInfo))); ImageSubresourcePair subpair = {*pImage, false, VkImageSubresource()}; dev_data->imageSubresourceMap[*pImage].push_back(subpair); dev_data->imageLayoutMap[subpair] = image_node; diff --git a/layers/core_validation_types.h b/layers/core_validation_types.h index f7c17d1f..43f7de62 100644 --- a/layers/core_validation_types.h +++ b/layers/core_validation_types.h @@ -60,6 +60,9 @@ class BUFFER_NODE : public BASE_NODE { using BASE_NODE::in_use; VkDeviceMemory mem; VkBufferCreateInfo createInfo; + BUFFER_NODE() : mem(VK_NULL_HANDLE), createInfo{} { in_use.store(0); }; + BUFFER_NODE(const VkBufferCreateInfo *pCreateInfo) : mem(VK_NULL_HANDLE), createInfo(*pCreateInfo) { in_use.store(0); }; + BUFFER_NODE(const BUFFER_NODE &rh_obj) : mem(rh_obj.mem), createInfo(rh_obj.createInfo) { in_use.store(rh_obj.in_use.load()); }; }; typedef struct _SAMPLER_NODE { @@ -71,11 +74,22 @@ typedef struct _SAMPLER_NODE { class IMAGE_NODE : public BASE_NODE { public: + using BASE_NODE::in_use; VkImageCreateInfo createInfo; VkDeviceMemory mem; bool valid; // If this is a swapchain image backing memory track valid here as it doesn't have DEVICE_MEM_INFO VkDeviceSize memOffset; VkDeviceSize memSize; + IMAGE_NODE() : createInfo{}, mem(VK_NULL_HANDLE), valid(false), memOffset(0), memSize(0) { in_use.store(0); }; + IMAGE_NODE(const VkImageCreateInfo *pCreateInfo) + : createInfo(*pCreateInfo), mem(VK_NULL_HANDLE), valid(false), memOffset(0), memSize(0) { + in_use.store(0); + }; + IMAGE_NODE(const IMAGE_NODE &rh_obj) + : createInfo(rh_obj.createInfo), mem(rh_obj.mem), valid(rh_obj.valid), memOffset(rh_obj.memOffset), + memSize(rh_obj.memSize) { + in_use.store(rh_obj.in_use.load()); + }; }; // Simple struct to hold handle and type of object so they can be uniquely identified and looked up in appropriate map |
