tests: Add new case to FramebufferCreateErrors
Add a case to FramebufferCreateErrors test where the samples
mismatch between the framebuffer attachment and the corresponding
renderpass attachment.
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
index 32705ab..0b11a9c 100644
--- a/tests/layer_validation_tests.cpp
+++ b/tests/layer_validation_tests.cpp
@@ -3225,7 +3225,8 @@
TEST_DESCRIPTION("Hit errors when attempting to create a framebuffer :\n"
" 1. Mismatch between fb & renderPass attachmentCount\n"
" 2. Use a color image as depthStencil attachment\n"
- " 3. Mismatch fb & renderPass attachment formats\n");
+ " 3. Mismatch fb & renderPass attachment formats\n"
+ " 4. Mismatch fb & renderPass attachment #samples\n");
ASSERT_NO_FATAL_FAILURE(InitState());
ASSERT_NO_FATAL_FAILURE(InitRenderTarget());
@@ -3246,6 +3247,7 @@
rpci.attachmentCount = 1;
VkAttachmentDescription attach_desc = {};
attach_desc.format = VK_FORMAT_B8G8R8A8_UNORM;
+ attach_desc.samples = VK_SAMPLE_COUNT_1_BIT;
rpci.pAttachments = &attach_desc;
rpci.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
VkRenderPass rp;
@@ -3317,6 +3319,26 @@
if (err == VK_SUCCESS) {
vkDestroyFramebuffer(m_device->device(), fb, NULL);
}
+ vkDestroyRenderPass(m_device->device(), rp, NULL);
+
+ // Create new renderpass with alternate sample count from fb
+ attach_desc.format = VK_FORMAT_B8G8R8A8_UNORM;
+ attach_desc.samples = VK_SAMPLE_COUNT_4_BIT;
+ err = vkCreateRenderPass(m_device->device(), &rpci, NULL, &rp);
+ ASSERT_VK_SUCCESS(err);
+
+ // Cause error due to mis-matched sample count between rp & fb
+ fb_info.renderPass = rp;
+ m_errorMonitor->SetDesiredFailureMsg(VK_DEBUG_REPORT_ERROR_BIT_EXT,
+ " has VK_SAMPLE_COUNT_1_BIT samples "
+ "that do not match the "
+ "VK_SAMPLE_COUNT_4_BIT ");
+ err = vkCreateFramebuffer(device(), &fb_info, NULL, &fb);
+
+ m_errorMonitor->VerifyFound();
+ if (err == VK_SUCCESS) {
+ vkDestroyFramebuffer(m_device->device(), fb, NULL);
+ }
vkDestroyRenderPass(m_device->device(), rp, NULL);
}