@@ -1432,3 +1432,53 @@ TEST_F(NegativeMultiview, MeshShader) {
14321432 pipe.CreateGraphicsPipeline ();
14331433 m_errorMonitor->VerifyFound ();
14341434}
1435+
1436+ TEST_F (NegativeMultiview, MultiviewPerViewViewports) {
1437+ SetTargetApiVersion (VK_API_VERSION_1_1);
1438+ AddRequiredExtensions (VK_KHR_MULTIVIEW_EXTENSION_NAME);
1439+ AddRequiredExtensions (VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_EXTENSION_NAME);
1440+ AddRequiredFeature (vkt::Feature::multiview);
1441+ AddRequiredFeature (vkt::Feature::multiviewPerViewViewports);
1442+ RETURN_IF_SKIP (Init ());
1443+ InitRenderTarget ();
1444+
1445+ uint32_t view_mask = 0x2u ;
1446+ VkRenderPassMultiviewCreateInfo rp_mv_ci = vku::InitStructHelper ();
1447+ rp_mv_ci.subpassCount = 1 ;
1448+ rp_mv_ci.pViewMasks = &view_mask;
1449+
1450+ RenderPassSingleSubpass rp (*this );
1451+ rp.AddAttachmentDescription (VK_FORMAT_B8G8R8A8_UNORM, VK_IMAGE_LAYOUT_UNDEFINED);
1452+ rp.AddAttachmentReference ({0 , VK_IMAGE_LAYOUT_GENERAL});
1453+ rp.AddColorAttachment (0 );
1454+ rp.CreateRenderPass (&rp_mv_ci);
1455+
1456+ VkImageCreateInfo image_create_info = vku::InitStructHelper ();
1457+ image_create_info.flags = 0u ;
1458+ image_create_info.imageType = VK_IMAGE_TYPE_2D;
1459+ image_create_info.format = VK_FORMAT_B8G8R8A8_UNORM;
1460+ image_create_info.extent = {32u , 32u , 1u };
1461+ image_create_info.mipLevels = 1u ;
1462+ image_create_info.arrayLayers = 2u ;
1463+ image_create_info.samples = VK_SAMPLE_COUNT_1_BIT;
1464+ image_create_info.tiling = VK_IMAGE_TILING_OPTIMAL;
1465+ image_create_info.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
1466+ vkt::Image image (*m_device, image_create_info, vkt::set_layout);
1467+ vkt::ImageView image_view = image.CreateView (VK_IMAGE_VIEW_TYPE_2D_ARRAY);
1468+
1469+ vkt::Framebuffer framebuffer (*m_device, rp, 1 , &image_view.handle ());
1470+
1471+ VkRenderPassBeginInfo render_pass_bi = vku::InitStructHelper ();
1472+ render_pass_bi.renderPass = rp;
1473+ render_pass_bi.framebuffer = framebuffer;
1474+ render_pass_bi.renderArea .extent = {32u , 32u };
1475+ render_pass_bi.clearValueCount = 1u ;
1476+ render_pass_bi.pClearValues = m_renderPassClearValues.data ();
1477+
1478+ CreatePipelineHelper pipe (*this );
1479+ pipe.gp_ci_ .renderPass = rp;
1480+ m_errorMonitor->SetDesiredError (" VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07730" );
1481+ m_errorMonitor->SetDesiredError (" VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07731" );
1482+ pipe.CreateGraphicsPipeline ();
1483+ m_errorMonitor->VerifyFound ();
1484+ }
0 commit comments