diff options
| author | Chris Forbes <chrisforbes@google.com> | 2017-08-08 17:35:51 -0700 |
|---|---|---|
| committer | Chris Forbes <chrisf@ijw.co.nz> | 2017-08-09 09:40:12 -0700 |
| commit | 152d130d1925642665e38a77deae8eb78706723c (patch) | |
| tree | b9445099f5d8e57381220edc2b4d27e93dd76723 | |
| parent | 4244202edcb3e7cfa35391ce97c848a69bf86229 (diff) | |
| download | usermoji-152d130d1925642665e38a77deae8eb78706723c.tar.xz | |
layers: Untangle side effects in CmdWaitEvents
| -rw-r--r-- | layers/core_validation.cpp | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 2446033b..2e33a9e5 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -6739,29 +6739,29 @@ VKAPI_ATTR void VKAPI_CALL CmdWaitEvents(VkCommandBuffer commandBuffer, uint32_t VALIDATION_ERROR_1e600912); skip |= ValidateStageMaskGsTsEnables(dev_data, dstStageMask, "vkCmdWaitEvents()", VALIDATION_ERROR_1e600910, VALIDATION_ERROR_1e600914); - auto first_event_index = cb_state->events.size(); - for (uint32_t i = 0; i < eventCount; ++i) { - auto event_state = GetEventNode(dev_data, pEvents[i]); - if (event_state) { - addCommandBufferBinding(&event_state->cb_bindings, {HandleToUint64(pEvents[i]), kVulkanObjectTypeEvent}, cb_state); - event_state->cb_bindings.insert(cb_state); - } - cb_state->waitedEvents.insert(pEvents[i]); - cb_state->events.push_back(pEvents[i]); - } - cb_state->eventUpdates.emplace_back([=](VkQueue q){ - return validateEventStageMask(q, cb_state, eventCount, first_event_index, sourceStageMask); - }); skip |= ValidateCmdQueueFlags(dev_data, cb_state, "vkCmdWaitEvents()", VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT, VALIDATION_ERROR_1e602415); skip |= ValidateCmd(dev_data, cb_state, CMD_WAITEVENTS, "vkCmdWaitEvents()"); skip |= ValidateBarriersToImages(dev_data, cb_state, imageMemoryBarrierCount, pImageMemoryBarriers, "vkCmdWaitEvents()"); - if (!skip) { - TransitionImageLayouts(dev_data, commandBuffer, imageMemoryBarrierCount, pImageMemoryBarriers); - } skip |= ValidateBarriers(dev_data, "vkCmdWaitEvents()", cb_state, sourceStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers); + if (!skip) { + auto first_event_index = cb_state->events.size(); + for (uint32_t i = 0; i < eventCount; ++i) { + auto event_state = GetEventNode(dev_data, pEvents[i]); + if (event_state) { + addCommandBufferBinding(&event_state->cb_bindings, {HandleToUint64(pEvents[i]), kVulkanObjectTypeEvent}, cb_state); + event_state->cb_bindings.insert(cb_state); + } + cb_state->waitedEvents.insert(pEvents[i]); + cb_state->events.push_back(pEvents[i]); + } + cb_state->eventUpdates.emplace_back([=](VkQueue q){ + return validateEventStageMask(q, cb_state, eventCount, first_event_index, sourceStageMask); + }); + TransitionImageLayouts(dev_data, commandBuffer, imageMemoryBarrierCount, pImageMemoryBarriers); + } } lock.unlock(); if (!skip) |
