aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Forbes <chrisforbes@google.com>2017-08-08 17:35:51 -0700
committerChris Forbes <chrisf@ijw.co.nz>2017-08-09 09:40:12 -0700
commit152d130d1925642665e38a77deae8eb78706723c (patch)
treeb9445099f5d8e57381220edc2b4d27e93dd76723
parent4244202edcb3e7cfa35391ce97c848a69bf86229 (diff)
downloadusermoji-152d130d1925642665e38a77deae8eb78706723c.tar.xz
layers: Untangle side effects in CmdWaitEvents
-rw-r--r--layers/core_validation.cpp32
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)