diff options
| author | Chris Forbes <chrisforbes@google.com> | 2017-08-18 15:00:48 -0700 |
|---|---|---|
| committer | jzulauf-lunarg <32470354+jzulauf-lunarg@users.noreply.github.com> | 2018-03-30 08:44:28 -0600 |
| commit | 5c447e7b228008258cdbf79dc4f9b2a5b9e6b3e4 (patch) | |
| tree | 8e401267195027e0df557dc24dcfc1342867fc23 | |
| parent | 8df2c26952f6748d964d146d1ac592931ef61bda (diff) | |
| download | usermoji-5c447e7b228008258cdbf79dc4f9b2a5b9e6b3e4.tar.xz | |
layers: Avoid a redundant CB lookup
| -rw-r--r-- | layers/buffer_validation.cpp | 18 | ||||
| -rw-r--r-- | layers/buffer_validation.h | 2 | ||||
| -rw-r--r-- | layers/core_validation.cpp | 4 |
3 files changed, 11 insertions, 13 deletions
diff --git a/layers/buffer_validation.cpp b/layers/buffer_validation.cpp index 3a369803..77be373b 100644 --- a/layers/buffer_validation.cpp +++ b/layers/buffer_validation.cpp @@ -572,10 +572,8 @@ bool ValidateBarriersToImages(layer_data *device_data, GLOBAL_CB_NODE const *cb_ return skip; } -void TransitionImageLayouts(layer_data *device_data, VkCommandBuffer cmdBuffer, uint32_t memBarrierCount, +void TransitionImageLayouts(layer_data *device_data, GLOBAL_CB_NODE *cb_state, uint32_t memBarrierCount, const VkImageMemoryBarrier *pImgMemBarriers) { - GLOBAL_CB_NODE *pCB = GetCBNode(device_data, cmdBuffer); - for (uint32_t i = 0; i < memBarrierCount; ++i) { auto mem_barrier = &pImgMemBarriers[i]; if (!mem_barrier) continue; @@ -596,14 +594,14 @@ void TransitionImageLayouts(layer_data *device_data, VkCommandBuffer cmdBuffer, uint32_t level = mem_barrier->subresourceRange.baseMipLevel + j; for (uint32_t k = 0; k < layer_count; k++) { uint32_t layer = mem_barrier->subresourceRange.baseArrayLayer + k; - TransitionImageAspectLayout(device_data, pCB, mem_barrier, level, layer, VK_IMAGE_ASPECT_COLOR_BIT); - TransitionImageAspectLayout(device_data, pCB, mem_barrier, level, layer, VK_IMAGE_ASPECT_DEPTH_BIT); - TransitionImageAspectLayout(device_data, pCB, mem_barrier, level, layer, VK_IMAGE_ASPECT_STENCIL_BIT); - TransitionImageAspectLayout(device_data, pCB, mem_barrier, level, layer, VK_IMAGE_ASPECT_METADATA_BIT); + TransitionImageAspectLayout(device_data, cb_state, mem_barrier, level, layer, VK_IMAGE_ASPECT_COLOR_BIT); + TransitionImageAspectLayout(device_data, cb_state, mem_barrier, level, layer, VK_IMAGE_ASPECT_DEPTH_BIT); + TransitionImageAspectLayout(device_data, cb_state, mem_barrier, level, layer, VK_IMAGE_ASPECT_STENCIL_BIT); + TransitionImageAspectLayout(device_data, cb_state, mem_barrier, level, layer, VK_IMAGE_ASPECT_METADATA_BIT); if (GetDeviceExtensions(device_data)->vk_khr_sampler_ycbcr_conversion) { - TransitionImageAspectLayout(device_data, pCB, mem_barrier, level, layer, VK_IMAGE_ASPECT_PLANE_0_BIT_KHR); - TransitionImageAspectLayout(device_data, pCB, mem_barrier, level, layer, VK_IMAGE_ASPECT_PLANE_1_BIT_KHR); - TransitionImageAspectLayout(device_data, pCB, mem_barrier, level, layer, VK_IMAGE_ASPECT_PLANE_2_BIT_KHR); + TransitionImageAspectLayout(device_data, cb_state, mem_barrier, level, layer, VK_IMAGE_ASPECT_PLANE_0_BIT_KHR); + TransitionImageAspectLayout(device_data, cb_state, mem_barrier, level, layer, VK_IMAGE_ASPECT_PLANE_1_BIT_KHR); + TransitionImageAspectLayout(device_data, cb_state, mem_barrier, level, layer, VK_IMAGE_ASPECT_PLANE_2_BIT_KHR); } } } diff --git a/layers/buffer_validation.h b/layers/buffer_validation.h index a07a5d05..b8fe5ca6 100644 --- a/layers/buffer_validation.h +++ b/layers/buffer_validation.h @@ -121,7 +121,7 @@ bool ValidateBarrierLayoutToImageUsage(layer_data *device_data, const VkImageMem bool ValidateBarriersToImages(layer_data *device_data, GLOBAL_CB_NODE const *cb_state, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier *pImageMemoryBarriers, const char *func_name); -void TransitionImageLayouts(layer_data *device_data, VkCommandBuffer cmdBuffer, uint32_t memBarrierCount, +void TransitionImageLayouts(layer_data *device_data, GLOBAL_CB_NODE *cb_state, uint32_t memBarrierCount, const VkImageMemoryBarrier *pImgMemBarriers); bool VerifySourceImageLayout(layer_data *dev_data, GLOBAL_CB_NODE *cb_node, VkImage srcImage, VkImageSubresourceLayers subLayers, diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 9ea19d17..1e9f01e1 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -8048,7 +8048,7 @@ VKAPI_ATTR void VKAPI_CALL CmdWaitEvents(VkCommandBuffer commandBuffer, uint32_t } cb_state->eventUpdates.emplace_back( [=](VkQueue q) { return validateEventStageMask(q, cb_state, eventCount, first_event_index, sourceStageMask); }); - TransitionImageLayouts(dev_data, commandBuffer, imageMemoryBarrierCount, pImageMemoryBarriers); + TransitionImageLayouts(dev_data, cb_state, imageMemoryBarrierCount, pImageMemoryBarriers); } } lock.unlock(); @@ -8089,7 +8089,7 @@ static bool PreCallValidateCmdPipelineBarrier(layer_data *device_data, GLOBAL_CB static void PreCallRecordCmdPipelineBarrier(layer_data *device_data, GLOBAL_CB_NODE *cb_state, VkCommandBuffer commandBuffer, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier *pImageMemoryBarriers) { - TransitionImageLayouts(device_data, commandBuffer, imageMemoryBarrierCount, pImageMemoryBarriers); + TransitionImageLayouts(device_data, cb_state, imageMemoryBarrierCount, pImageMemoryBarriers); } VKAPI_ATTR void VKAPI_CALL CmdPipelineBarrier(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, |
