From 3e0d3a4402a823c28b01c440cd021f639b1060a0 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Mon, 12 Jun 2017 12:46:39 -0700 Subject: layers: Split validate & update of CmdWriteTimestamp --- layers/core_validation.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'layers/core_validation.cpp') diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index df227ddc..f50e6b72 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -6732,15 +6732,22 @@ VKAPI_ATTR void VKAPI_CALL CmdWriteTimestamp(VkCommandBuffer commandBuffer, VkPi std::unique_lock lock(global_lock); GLOBAL_CB_NODE *cb_state = GetCBNode(dev_data, commandBuffer); if (cb_state) { - QueryObject query = {queryPool, slot}; - cb_state->queryUpdates.emplace_back([=](VkQueue q) {return setQueryState(q, commandBuffer, query, true);}); skip |= ValidateCmdQueueFlags(dev_data, cb_state, "vkCmdWriteTimestamp()", VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT, VALIDATION_ERROR_1e802415); skip |= ValidateCmd(dev_data, cb_state, CMD_WRITETIMESTAMP, "vkCmdWriteTimestamp()"); - UpdateCmdBufferLastCmd(cb_state, CMD_WRITETIMESTAMP); } lock.unlock(); - if (!skip) dev_data->dispatch_table.CmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, slot); + + if (skip) return; + + dev_data->dispatch_table.CmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, slot); + + lock.lock(); + if (cb_state) { + QueryObject query = {queryPool, slot}; + cb_state->queryUpdates.emplace_back([=](VkQueue q) {return setQueryState(q, commandBuffer, query, true);}); + UpdateCmdBufferLastCmd(cb_state, CMD_WRITETIMESTAMP); + } } static bool MatchUsage(layer_data *dev_data, uint32_t count, const VkAttachmentReference *attachments, -- cgit v1.2.3