diff options
| author | Tobin Ehlis <tobine@google.com> | 2016-08-04 07:53:46 -0600 |
|---|---|---|
| committer | Tobin Ehlis <tobine@google.com> | 2016-08-09 10:21:19 -0600 |
| commit | 9df757ab20a9e90742e38a51dcdb437526d4bf8a (patch) | |
| tree | b67f49c323ce699069d20b7d30f9cf57cf4212a1 /layers/core_validation.cpp | |
| parent | edb016ac0535374c1ff3d1a1f32ccf25d03896f2 (diff) | |
| download | usermoji-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.cpp | 35 |
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; |
