diff options
| author | Mark Lobodzinski <mark@lunarg.com> | 2017-01-18 15:14:29 -0700 |
|---|---|---|
| committer | Mark Lobodzinski <mark@lunarg.com> | 2017-01-19 13:46:48 -0700 |
| commit | f89babd2ae76780c8145da6e648771aee9745cc4 (patch) | |
| tree | 6c11a443433c716686650ab12e29f0dda107c8c0 /layers/core_validation.cpp | |
| parent | 1492dd46cbfaee0cd5b70fc682874f670035a4cd (diff) | |
| download | usermoji-f89babd2ae76780c8145da6e648771aee9745cc4.tar.xz | |
layers: Refactor ClearAttachments to pre/post form
Change-Id: Ica1bf93ddcd7eb0c2e83171ba5e56df382571677
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); } |
