aboutsummaryrefslogtreecommitdiff
path: root/layers/core_validation.cpp
diff options
context:
space:
mode:
authorChris Forbes <chrisforbes@google.com>2017-05-18 12:30:31 -0700
committerChris Forbes <chrisf@ijw.co.nz>2017-05-18 19:08:01 -0700
commit46b62ec93859229ffc5daf517d4c0fae6a3526e4 (patch)
treef244e6e6ba328237985888a2384914a141511c4d /layers/core_validation.cpp
parent62a80d64dd4ae3ed47b3e29aa66d4ab5c46b8892 (diff)
downloadusermoji-46b62ec93859229ffc5daf517d4c0fae6a3526e4.tar.xz
Convert primary->secondary command buffer links to GLOBAL_CB_NODE
This allows some simplification down the line
Diffstat (limited to 'layers/core_validation.cpp')
-rw-r--r--layers/core_validation.cpp36
1 files changed, 14 insertions, 22 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index 1c79b72f..1e32a1b6 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -4009,20 +4009,17 @@ static bool validatePrimaryCommandBufferState(layer_data *dev_data, GLOBAL_CB_NO
skip |= validateResources(dev_data, pCB);
- if (!pCB->secondaryCommandBuffers.empty()) {
- for (auto secondaryCmdBuffer : pCB->secondaryCommandBuffers) {
- GLOBAL_CB_NODE *pSubCB = GetCBNode(dev_data, secondaryCmdBuffer);
- skip |= validateResources(dev_data, pSubCB);
- if ((pSubCB->primaryCommandBuffer != pCB->commandBuffer) &&
- !(pSubCB->beginInfo.flags & VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT)) {
- log_msg(
- dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, 0,
- __LINE__, VALIDATION_ERROR_00135, "DS",
- "Commandbuffer 0x%p was submitted with secondary buffer 0x%p but that buffer has subsequently been bound to "
+ for (auto pSubCB : pCB->secondaryCommandBuffers) {
+ skip |= validateResources(dev_data, pSubCB);
+ if ((pSubCB->primaryCommandBuffer != pCB->commandBuffer) &&
+ !(pSubCB->beginInfo.flags & VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT)) {
+ log_msg(
+ dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, 0,
+ __LINE__, VALIDATION_ERROR_00135, "DS",
+ "Commandbuffer 0x%p was submitted with secondary buffer 0x%p but that buffer has subsequently been bound to "
"primary cmd buffer 0x%p and it does not have VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT set. %s",
- pCB->commandBuffer, secondaryCmdBuffer, pSubCB->primaryCommandBuffer,
- validation_error_map[VALIDATION_ERROR_00135]);
- }
+ pCB->commandBuffer, pSubCB->commandBuffer, pSubCB->primaryCommandBuffer,
+ validation_error_map[VALIDATION_ERROR_00135]);
}
}
@@ -4098,15 +4095,12 @@ static void PostCallRecordQueueSubmit(layer_data *dev_data, VkQueue queue, uint3
if (cb_node) {
cbs.push_back(submit->pCommandBuffers[i]);
for (auto secondaryCmdBuffer : cb_node->secondaryCommandBuffers) {
- cbs.push_back(secondaryCmdBuffer);
+ cbs.push_back(secondaryCmdBuffer->commandBuffer);
}
UpdateCmdBufImageLayouts(dev_data, cb_node);
incrementResources(dev_data, cb_node);
- if (!cb_node->secondaryCommandBuffers.empty()) {
- for (auto secondaryCmdBuffer : cb_node->secondaryCommandBuffers) {
- GLOBAL_CB_NODE *pSubCB = GetCBNode(dev_data, secondaryCmdBuffer);
- incrementResources(dev_data, pSubCB);
- }
+ for (auto secondaryCmdBuffer : cb_node->secondaryCommandBuffers) {
+ incrementResources(dev_data, secondaryCmdBuffer);
}
}
}
@@ -5515,7 +5509,6 @@ static bool PreCallValidateDestroyCommandPool(layer_data *dev_data, VkCommandPoo
static void PostCallRecordDestroyCommandPool(layer_data *dev_data, VkCommandPool pool, COMMAND_POOL_NODE *cp_state) {
// Must remove cmdpool from cmdpoolmap, after removing all cmdbuffers in its list from the commandBufferMap
- clearCommandBuffersInFlight(dev_data, cp_state);
for (auto cb : cp_state->commandBuffers) {
auto cb_node = GetCBNode(dev_data, cb);
clear_cmd_buf_and_mem_references(dev_data, cb_node);
@@ -5566,7 +5559,6 @@ VKAPI_ATTR VkResult VKAPI_CALL ResetCommandPool(VkDevice device, VkCommandPool c
// Reset all of the CBs allocated from this pool
if (VK_SUCCESS == result) {
lock.lock();
- clearCommandBuffersInFlight(dev_data, pPool);
for (auto cmdBuffer : pPool->commandBuffers) {
resetCB(dev_data, cmdBuffer);
}
@@ -9566,7 +9558,7 @@ VKAPI_ATTR void VKAPI_CALL CmdExecuteCommands(VkCommandBuffer commandBuffer, uin
SetLayout(dev_data, pCB, ilm_entry.first, ilm_entry.second);
}
pSubCB->primaryCommandBuffer = pCB->commandBuffer;
- pCB->secondaryCommandBuffers.insert(pSubCB->commandBuffer);
+ pCB->secondaryCommandBuffers.insert(pSubCB);
for (auto &function : pSubCB->queryUpdates) {
pCB->queryUpdates.push_back(function);
}