Fix fragment shading rate validation layer warning
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Thu, 26 Aug 2021 11:42:53 +0000 (14:42 +0300)
committerPeter Kohaut <peter.kohaut@arm.com>
Thu, 2 Sep 2021 15:59:18 +0000 (15:59 +0000)
We passing a number of layer > 1 for an image view type of
VK_IMAGE_VIEW_TYPE_2D.

Also if we're not using ATTACHMENT_MODE_2DARRAY, then there is only
one layer for the fragment rate shading attachment, so we should check
against layer 0.

Components: Vulkan

Affects:
dEQP-VK.fragment_shading_rate.srlayered.*

VK-GL-CTS issue: 3079

Change-Id: I351f880a9bdd934f773e517713839c67ad453766

external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRateBasic.cpp

index 9186a65..273e609 100644 (file)
@@ -1325,7 +1325,8 @@ tcu::TestStatus FSRTestInstance::iterate (void)
                                                0u,                                                                             // deUint32                             baseMipLevel;
                                                1u,                                                                             // deUint32                             levelCount;
                                                0u,                                                                             // deUint32                             baseArrayLayer;
-                                               numSRLayers                                                             // deUint32                             layerCount;
+                                               srViewType == VK_IMAGE_VIEW_TYPE_2D ?
+                                               1 : numSRLayers,                                                // deUint32                             layerCount;
                                        }                                                                                       // VkImageSubresourceRange      subresourceRange;
                                };
                                srImageView = createImageView(vk, device, &imageViewCreateInfo, NULL);
@@ -2196,7 +2197,7 @@ tcu::TestStatus FSRTestInstance::iterate (void)
                                                        deInt32 pipelineRate = PrimIDToPipelineShadingRate(primID);
                                                        deInt32 primitiveRate = m_data.shaderWritesRate ? PrimIDToPrimitiveShadingRate(primID) : 0;
 
-                                                       deInt32 attachmentLayer = m_data.srLayered ? layer : 0;
+                                                       deInt32 attachmentLayer = (m_data.srLayered && modeIdx == ATTACHMENT_MODE_2DARRAY) ? layer : 0;
                                                        deInt32 attachmentRate = m_data.useAttachment() ? fillPtr[srFillBpp*((attachmentLayer * srHeight + (y / srTexelHeight)) * srWidth + (x / srTexelWidth))] : 0;
 
                                                        // Get mask of allowed shading rates