Split descriptor set indexing render pass workload
authorMike Byrne <mike.byrne@arm.com>
Mon, 30 Sep 2019 13:57:05 +0000 (14:57 +0100)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Fri, 11 Oct 2019 07:20:56 +0000 (03:20 -0400)
The render pass workload for descriptor set indexing tests should be
split into multiple submissions to prevent timeouts observed in tests
for the VK_DESCRIPTOR_TYPE_SAMPLER,
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER and
VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE descriptor types.

Affects: dEQP-VK.descriptor_indexing*

Components: Vulkan

VK-GL-CTS Issue: 2026

Change-Id: I3b4876ec204fe1c1ebf174e06328653f0a5532d3

external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.cpp

index b7c3446..de3ca61 100644 (file)
@@ -1252,9 +1252,17 @@ tcu::TestStatus  CommonDescriptorInstance::iterate                                       (void)
                updateDescriptors       (v);
        }
 
-       vk::beginRenderPass             (m_vki, *v.commandBuffer, *v.renderPass, *v.frameBuffer->buffer, v.renderArea, m_clearColor);
-       m_vki.cmdDraw                   (*v.commandBuffer, v.vertexCount, 1u, 0u, 0u);
-       vk::endRenderPass               (m_vki, *v.commandBuffer);
+       v.renderArea.extent.width       = m_testParams.frameResolution.width/2;
+       v.renderArea.extent.height      = m_testParams.frameResolution.height/2;
+       for (int x = 0; x < 2; x++)
+               for (int y= 0; y < 2; y++)
+               {
+                       v.renderArea.offset.x           = x * m_testParams.frameResolution.width/2;
+                       v.renderArea.offset.y           = y * m_testParams.frameResolution.height/2;
+                       vk::beginRenderPass             (m_vki, *v.commandBuffer, *v.renderPass, *v.frameBuffer->buffer, v.renderArea, m_clearColor);
+                       m_vki.cmdDraw                   (*v.commandBuffer, v.vertexCount, 1u, 0u, 0u);
+                       vk::endRenderPass               (m_vki, *v.commandBuffer);
+               }
 
        return (iterateCommandEnd(v) ? tcu::TestStatus::pass : tcu::TestStatus::fail)("");
 }