aboutsummaryrefslogtreecommitdiff
path: root/layers/core_validation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'layers/core_validation.cpp')
-rw-r--r--layers/core_validation.cpp15
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,