diff options
Diffstat (limited to 'layers/core_validation.cpp')
| -rw-r--r-- | layers/core_validation.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
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<std::mutex> 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, |
