tests: Make ExecuteCommandsPrimaryCB more focused
This test had some complications:
- It tried to record an invocation of a command buffer into itself.
- The renderpass instance was configured for inline commands rather than
CmdExecuteCommands.
Split out the victim CB, and start the renderpass instance correctly.
There's still a complaint during cleanup that the inner command
buffer is still in use -- but fixing that last problem requires more
substantial changes.
Signed-off-by: Chris Forbes <chrisforbes@google.com>
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
index a797173..d54250c 100644
--- a/tests/layer_validation_tests.cpp
+++ b/tests/layer_validation_tests.cpp
@@ -11130,16 +11130,20 @@
TEST_DESCRIPTION("Attempt vkCmdExecuteCommands w/ a primary cmd buffer"
" (should only be secondary)");
- m_errorMonitor->SetDesiredFailureMsg(VK_DEBUG_REPORT_ERROR_BIT_EXT, "vkCmdExecuteCommands() called w/ Primary Cmd Buffer ");
-
ASSERT_NO_FATAL_FAILURE(InitState());
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
- BeginCommandBuffer();
+ // An empty primary command buffer
+ VkCommandBufferObj cb(m_device, m_commandPool);
+ cb.BeginCommandBuffer();
+ cb.EndCommandBuffer();
- VkCommandBuffer primCB = m_commandBuffer->GetBufferHandle();
- vkCmdExecuteCommands(m_commandBuffer->GetBufferHandle(), 1, &primCB);
+ m_commandBuffer->BeginCommandBuffer();
+ vkCmdBeginRenderPass(m_commandBuffer->handle(), &renderPassBeginInfo(), VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS);
+ VkCommandBuffer handle = cb.handle();
+ m_errorMonitor->SetDesiredFailureMsg(VK_DEBUG_REPORT_ERROR_BIT_EXT, "vkCmdExecuteCommands() called w/ Primary Cmd Buffer ");
+ vkCmdExecuteCommands(m_commandBuffer->handle(), 1, &handle);
m_errorMonitor->VerifyFound();
}