aboutsummaryrefslogtreecommitdiff
path: root/layers/core_validation.cpp
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2017-01-18 15:14:29 -0700
committerMark Lobodzinski <mark@lunarg.com>2017-01-19 13:46:48 -0700
commitf89babd2ae76780c8145da6e648771aee9745cc4 (patch)
tree6c11a443433c716686650ab12e29f0dda107c8c0 /layers/core_validation.cpp
parent1492dd46cbfaee0cd5b70fc682874f670035a4cd (diff)
downloadusermoji-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.cpp22
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);
}