diff options
Diffstat (limited to 'layers/core_validation.cpp')
| -rw-r--r-- | layers/core_validation.cpp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 01312656..68cb1b64 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -8847,13 +8847,10 @@ static inline bool ContainsRect(VkRect2D rect, VkRect2D sub_rect) { return true; } -VKAPI_ATTR void VKAPI_CALL CmdClearAttachments(VkCommandBuffer commandBuffer, uint32_t attachmentCount, - const VkClearAttachment *pAttachments, uint32_t rectCount, - const VkClearRect *pRects) { - bool skip = false; - layer_data *dev_data = get_my_data_ptr(get_dispatch_key(commandBuffer), layer_data_map); - std::unique_lock<std::mutex> lock(global_lock); +bool PreCallValidateCmdClearAttachments(layer_data *dev_data, VkCommandBuffer commandBuffer, uint32_t attachmentCount, + const VkClearAttachment *pAttachments, uint32_t rectCount, const VkClearRect *pRects) { GLOBAL_CB_NODE *cb_node = getCBNode(dev_data, commandBuffer); + bool skip = false; if (cb_node) { skip |= ValidateCmd(dev_data, cb_node, CMD_CLEARATTACHMENTS, "vkCmdClearAttachments()"); UpdateCmdBufferLastCmd(dev_data, cb_node, CMD_CLEARATTACHMENTS); @@ -8943,7 +8940,18 @@ VKAPI_ATTR void VKAPI_CALL CmdClearAttachments(VkCommandBuffer commandBuffer, ui } } } - lock.unlock(); + return skip; +} + +VKAPI_ATTR void VKAPI_CALL CmdClearAttachments(VkCommandBuffer commandBuffer, uint32_t attachmentCount, + const VkClearAttachment *pAttachments, uint32_t rectCount, + const VkClearRect *pRects) { + bool skip = false; + layer_data *dev_data = get_my_data_ptr(get_dispatch_key(commandBuffer), layer_data_map); + { + std::lock_guard<std::mutex> lock(global_lock); + skip = PreCallValidateCmdClearAttachments(dev_data, commandBuffer, attachmentCount, pAttachments, rectCount, pRects); + } if (!skip) dev_data->dispatch_table.CmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects); } |
