Bug 14522: Remove VkAttachmentView
https://cvs.khronos.org/bugzilla/show_bug.cgi?id=14522
Several parts of the driver really want an attachment view
so I've included the attachment information in the
intel_img_view structure and initialize both when the
view is created.
Parts of the meta path only need intel_att_view and
I kept that in place.
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp
index a91c974..b9820be 100644
--- a/layers/mem_tracker.cpp
+++ b/layers/mem_tracker.cpp
@@ -77,7 +77,7 @@
unordered_map<uint64_t, MT_OBJ_BINDING_INFO> bufferMap;
// Maps for non-dispatchable objects that store createInfo based on handle
-unordered_map<uint64_t, VkAttachmentViewCreateInfo> attachmentViewMap;
+unordered_map<uint64_t, VkImageViewCreateInfo> attachmentViewMap;
unordered_map<uint64_t, VkImageViewCreateInfo> imageViewMap;
// TODO : If we ever really care about Compute pipelines, split them into own map
unordered_map<uint64_t, VkGraphicsPipelineCreateInfo> pipelineMap;
@@ -416,7 +416,7 @@
break;
}
// Swap Chain is very unique, use imageMap, but copy in SwapChainCreatInfo
- // This is used by vkCreateAttachmentView to distinguish swap chain images
+ // This is used by vkCreateImageView to distinguish swap chain images
case VK_OBJECT_TYPE_SWAP_CHAIN_WSI:
{
auto pCI = &imageMap[handle];
@@ -428,7 +428,7 @@
case VK_OBJECT_TYPE_ATTACHMENT_VIEW:
{
auto pCI = &attachmentViewMap[handle];
- memcpy(pCI, pCreateInfo, sizeof(VkAttachmentViewCreateInfo));
+ memcpy(pCI, pCreateInfo, sizeof(VkImageViewCreateInfo));
break;
}
case VK_OBJECT_TYPE_IMAGE_VIEW:
@@ -1149,7 +1149,6 @@
log_msg(mdd(dispObj), VK_DBG_REPORT_INFO_BIT, VK_OBJECT_TYPE_DEVICE, 0, 0, MEMTRACK_NONE, "MEM", "Details of Object lists:");
log_msg(mdd(dispObj), VK_DBG_REPORT_INFO_BIT, VK_OBJECT_TYPE_DEVICE, 0, 0, MEMTRACK_NONE, "MEM", "========================");
- print_object_map_members(dispObj, attachmentViewMap, VK_OBJECT_TYPE_ATTACHMENT_VIEW, "AttachmentView");
print_object_map_members(dispObj, imageViewMap, VK_OBJECT_TYPE_IMAGE_VIEW, "ImageView");
print_object_map_members(dispObj, samplerMap, VK_OBJECT_TYPE_SAMPLER, "Sampler");
print_object_map_members(dispObj, semaphoreMap, VK_OBJECT_TYPE_SEMAPHORE, "Semaphore");
@@ -1648,18 +1647,6 @@
return result;
}
-VK_LAYER_EXPORT VkResult VKAPI vkDestroyAttachmentView(VkDevice device, VkAttachmentView attachmentView)
-{
- loader_platform_thread_lock_mutex(&globalLock);
- auto item = attachmentViewMap.find(attachmentView.handle);
- if (item != attachmentViewMap.end()) {
- attachmentViewMap.erase(item);
- }
- loader_platform_thread_unlock_mutex(&globalLock);
- VkResult result = get_dispatch_table(mem_tracker_device_table_map, device)->DestroyAttachmentView(device, attachmentView);
- return result;
-}
-
VK_LAYER_EXPORT VkResult VKAPI vkDestroyImageView(VkDevice device, VkImageView imageView)
{
loader_platform_thread_lock_mutex(&globalLock);
@@ -2226,36 +2213,10 @@
loader_platform_thread_lock_mutex(&globalLock);
add_object_create_info(pView->handle, VK_OBJECT_TYPE_IMAGE_VIEW, pCreateInfo);
// 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,
- false, "vkCreateImageView()", "VK_IMAGE_USAGE_[SAMPLED|STORAGE]_BIT");
- loader_platform_thread_unlock_mutex(&globalLock);
- }
- return result;
-}
-
-VK_LAYER_EXPORT VkResult VKAPI vkCreateAttachmentView(
- VkDevice device,
- const VkAttachmentViewCreateInfo *pCreateInfo,
- VkAttachmentView *pView)
-{
- VkResult result = get_dispatch_table(mem_tracker_device_table_map, device)->CreateAttachmentView(device, pCreateInfo, pView);
- if (result == VK_SUCCESS) {
- loader_platform_thread_lock_mutex(&globalLock);
- add_object_create_info(pView->handle, VK_OBJECT_TYPE_ATTACHMENT_VIEW, pCreateInfo);
- // Validate that img has correct usage flags set
- // We don't use the image helper function here as it's a special case that checks struct type
- MT_OBJ_BINDING_INFO* pInfo = get_object_binding_info(pCreateInfo->image.handle, VK_OBJECT_TYPE_IMAGE);
- if (pInfo) {
- if (VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO == pInfo->create_info.image.sType) {
- // TODO : Now that this is generalized for all Attachments, need to only check COLOR or DS USAGE bits
- // if/when we know that Image being attached to is Color or DS. Can probably do this for DS based on format
-// validate_usage_flags(device, pInfo->create_info.image.usage, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, true,
-// pCreateInfo->image.handle, VK_OBJECT_TYPE_IMAGE, "image", "vkCreateAttachmentView()", "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT");
- }// else if (VK_STRUCTURE_TYPE_SWAP_CHAIN_CREATE_INFO_WSI == pInfo->create_info.swapchain.sType) {
- // validate_usage_flags(device, pInfo->create_info.swapchain.imageUsageFlags, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, true,
- // pCreateInfo->image.handle, VK_OBJECT_TYPE_IMAGE, "image", "vkCreateAttachmentView()", "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT");
- //}
- }
+ validate_image_usage_flags(
+ device, pCreateInfo->image,
+ VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
+ false, "vkCreateImageView()", "VK_IMAGE_USAGE_[SAMPLED|STORAGE|COLOR_ATTACHMENT]_BIT");
loader_platform_thread_unlock_mutex(&globalLock);
}
return result;
@@ -3168,8 +3129,6 @@
return (PFN_vkVoidFunction) vkDestroyBuffer;
if (!strcmp(funcName, "vkDestroyImage"))
return (PFN_vkVoidFunction) vkDestroyImage;
- if (!strcmp(funcName, "vkDestroyAttachmentView"))
- return (PFN_vkVoidFunction) vkDestroyAttachmentView;
if (!strcmp(funcName, "vkDestroyImageView"))
return (PFN_vkVoidFunction) vkDestroyImageView;
if (!strcmp(funcName, "vkDestroyPipeline"))
@@ -3248,8 +3207,6 @@
return (PFN_vkVoidFunction) vkCreateImage;
if (!strcmp(funcName, "vkCreateImageView"))
return (PFN_vkVoidFunction) vkCreateImageView;
- if (!strcmp(funcName, "vkCreateAttachmentView"))
- return (PFN_vkVoidFunction) vkCreateAttachmentView;
if (!strcmp(funcName, "vkCreateShader"))
return (PFN_vkVoidFunction) vkCreateShader;
if (!strcmp(funcName, "vkCreateGraphicsPipelines"))