diff options
| author | Chris Forbes <chrisforbes@google.com> | 2017-05-11 10:37:24 -0700 |
|---|---|---|
| committer | Chris Forbes <chrisf@ijw.co.nz> | 2017-05-17 08:26:30 -0700 |
| commit | 6eeb64c7daa1dec8a3fdc4eed0d8f852eb9f69ae (patch) | |
| tree | af85de2b7bf0bf60ecd14ec83aeff66d76f1f107 | |
| parent | 426b861904f891570ba5f01a6ca8d8199666a12f (diff) | |
| download | usermoji-6eeb64c7daa1dec8a3fdc4eed0d8f852eb9f69ae.tar.xz | |
layers: Remove swapchain image special case from ValidateBarriers
Swapchain images have been added to the images table for a long time.
The checks below were also inconsistent about using the extracted data
or just going to image_data.
| -rw-r--r-- | layers/core_validation.cpp | 41 | ||||
| -rw-r--r-- | layers/core_validation_types.h | 1 | ||||
| -rw-r--r-- | layers/descriptor_sets.cpp | 9 |
3 files changed, 11 insertions, 40 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 0aca53a5..a8c588e0 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -7795,52 +7795,33 @@ static bool ValidateBarriers(const char *funcName, VkCommandBuffer cmdBuffer, ui "PREINITIALIZED.", funcName); } - VkFormat format = VK_FORMAT_UNDEFINED; - uint32_t arrayLayers = 0, mipLevels = 0; - bool imageFound = false; if (image_data) { - format = image_data->createInfo.format; - arrayLayers = image_data->createInfo.arrayLayers; - mipLevels = image_data->createInfo.mipLevels; - imageFound = true; - } else if (dev_data->device_extensions.khr_swapchain) { - auto imageswap_data = GetSwapchainFromImage(dev_data, mem_barrier->image); - if (imageswap_data) { - auto swapchain_data = GetSwapchainNode(dev_data, imageswap_data); - if (swapchain_data) { - format = swapchain_data->createInfo.imageFormat; - arrayLayers = swapchain_data->createInfo.imageArrayLayers; - mipLevels = 1; - imageFound = true; - } - } - } - if (imageFound) { skip |= ValidateImageSubrangeLevelLayerCounts(dev_data, mem_barrier->subresourceRange, funcName); auto aspect_mask = mem_barrier->subresourceRange.aspectMask; - skip |= ValidateImageAspectMask(dev_data, image_data->image, format, aspect_mask, funcName); + skip |= ValidateImageAspectMask(dev_data, image_data->image, image_data->createInfo.format, aspect_mask, funcName); uint32_t layer_count = ResolveRemainingLayers(&mem_barrier->subresourceRange, image_data->createInfo.arrayLayers); - if ((mem_barrier->subresourceRange.baseArrayLayer + layer_count) > arrayLayers) { - skip |= - log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, - reinterpret_cast<uint64_t>(cmdBuffer), __LINE__, DRAWSTATE_INVALID_BARRIER, "DS", - "%s: Subresource must have the sum of the baseArrayLayer (%d) and layerCount (%d) be less " - "than or equal to the total number of layers (%d).", - funcName, mem_barrier->subresourceRange.baseArrayLayer, layer_count, arrayLayers); + if ((mem_barrier->subresourceRange.baseArrayLayer + layer_count) > image_data->createInfo.arrayLayers) { + skip |= log_msg( + dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + reinterpret_cast<uint64_t>(cmdBuffer), __LINE__, DRAWSTATE_INVALID_BARRIER, "DS", + "%s: Subresource must have the sum of the baseArrayLayer (%d) and layerCount (%d) be less " + "than or equal to the total number of layers (%d).", + funcName, mem_barrier->subresourceRange.baseArrayLayer, layer_count, image_data->createInfo.arrayLayers); } uint32_t level_count = ResolveRemainingLevels(&mem_barrier->subresourceRange, image_data->createInfo.mipLevels); - if ((mem_barrier->subresourceRange.baseMipLevel + level_count) > mipLevels) { + if ((mem_barrier->subresourceRange.baseMipLevel + level_count) > image_data->createInfo.mipLevels) { skip |= log_msg( dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, reinterpret_cast<uint64_t>(cmdBuffer), __LINE__, DRAWSTATE_INVALID_BARRIER, "DS", "%s: Subresource must have the sum of the baseMipLevel (%d) and levelCount (%d) be less than or equal to " "the total number of levels (%d).", - funcName, mem_barrier->subresourceRange.baseMipLevel, level_count, mipLevels); + funcName, mem_barrier->subresourceRange.baseMipLevel, level_count, image_data->createInfo.mipLevels); } } } + for (uint32_t i = 0; i < bufferBarrierCount; ++i) { auto mem_barrier = &pBufferMemBarriers[i]; if (pCB->activeRenderPass) { diff --git a/layers/core_validation_types.h b/layers/core_validation_types.h index 7e76350f..719f881c 100644 --- a/layers/core_validation_types.h +++ b/layers/core_validation_types.h @@ -765,7 +765,6 @@ DEVICE_MEM_INFO *GetMemObjInfo(const layer_data *, VkDeviceMemory); BUFFER_VIEW_STATE *GetBufferViewState(const layer_data *, VkBufferView); SAMPLER_STATE *GetSamplerState(const layer_data *, VkSampler); IMAGE_VIEW_STATE *GetImageViewState(const layer_data *, VkImageView); -VkSwapchainKHR GetSwapchainFromImage(const layer_data *, VkImage); SWAPCHAIN_NODE *GetSwapchainNode(const layer_data *, VkSwapchainKHR); GLOBAL_CB_NODE *GetCBNode(layer_data const *my_data, const VkCommandBuffer cb); RENDER_PASS_STATE *GetRenderPassState(layer_data const *my_data, VkRenderPass renderpass); diff --git a/layers/descriptor_sets.cpp b/layers/descriptor_sets.cpp index c36831a3..88d44e67 100644 --- a/layers/descriptor_sets.cpp +++ b/layers/descriptor_sets.cpp @@ -787,15 +787,6 @@ bool cvdescriptorset::ValidateImageUpdate(VkImageView image_view, VkImageLayout *error_msg = "No memory bound to image."; return false; } - } else { - // Also need to check the swapchains. - auto swapchain = GetSwapchainFromImage(dev_data, image); - if (swapchain) { - auto swapchain_node = GetSwapchainNode(dev_data, swapchain); - if (swapchain_node) { - format = swapchain_node->createInfo.imageFormat; - } - } } // First validate that format and layout are compatible if (format == VK_FORMAT_MAX_ENUM) { |
