Fix image view type for multiview multi draw tests
authorRicardo Garcia <rgarcia@igalia.com>
Tue, 21 Sep 2021 11:29:57 +0000 (13:29 +0200)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Fri, 1 Oct 2021 23:34:19 +0000 (23:34 +0000)
When using more than 1 layer, the image view type was incorrectly set to
VK_IMAGE_VIEW_TYPE_2D instead of VK_IMAGE_VIEW_TYPE_2D_ARRAY.

Affected tests:
dEQP-VK.draw.multi_draw.*multiview*

Components: Vulkan
VK-GL-CTS issue: 3130

Change-Id: Ia2aa5af46d8bd09abc9ba7d40cd1e8c26add21bf

external/vulkancts/modules/vulkan/draw/vktDrawMultiExtTests.cpp

index 7224b47..89882ea 100644 (file)
@@ -699,6 +699,7 @@ tcu::TestStatus MultiDrawInstance::iterate (void)
        const auto      imageDim                = static_cast<deUint32>(deSqrt(static_cast<double>(triangleCount)));
        const auto      imageExtent             = makeExtent3D(imageDim, imageDim, 1u);
        const auto      imageLayers             = (m_params.multiview ? 2u : 1u);
+       const auto      imageViewType   = ((imageLayers > 1u) ? VK_IMAGE_VIEW_TYPE_2D_ARRAY : VK_IMAGE_VIEW_TYPE_2D);
        const auto      colorUsage              = (VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT);
        const auto      dsUsage                 = (VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT);
        const auto      pixelCount              = imageExtent.width * imageExtent.height;
@@ -736,7 +737,7 @@ tcu::TestStatus MultiDrawInstance::iterate (void)
 
        ImageWithMemory colorBuffer                             (vkd, device, alloc, imageCreateInfo, MemoryRequirement::Any);
        const auto              colorSubresourceRange   = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, imageLayers);
-       const auto              colorBufferView                 = makeImageView(vkd, device, colorBuffer.get(), VK_IMAGE_VIEW_TYPE_2D, colorFormat, colorSubresourceRange);
+       const auto              colorBufferView                 = makeImageView(vkd, device, colorBuffer.get(), imageViewType, colorFormat, colorSubresourceRange);
 
        // Depth/stencil buffer.
        const VkImageCreateInfo dsCreateInfo =
@@ -760,7 +761,7 @@ tcu::TestStatus MultiDrawInstance::iterate (void)
 
        ImageWithMemory dsBuffer                        (vkd, device, alloc, dsCreateInfo, MemoryRequirement::Any);
        const auto              dsSubresourceRange      = makeImageSubresourceRange((VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT), 0u, 1u, 0u, imageLayers);
-       const auto              dsBufferView            = makeImageView(vkd, device, dsBuffer.get(), VK_IMAGE_VIEW_TYPE_2D, dsFormat, dsSubresourceRange);
+       const auto              dsBufferView            = makeImageView(vkd, device, dsBuffer.get(), imageViewType, dsFormat, dsSubresourceRange);
 
        // Output buffers to verify attachments.
        using BufferWithMemoryPtr = de::MovePtr<BufferWithMemory>;