diff options
| author | Mark Lobodzinski <mark@lunarg.com> | 2015-09-01 11:19:08 -0600 |
|---|---|---|
| committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-09-02 11:33:56 -0600 |
| commit | fa00f49901f707259f67de8f95cda848d26daef8 (patch) | |
| tree | 4427e9c68fa3657a983f713acd51ab4e5590b5ea | |
| parent | 41866db908985f0fc389e5cd7924afa4fd61aa93 (diff) | |
| download | usermoji-fa00f49901f707259f67de8f95cda848d26daef8.tar.xz | |
layers: MemTracker fixes for image usage flag validation.
| -rw-r--r-- | layers/mem_tracker.cpp | 14 | ||||
| -rw-r--r-- | layers/mem_tracker.h | 3 |
2 files changed, 7 insertions, 10 deletions
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp index b9820be4..d98bc393 100644 --- a/layers/mem_tracker.cpp +++ b/layers/mem_tracker.cpp @@ -415,13 +415,15 @@ static void add_object_create_info(const uint64_t handle, const VkDbgObjectType memcpy(&pCI->create_info.image, pCreateInfo, sizeof(VkImageCreateInfo)); break; } - // Swap Chain is very unique, use imageMap, but copy in SwapChainCreatInfo - // This is used by vkCreateImageView to distinguish swap chain images + // Swap Chain is very unique, use imageMap, but copy in + // SwapChainCreatInfo's usage flags. This is used by vkCreateImageView + // to distinguish swap chain images case VK_OBJECT_TYPE_SWAP_CHAIN_WSI: { auto pCI = &imageMap[handle]; memset(pCI, 0, sizeof(MT_OBJ_BINDING_INFO)); - // memcpy(&pCI->create_info.swapchain, pCreateInfo, sizeof(VkSwapChainCreateInfoWSI)); + pCI->create_info.image.usage = + const_cast<VkSwapChainCreateInfoWSI*>(static_cast<const VkSwapChainCreateInfoWSI *>(pCreateInfo))->imageUsageFlags; break; } // All other non-disp objects store their Create info struct as map value @@ -2215,7 +2217,7 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateImageView( // Validate that img has correct usage flags set validate_image_usage_flags( device, pCreateInfo->image, - VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, + VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_DEPTH_STENCIL_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, false, "vkCreateImageView()", "VK_IMAGE_USAGE_[SAMPLED|STORAGE|COLOR_ATTACHMENT]_BIT"); loader_platform_thread_unlock_mutex(&globalLock); } @@ -3025,9 +3027,7 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateSwapChainWSI( if (VK_SUCCESS == result) { loader_platform_thread_lock_mutex(&globalLock); - MT_SWAP_CHAIN_INFO *new_rec = new MT_SWAP_CHAIN_INFO; - new_rec->createInfo = *pCreateInfo; - swapChainMap[pSwapChain->handle]= new_rec; + add_swap_chain_info(*pSwapChain, pCreateInfo); loader_platform_thread_unlock_mutex(&globalLock); } diff --git a/layers/mem_tracker.h b/layers/mem_tracker.h index c5722153..cc3a2478 100644 --- a/layers/mem_tracker.h +++ b/layers/mem_tracker.h @@ -103,9 +103,6 @@ struct MT_OBJ_BINDING_INFO { union create_info { VkImageCreateInfo image; VkBufferCreateInfo buffer; - // VkSwapChainCreateInfoWSI swapchain; - - // create_info() : image() {} } create_info; }; |
