aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobin Ehlis <tobine@google.com>2016-06-28 14:52:11 -0600
committerTobin Ehlis <tobine@google.com>2016-07-06 19:45:31 -0600
commit2285b018438edfc3bd6c005debf100a4c3a0ae16 (patch)
treeb820c953c14f8aab56469ce25e717cb41d8347db
parent50432993709480e8539216bb545041f85d7fc174 (diff)
downloadusermoji-2285b018438edfc3bd6c005debf100a4c3a0ae16.tar.xz
layers: Add image to IMAGE_NODE
Store image inside the image ptr so that once node is looked-up all relevent data is available when just node ptr is passed around.
-rw-r--r--layers/core_validation.cpp4
-rw-r--r--layers/core_validation_types.h9
2 files changed, 7 insertions, 6 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index bd06c32f..c3abfa3e 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -5691,7 +5691,7 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateImage(VkDevice device, const VkImageCreateI
IMAGE_LAYOUT_NODE image_node;
image_node.layout = pCreateInfo->initialLayout;
image_node.format = pCreateInfo->format;
- dev_data->imageMap.insert(std::make_pair(*pImage, unique_ptr<IMAGE_NODE>(new IMAGE_NODE(pCreateInfo))));
+ dev_data->imageMap.insert(std::make_pair(*pImage, unique_ptr<IMAGE_NODE>(new IMAGE_NODE(*pImage, pCreateInfo))));
ImageSubresourcePair subpair = {*pImage, false, VkImageSubresource()};
dev_data->imageSubresourceMap[*pImage].push_back(subpair);
dev_data->imageLayoutMap[subpair] = image_node;
@@ -10253,7 +10253,7 @@ GetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain, uint32_t *pCoun
image_ci.extent.width = swapchain_node->createInfo.imageExtent.width;
image_ci.extent.height = swapchain_node->createInfo.imageExtent.height;
image_ci.sharingMode = swapchain_node->createInfo.imageSharingMode;
- dev_data->imageMap[pSwapchainImages[i]] = unique_ptr<IMAGE_NODE>(new IMAGE_NODE(&image_ci));
+ dev_data->imageMap[pSwapchainImages[i]] = unique_ptr<IMAGE_NODE>(new IMAGE_NODE(pSwapchainImages[i], &image_ci));
auto &image_node = dev_data->imageMap[pSwapchainImages[i]];
image_node->valid = false;
image_node->mem = MEMTRACKER_SWAP_CHAIN_IMAGE_KEY;
diff --git a/layers/core_validation_types.h b/layers/core_validation_types.h
index 2c59fd3d..5b33dfab 100644
--- a/layers/core_validation_types.h
+++ b/layers/core_validation_types.h
@@ -143,18 +143,19 @@ struct SAMPLER_NODE {
class IMAGE_NODE : public BASE_NODE {
public:
using BASE_NODE::in_use;
+ VkImage image;
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) {
+ IMAGE_NODE() : image(VK_NULL_HANDLE), createInfo{}, mem(VK_NULL_HANDLE), valid(false), memOffset(0), memSize(0) { in_use.store(0); };
+ IMAGE_NODE(VkImage img, const VkImageCreateInfo *pCreateInfo)
+ : image(img), 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),
+ : image(rh_obj.image), 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());
};