aboutsummaryrefslogtreecommitdiff
path: root/layers/buffer_validation.cpp
diff options
context:
space:
mode:
authorTobin Ehlis <tobine@google.com>2017-07-17 10:14:27 -0600
committerTobin Ehlis <tobine@google.com>2017-07-18 14:08:38 -0600
commitccf3af618bf4815043d0781bb91bef86de2534b4 (patch)
tree5282a19f78807ca3ab1d291df92390d1c1929815 /layers/buffer_validation.cpp
parent5ffdab124836df520803e93ff4690a7abce4366c (diff)
downloadusermoji-ccf3af618bf4815043d0781bb91bef86de2534b4.tar.xz
layers:Refactor barrier validation
Migrate validation for renderpass barrier in CmdPipelineBarrier to its own function. Refactor some device and command buffer params to avoid duplicate look-ups. Add some const decls to command buffer state that shouldn't change down the pre-call path.
Diffstat (limited to 'layers/buffer_validation.cpp')
-rw-r--r--layers/buffer_validation.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/layers/buffer_validation.cpp b/layers/buffer_validation.cpp
index cafa37e5..9bc2ef2b 100644
--- a/layers/buffer_validation.cpp
+++ b/layers/buffer_validation.cpp
@@ -351,7 +351,7 @@ void TransitionSubpassLayouts(layer_data *device_data, GLOBAL_CB_NODE *pCB, cons
}
}
-bool ValidateImageAspectLayout(layer_data *device_data, GLOBAL_CB_NODE *pCB, const VkImageMemoryBarrier *mem_barrier,
+bool ValidateImageAspectLayout(layer_data *device_data, GLOBAL_CB_NODE const *pCB, const VkImageMemoryBarrier *mem_barrier,
uint32_t level, uint32_t layer, VkImageAspectFlags aspect) {
if (!(mem_barrier->subresourceRange.aspectMask & aspect)) {
return false;
@@ -478,9 +478,8 @@ bool ValidateBarrierLayoutToImageUsage(layer_data *device_data, const VkImageMem
}
// Verify image barriers are compatible with the images they reference.
-bool ValidateBarriersToImages(layer_data *device_data, VkCommandBuffer cmdBuffer, uint32_t imageMemoryBarrierCount,
+bool ValidateBarriersToImages(layer_data *device_data, GLOBAL_CB_NODE const *cb_state, uint32_t imageMemoryBarrierCount,
const VkImageMemoryBarrier *pImageMemoryBarriers, const char *func_name) {
- GLOBAL_CB_NODE *pCB = GetCBNode(device_data, cmdBuffer);
bool skip = false;
for (uint32_t i = 0; i < imageMemoryBarrierCount; ++i) {
@@ -530,10 +529,10 @@ bool ValidateBarriersToImages(layer_data *device_data, VkCommandBuffer cmdBuffer
uint32_t level = img_barrier->subresourceRange.baseMipLevel + j;
for (uint32_t k = 0; k < layer_count; k++) {
uint32_t layer = img_barrier->subresourceRange.baseArrayLayer + k;
- skip |= ValidateImageAspectLayout(device_data, pCB, img_barrier, level, layer, VK_IMAGE_ASPECT_COLOR_BIT);
- skip |= ValidateImageAspectLayout(device_data, pCB, img_barrier, level, layer, VK_IMAGE_ASPECT_DEPTH_BIT);
- skip |= ValidateImageAspectLayout(device_data, pCB, img_barrier, level, layer, VK_IMAGE_ASPECT_STENCIL_BIT);
- skip |= ValidateImageAspectLayout(device_data, pCB, img_barrier, level, layer, VK_IMAGE_ASPECT_METADATA_BIT);
+ skip |= ValidateImageAspectLayout(device_data, cb_state, img_barrier, level, layer, VK_IMAGE_ASPECT_COLOR_BIT);
+ skip |= ValidateImageAspectLayout(device_data, cb_state, img_barrier, level, layer, VK_IMAGE_ASPECT_DEPTH_BIT);
+ skip |= ValidateImageAspectLayout(device_data, cb_state, img_barrier, level, layer, VK_IMAGE_ASPECT_STENCIL_BIT);
+ skip |= ValidateImageAspectLayout(device_data, cb_state, img_barrier, level, layer, VK_IMAGE_ASPECT_METADATA_BIT);
}
}
}