aboutsummaryrefslogtreecommitdiff
path: root/layers/core_validation.cpp
diff options
context:
space:
mode:
authorTobin Ehlis <tobine@google.com>2016-08-04 07:53:46 -0600
committerTobin Ehlis <tobine@google.com>2016-08-09 10:21:19 -0600
commit9df757ab20a9e90742e38a51dcdb437526d4bf8a (patch)
treeb67f49c323ce699069d20b7d30f9cf57cf4212a1 /layers/core_validation.cpp
parentedb016ac0535374c1ff3d1a1f32ccf25d03896f2 (diff)
downloadusermoji-9df757ab20a9e90742e38a51dcdb437526d4bf8a.tar.xz
layers: Remove image member from DEVICE_MEM_INFO
The image member is broken and was superceded by objBindings which track all objects bound to a single memory allocation. This is also temporarily disabling a check for image layout when mapping memory, but that check was broken and will be fixed in subsequent CL.
Diffstat (limited to 'layers/core_validation.cpp')
-rw-r--r--layers/core_validation.cpp35
1 files changed, 21 insertions, 14 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index 8eec89f1..1258b340 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -5347,7 +5347,6 @@ VKAPI_ATTR void VKAPI_CALL DestroyImage(VkDevice device, VkImage image, const Vk
if (mem_info) {
remove_memory_ranges(reinterpret_cast<uint64_t &>(image), img_node->mem, mem_info->imageRanges);
clear_object_binding(dev_data, reinterpret_cast<uint64_t &>(image), VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT);
- mem_info->image = VK_NULL_HANDLE;
}
// Remove image from imageMap
dev_data->imageMap.erase(img_node->image);
@@ -10037,18 +10036,27 @@ static bool ValidateMapImageLayouts(VkDevice device, VkDeviceMemory mem) {
bool skip_call = false;
layer_data *dev_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map);
auto mem_info = getMemObjInfo(dev_data, mem);
- if ((mem_info) && (mem_info->image != VK_NULL_HANDLE)) {
- std::vector<VkImageLayout> layouts;
- if (FindLayouts(dev_data, mem_info->image, layouts)) {
- for (auto layout : layouts) {
- if (layout != VK_IMAGE_LAYOUT_PREINITIALIZED && layout != VK_IMAGE_LAYOUT_GENERAL) {
- skip_call |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0,
- __LINE__, DRAWSTATE_INVALID_IMAGE_LAYOUT, "DS", "Cannot map an image with layout %s. Only "
- "GENERAL or PREINITIALIZED are supported.",
- string_VkImageLayout(layout));
- }
- }
- }
+ if (mem_info) {
+ // TODO : Update this code to only check images that overlap given map range
+ // for (auto bound_object : mem_info->objBindings) {
+ // if (bound_object.type == VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT) {
+ // std::vector<VkImageLayout> layouts;
+ // if (FindLayouts(dev_data, VkImage(bound_object.handle), layouts)) {
+ // for (auto layout : layouts) {
+ // if (layout != VK_IMAGE_LAYOUT_PREINITIALIZED && layout != VK_IMAGE_LAYOUT_GENERAL) {
+ // skip_call |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT,
+ // (VkDebugReportObjectTypeEXT)0, 0,
+ // __LINE__, DRAWSTATE_INVALID_IMAGE_LAYOUT, "DS", "Cannot map an image with
+ // layout %s. Only "
+ // "GENERAL or
+ // PREINITIALIZED are
+ // supported.",
+ // string_VkImageLayout(layout));
+ // }
+ // }
+ // }
+ // }
+ // }
}
return skip_call;
}
@@ -10227,7 +10235,6 @@ VKAPI_ATTR VkResult VKAPI_CALL BindImageMemory(VkDevice device, VkImage image, V
if (!skip_call) {
result = dev_data->device_dispatch_table->BindImageMemory(device, image, mem, memoryOffset);
lock.lock();
- dev_data->memObjMap[mem].get()->image = image;
image_node->mem = mem;
image_node->memOffset = memoryOffset;
image_node->memSize = memRequirements.size;