layers: GH465 Add validation for now bound VkPipeline
At the time of a Draw or Dispatch, a pipeline must be bound to the
command buffer. This adds a check to verify that.
Added tests for both draw and compute cases to verify the check.
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
index 99ce40a..b1a1b5b 100644
--- a/tests/layer_validation_tests.cpp
+++ b/tests/layer_validation_tests.cpp
@@ -2671,6 +2671,23 @@
vkCmdBindPipeline(m_commandBuffer->GetBufferHandle(),
VK_PIPELINE_BIND_POINT_GRAPHICS, bad_pipeline);
m_errorMonitor->VerifyFound();
+
+ // Now issue a draw call with no pipeline bound
+ m_errorMonitor->SetDesiredFailureMsg(
+ VK_DEBUG_REPORT_ERROR_BIT_EXT,
+ "At Draw/Dispatch time no valid VkPipeline is bound!");
+ ASSERT_NO_FATAL_FAILURE(InitState());
+ BeginCommandBuffer();
+ Draw(1, 0, 0, 0);
+ m_errorMonitor->VerifyFound();
+ // Finally same check once more but with Dispatch/Compute
+ m_errorMonitor->SetDesiredFailureMsg(
+ VK_DEBUG_REPORT_ERROR_BIT_EXT,
+ "At Draw/Dispatch time no valid VkPipeline is bound!");
+ ASSERT_NO_FATAL_FAILURE(InitState());
+ BeginCommandBuffer();
+ vkCmdDispatch(m_commandBuffer->GetBufferHandle(), 0, 0, 0);
+ m_errorMonitor->VerifyFound();
}
TEST_F(VkLayerTest, DescriptorSetNotUpdated) {