aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Forbes <chrisforbes@google.com>2017-05-11 10:37:24 -0700
committerChris Forbes <chrisf@ijw.co.nz>2017-05-17 08:26:30 -0700
commit6eeb64c7daa1dec8a3fdc4eed0d8f852eb9f69ae (patch)
treeaf85de2b7bf0bf60ecd14ec83aeff66d76f1f107
parent426b861904f891570ba5f01a6ca8d8199666a12f (diff)
downloadusermoji-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.cpp41
-rw-r--r--layers/core_validation_types.h1
-rw-r--r--layers/descriptor_sets.cpp9
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) {