diff options
author | Jeremy Kniager <jeremyk@lunarg.com> | 2018-02-02 15:06:10 -0700 |
---|---|---|
committer | jeremyk-lunarg <jeremyk@lunarg.com> | 2018-02-16 09:58:53 -0700 |
commit | a2ad0560f6d046747da14a612ac2c4b5e903d3dd (patch) | |
tree | f2dfd12db4b3edf70c46b70cd55d53f132309d81 | |
parent | 5f6b7bf3dab2c213b407e1dc16129c04e4405ff3 (diff) | |
download | vulkan-validation-layers-a2ad0560f6d046747da14a612ac2c4b5e903d3dd.tar.gz |
tests: Add test to verify issue 2213 fixed
Change-Id: I9776db7e08a0d69260a80f50f708db9517c68d69
-rw-r--r-- | tests/layer_validation_tests.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp index 31ef89367..71b57e432 100644 --- a/tests/layer_validation_tests.cpp +++ b/tests/layer_validation_tests.cpp @@ -13230,6 +13230,50 @@ TEST_F(VkLayerTest, MissingClearAttachment) { m_errorMonitor->VerifyFound(); } +TEST_F(VkPositiveLayerTest, ConfirmNoVLErrorWhenVkCmdClearAttachmentsCalledInSecondaryCB) { + TEST_DESCRIPTION( + "This test is to verify that when vkCmdClearAttachments is called by a secondary commandbuffer, the validation layers do " + "not throw an error if the primary commandbuffer begins a renderpass before executing the secondary commandbuffer."); + + ASSERT_NO_FATAL_FAILURE(Init()); + ASSERT_NO_FATAL_FAILURE(InitRenderTarget()); + + VkCommandBufferObj secondary(m_device, m_commandPool, VK_COMMAND_BUFFER_LEVEL_SECONDARY); + + VkCommandBufferBeginInfo info = {}; + VkCommandBufferInheritanceInfo hinfo = {}; + info.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT | VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT; + info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; + info.pInheritanceInfo = &hinfo; + hinfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO; + hinfo.pNext = NULL; + hinfo.renderPass = renderPass(); + hinfo.subpass = 0; + hinfo.framebuffer = m_framebuffer; + hinfo.occlusionQueryEnable = VK_FALSE; + hinfo.queryFlags = 0; + hinfo.pipelineStatistics = 0; + + secondary.begin(&info); + VkClearAttachment color_attachment; + color_attachment.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + color_attachment.clearValue.color.float32[0] = 0.0; + color_attachment.clearValue.color.float32[1] = 0.0; + color_attachment.clearValue.color.float32[2] = 0.0; + color_attachment.clearValue.color.float32[3] = 0.0; + color_attachment.colorAttachment = 0; + VkClearRect clear_rect = {{{0, 0}, {(uint32_t)m_width, (uint32_t)m_height}}, 0, 1}; + vkCmdClearAttachments(secondary.handle(), 1, &color_attachment, 1, &clear_rect); + m_errorMonitor->VerifyNotFound(); + secondary.end(); + + m_commandBuffer->begin(); + vkCmdBeginRenderPass(m_commandBuffer->handle(), &m_renderPassBeginInfo, VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS); + vkCmdExecuteCommands(m_commandBuffer->handle(), 1, &secondary.handle()); + vkCmdEndRenderPass(m_commandBuffer->handle()); + m_commandBuffer->end(); +} + TEST_F(VkLayerTest, CmdClearAttachmentTests) { TEST_DESCRIPTION("Various tests for validating usage of vkCmdClearAttachments"); |