Merge vk-gl-cts/vulkan-cts-1.3.2 into vk-gl-cts/main
[platform/upstream/VK-GL-CTS.git] / external / vulkancts / modules / vulkan / multiview / vktMultiViewRenderTests.cpp
index 47291fc..42dad4e 100644 (file)
@@ -269,8 +269,9 @@ protected:
        typedef de::SharedPtr<Unique<VkShaderModule> >  ShaderModuleSP;
 
        virtual tcu::TestStatus                                 iterate                                 (void);
-       virtual void                                                    beforeDraw                              (void);
-       virtual void                                                    afterDraw                               (void);
+       virtual void                                                    beforeRenderPass                (void);
+       virtual void                                                    afterRenderPass                 (void);
+       virtual void                                                    bindResources                   (void) {}
        virtual void                                                    draw                                    (const deUint32                 subpassCount,
                                                                                                                                         VkRenderPass                   renderPass,
                                                                                                                                         VkFramebuffer                  frameBuffer,
@@ -416,7 +417,7 @@ tcu::TestStatus MultiViewRenderTestInstance::iterate (void)
        return tcu::TestStatus::pass("Pass");
 }
 
-void MultiViewRenderTestInstance::beforeDraw (void)
+void MultiViewRenderTestInstance::beforeRenderPass (void)
 {
        const VkImageSubresourceRange   subresourceRange                =
        {
@@ -440,7 +441,7 @@ void MultiViewRenderTestInstance::beforeDraw (void)
                VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT);
 }
 
-void MultiViewRenderTestInstance::afterDraw (void)
+void MultiViewRenderTestInstance::afterRenderPass (void)
 {
        const VkImageSubresourceRange   subresourceRange                =
        {
@@ -504,7 +505,7 @@ void MultiViewRenderTestInstance::draw (const deUint32 subpassCount, VkRenderPas
 
        beginCommandBuffer(*m_device, *m_cmdBuffer);
 
-       beforeDraw();
+       beforeRenderPass();
 
        if (!m_useDynamicRendering)
        {
@@ -521,13 +522,15 @@ void MultiViewRenderTestInstance::draw (const deUint32 subpassCount, VkRenderPas
                cmdBeginRenderPass(*m_device, *m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE, m_parameters.renderingType);
        }
 
-       m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
-
-       if (m_parameters.viewIndex == TEST_TYPE_DRAW_INDEXED)
-               m_device->cmdBindIndexBuffer(*m_cmdBuffer, *m_vertexIndicesBuffer, 0u, VK_INDEX_TYPE_UINT32);
-
        for (deUint32 subpassNdx = 0u; subpassNdx < subpassCount; subpassNdx++)
        {
+               m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
+
+               if (m_parameters.viewIndex == TEST_TYPE_DRAW_INDEXED)
+                       m_device->cmdBindIndexBuffer(*m_cmdBuffer, *m_vertexIndicesBuffer, 0u, VK_INDEX_TYPE_UINT32);
+
+               bindResources();
+
 #ifndef CTS_USES_VULKANSC
                if (m_useDynamicRendering)
                {
@@ -567,7 +570,7 @@ void MultiViewRenderTestInstance::draw (const deUint32 subpassCount, VkRenderPas
        if (!m_useDynamicRendering)
                cmdEndRenderPass(*m_device, *m_cmdBuffer, m_parameters.renderingType);
 
-       afterDraw();
+       afterRenderPass();
 
        VK_CHECK(m_device->endCommandBuffer(*m_cmdBuffer));
        submitCommandsAndWait(*m_device, *m_logicalDevice, m_queue, *m_cmdBuffer);
@@ -1664,8 +1667,9 @@ class MultiViewAttachmentsTestInstance : public MultiViewRenderTestInstance
 public:
                                                MultiViewAttachmentsTestInstance        (Context& context, const TestParameters& parameters);
 protected:
-       tcu::TestStatus         iterate                                                         (void);
-       void                            beforeDraw                                                      (void);
+       tcu::TestStatus         iterate                                                         (void) override;
+       void                            beforeRenderPass                                        (void) override;
+       void                            bindResources                                           (void) override;
        void                            setImageData                                            (VkImage image);
        de::SharedPtr<ImageAttachment>  m_inputAttachment;
        Move<VkDescriptorPool>                  m_descriptorPool;
@@ -1736,7 +1740,7 @@ tcu::TestStatus MultiViewAttachmentsTestInstance::iterate (void)
        return tcu::TestStatus::pass("Pass");
 }
 
-void MultiViewAttachmentsTestInstance::beforeDraw (void)
+void MultiViewAttachmentsTestInstance::beforeRenderPass (void)
 {
        const VkDescriptorPoolSize poolSize =
        {
@@ -1798,7 +1802,6 @@ void MultiViewAttachmentsTestInstance::beforeDraw (void)
                0u,                                                     //deUint32                              baseArrayLayer;
                m_parameters.extent.depth,      //deUint32                              layerCount;
        };
-       m_device->cmdBindDescriptorSets(*m_cmdBuffer, vk::VK_PIPELINE_BIND_POINT_GRAPHICS, *m_pipelineLayout, 0u, 1u, &(*m_descriptorSet), 0u, NULL);
 
        imageBarrier(*m_device, *m_cmdBuffer, m_colorAttachment->getImage(), subresourceRange,
                VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
@@ -1814,6 +1817,11 @@ void MultiViewAttachmentsTestInstance::beforeDraw (void)
                VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT);
 }
 
+void MultiViewAttachmentsTestInstance::bindResources (void)
+{
+       m_device->cmdBindDescriptorSets(*m_cmdBuffer, vk::VK_PIPELINE_BIND_POINT_GRAPHICS, *m_pipelineLayout, 0u, 1u, &(*m_descriptorSet), 0u, NULL);
+}
+
 void MultiViewAttachmentsTestInstance::setImageData (VkImage image)
 {
        const MovePtr<tcu::Texture2DArray>              data            = imageData();
@@ -1937,7 +1945,7 @@ void MultiViewInstancedTestInstance::draw (const deUint32 subpassCount, VkRender
 
        beginCommandBuffer(*m_device, *m_cmdBuffer);
 
-       beforeDraw();
+       beforeRenderPass();
 
        if (!m_useDynamicRendering)
        {
@@ -1954,10 +1962,10 @@ void MultiViewInstancedTestInstance::draw (const deUint32 subpassCount, VkRender
                cmdBeginRenderPass(*m_device, *m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE, m_parameters.renderingType);
        }
 
-       m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
-
        for (deUint32 subpassNdx = 0u; subpassNdx < subpassCount; subpassNdx++)
        {
+               m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
+
 #ifndef CTS_USES_VULKANSC
                if (m_useDynamicRendering)
                {
@@ -1993,7 +2001,7 @@ void MultiViewInstancedTestInstance::draw (const deUint32 subpassCount, VkRender
        if (!m_useDynamicRendering)
                cmdEndRenderPass(*m_device, *m_cmdBuffer, m_parameters.renderingType);
 
-       afterDraw();
+       afterRenderPass();
 
        VK_CHECK(m_device->endCommandBuffer(*m_cmdBuffer));
        submitCommandsAndWait(*m_device, *m_logicalDevice, m_queue, *m_cmdBuffer);
@@ -2035,7 +2043,7 @@ void MultiViewInputRateInstanceTestInstance::draw (const deUint32 subpassCount,
 
        beginCommandBuffer(*m_device, *m_cmdBuffer);
 
-       beforeDraw();
+       beforeRenderPass();
 
        if (!m_useDynamicRendering)
        {
@@ -2052,10 +2060,10 @@ void MultiViewInputRateInstanceTestInstance::draw (const deUint32 subpassCount,
                cmdBeginRenderPass(*m_device, *m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE, m_parameters.renderingType);
        }
 
-       m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
-
        for (deUint32 subpassNdx = 0u; subpassNdx < subpassCount; subpassNdx++)
        {
+               m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
+
 #ifndef CTS_USES_VULKANSC
                if (m_useDynamicRendering)
                {
@@ -2092,7 +2100,7 @@ void MultiViewInputRateInstanceTestInstance::draw (const deUint32 subpassCount,
        if (!m_useDynamicRendering)
                cmdEndRenderPass(*m_device, *m_cmdBuffer, m_parameters.renderingType);
 
-       afterDraw();
+       afterRenderPass();
 
        VK_CHECK(m_device->endCommandBuffer(*m_cmdBuffer));
        submitCommandsAndWait(*m_device, *m_logicalDevice, m_queue, *m_cmdBuffer);
@@ -2191,7 +2199,7 @@ void MultiViewDrawIndirectTestInstance::draw (const deUint32 subpassCount, VkRen
 
        beginCommandBuffer(*m_device, *m_cmdBuffer);
 
-       beforeDraw();
+       beforeRenderPass();
 
        if (!m_useDynamicRendering)
        {
@@ -2208,13 +2216,13 @@ void MultiViewDrawIndirectTestInstance::draw (const deUint32 subpassCount, VkRen
                cmdBeginRenderPass(*m_device, *m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE, m_parameters.renderingType);
        }
 
-       m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
-
-       if (m_parameters.viewIndex == TEST_TYPE_DRAW_INDIRECT_INDEXED)
-               m_device->cmdBindIndexBuffer(*m_cmdBuffer, *m_vertexIndicesBuffer, 0u, VK_INDEX_TYPE_UINT32);
-
        for (deUint32 subpassNdx = 0u; subpassNdx < subpassCount; subpassNdx++)
        {
+               m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
+
+               if (m_parameters.viewIndex == TEST_TYPE_DRAW_INDIRECT_INDEXED)
+                       m_device->cmdBindIndexBuffer(*m_cmdBuffer, *m_vertexIndicesBuffer, 0u, VK_INDEX_TYPE_UINT32);
+
 #ifndef CTS_USES_VULKANSC
                if (m_useDynamicRendering)
                {
@@ -2266,7 +2274,7 @@ void MultiViewDrawIndirectTestInstance::draw (const deUint32 subpassCount, VkRen
        if (!m_useDynamicRendering)
                cmdEndRenderPass(*m_device, *m_cmdBuffer, m_parameters.renderingType);
 
-       afterDraw();
+       afterRenderPass();
 
        VK_CHECK(m_device->endCommandBuffer(*m_cmdBuffer));
        submitCommandsAndWait(*m_device, *m_logicalDevice, m_queue, *m_cmdBuffer);
@@ -2298,7 +2306,7 @@ void MultiViewClearAttachmentsTestInstance::draw (const deUint32 subpassCount, V
 
        beginCommandBuffer(*m_device, *m_cmdBuffer);
 
-       beforeDraw();
+       beforeRenderPass();
 
        if (!m_useDynamicRendering)
        {
@@ -2315,8 +2323,6 @@ void MultiViewClearAttachmentsTestInstance::draw (const deUint32 subpassCount, V
                cmdBeginRenderPass(*m_device, *m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE, m_parameters.renderingType);
        }
 
-       m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
-
        for (deUint32 subpassNdx = 0u; subpassNdx < subpassCount; subpassNdx++)
        {
                VkClearAttachment       clearAttachment =
@@ -2371,6 +2377,7 @@ void MultiViewClearAttachmentsTestInstance::draw (const deUint32 subpassCount, V
 #endif // CTS_USES_VULKANSC
 
                m_device->cmdClearAttachments(*m_cmdBuffer, 1u, &clearAttachment, 1u, &clearRect);
+               m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
                m_device->cmdBindPipeline(*m_cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, **pipelines[subpassNdx]);
 
                for (deUint32 drawNdx = 0u; drawNdx < drawCountPerSubpass; ++drawNdx)
@@ -2392,7 +2399,7 @@ void MultiViewClearAttachmentsTestInstance::draw (const deUint32 subpassCount, V
        if (!m_useDynamicRendering)
                cmdEndRenderPass(*m_device, *m_cmdBuffer, m_parameters.renderingType);
 
-       afterDraw();
+       afterRenderPass();
 
        VK_CHECK(m_device->endCommandBuffer(*m_cmdBuffer));
        submitCommandsAndWait(*m_device, *m_logicalDevice, m_queue, *m_cmdBuffer);
@@ -2428,7 +2435,7 @@ void MultiViewSecondaryCommandBufferTestInstance::draw (const deUint32 subpassCo
 
        beginCommandBuffer(*m_device, *m_cmdBuffer);
 
-       beforeDraw();
+       beforeRenderPass();
 
        const VkRenderPassBeginInfo renderPassBeginInfo
        {
@@ -2539,7 +2546,7 @@ void MultiViewSecondaryCommandBufferTestInstance::draw (const deUint32 subpassCo
        if (!m_useDynamicRendering)
                cmdEndRenderPass(*m_device, *m_cmdBuffer, m_parameters.renderingType);
 
-       afterDraw();
+       afterRenderPass();
 
        VK_CHECK(m_device->endCommandBuffer(*m_cmdBuffer));
        submitCommandsAndWait(*m_device, *m_logicalDevice, m_queue, *m_cmdBuffer);
@@ -2608,7 +2615,7 @@ void MultiViewPointSizeTestInstance::draw (const deUint32 subpassCount, VkRender
 
        beginCommandBuffer(*m_device, *m_cmdBuffer);
 
-       beforeDraw();
+       beforeRenderPass();
 
        if (!m_useDynamicRendering)
        {
@@ -2625,10 +2632,10 @@ void MultiViewPointSizeTestInstance::draw (const deUint32 subpassCount, VkRender
                cmdBeginRenderPass(*m_device, *m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE, m_parameters.renderingType);
        }
 
-       m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
-
        for (deUint32 subpassNdx = 0u; subpassNdx < subpassCount; subpassNdx++)
        {
+               m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
+
                m_device->cmdBindPipeline(*m_cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, **pipelines[subpassNdx]);
 
 #ifndef CTS_USES_VULKANSC
@@ -2665,7 +2672,7 @@ void MultiViewPointSizeTestInstance::draw (const deUint32 subpassCount, VkRender
        if (!m_useDynamicRendering)
                cmdEndRenderPass(*m_device, *m_cmdBuffer, m_parameters.renderingType);
 
-       afterDraw();
+       afterRenderPass();
 
        VK_CHECK(m_device->endCommandBuffer(*m_cmdBuffer));
        submitCommandsAndWait(*m_device, *m_logicalDevice, m_queue, *m_cmdBuffer);
@@ -2683,7 +2690,7 @@ protected:
                                                                                                         VkRenderPass                   renderPass,
                                                                                                         VkFramebuffer                  frameBuffer,
                                                                                                         vector<PipelineSp>&    pipelines);
-       void                    afterDraw                                               (void);
+       void                    afterRenderPass                                 (void);
 private:
        de::SharedPtr<ImageAttachment>  m_resolveAttachment;
 };
@@ -2793,7 +2800,7 @@ void MultiViewMultsampleTestInstance::draw (const deUint32 subpassCount, VkRende
 
        beginCommandBuffer(*m_device, *m_cmdBuffer);
 
-       beforeDraw();
+       beforeRenderPass();
 
        if (!m_useDynamicRendering)
        {
@@ -2810,10 +2817,10 @@ void MultiViewMultsampleTestInstance::draw (const deUint32 subpassCount, VkRende
                cmdBeginRenderPass(*m_device, *m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE, m_parameters.renderingType);
        }
 
-       m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
-
        for (deUint32 subpassNdx = 0u; subpassNdx < subpassCount; subpassNdx++)
        {
+               m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
+
                m_device->cmdBindPipeline(*m_cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, **pipelines[subpassNdx]);
 
 #ifndef CTS_USES_VULKANSC
@@ -2850,7 +2857,7 @@ void MultiViewMultsampleTestInstance::draw (const deUint32 subpassCount, VkRende
        if (!m_useDynamicRendering)
                cmdEndRenderPass(*m_device, *m_cmdBuffer, m_parameters.renderingType);
 
-       afterDraw();
+       afterRenderPass();
 
        m_device->cmdResolveImage(*m_cmdBuffer, m_colorAttachment->getImage(), VK_IMAGE_LAYOUT_GENERAL, m_resolveAttachment->getImage(), VK_IMAGE_LAYOUT_GENERAL, 1u, &imageResolveRegion);
 
@@ -2858,7 +2865,7 @@ void MultiViewMultsampleTestInstance::draw (const deUint32 subpassCount, VkRende
        submitCommandsAndWait(*m_device, *m_logicalDevice, m_queue, *m_cmdBuffer);
 }
 
-void MultiViewMultsampleTestInstance::afterDraw (void)
+void MultiViewMultsampleTestInstance::afterRenderPass (void)
 {
        const VkImageSubresourceRange   subresourceRange                =
        {
@@ -3100,7 +3107,7 @@ void MultiViewQueriesTestInstance::draw (const deUint32 subpassCount, VkRenderPa
 
        beginCommandBuffer(*m_device, *m_cmdBuffer);
 
-       beforeDraw();
+       beforeRenderPass();
 
        // Query pools must be reset before use
        m_device->cmdResetQueryPool(*m_cmdBuffer, *occlusionQueryPool, queryStartIndex, queryCountersNumber);
@@ -3122,8 +3129,6 @@ void MultiViewQueriesTestInstance::draw (const deUint32 subpassCount, VkRenderPa
                cmdBeginRenderPass(*m_device, *m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE, m_parameters.renderingType);
        }
 
-       m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
-
        m_occlusionExpectedValues.reserve(queryCountersNumber);
        m_counterSeriesStart.reserve(queryCountersNumber);
        m_counterSeriesEnd.reserve(queryCountersNumber);
@@ -3132,6 +3137,7 @@ void MultiViewQueriesTestInstance::draw (const deUint32 subpassCount, VkRenderPa
        {
                deUint32        queryCountersToUse      = getUsedViewsCount(subpassNdx);
 
+               m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
                m_device->cmdBindPipeline(*m_cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, **pipelines[subpassNdx]);
 
 #ifndef CTS_USES_VULKANSC
@@ -3193,7 +3199,7 @@ void MultiViewQueriesTestInstance::draw (const deUint32 subpassCount, VkRenderPa
        if (!m_useDynamicRendering)
                cmdEndRenderPass(*m_device, *m_cmdBuffer, m_parameters.renderingType);
 
-       afterDraw();
+       afterRenderPass();
 
        VK_CHECK(m_device->endCommandBuffer(*m_cmdBuffer));
        submitCommandsAndWait(*m_device, *m_logicalDevice, m_queue, *m_cmdBuffer);
@@ -3326,7 +3332,7 @@ void MultiViewReadbackTestInstance::drawClears (const deUint32 subpassCount, VkR
        beginCommandBuffer(*m_device, *m_cmdBuffer);
 
        if (clearPass)
-               beforeDraw();
+               beforeRenderPass();
 
        if (!m_useDynamicRendering)
        {
@@ -3405,7 +3411,7 @@ void MultiViewReadbackTestInstance::drawClears (const deUint32 subpassCount, VkR
                cmdEndRenderPass(*m_device, *m_cmdBuffer, m_parameters.renderingType);
 
        if (!clearPass)
-               afterDraw();
+               afterRenderPass();
 
        VK_CHECK(m_device->endCommandBuffer(*m_cmdBuffer));
        submitCommandsAndWait(*m_device, *m_logicalDevice, m_queue, *m_cmdBuffer);
@@ -3441,8 +3447,8 @@ protected:
                                                                                                                                                 VkRenderPass                                   renderPass,
                                                                                                                                                 VkFramebuffer                                  frameBuffer,
                                                                                                                                                 vector<PipelineSp>&                    pipelines) override;
-       void                                                    beforeDraw                                                      (void) override;
-       void                                                    afterDraw                                                       (void) override;
+       void                                                    beforeRenderPass                                                        (void) override;
+       void                                                    afterRenderPass                                                 (void) override;
        vector<VkImageView>                             makeAttachmentsVector                           (void);
        MovePtr<tcu::Texture2DArray>    imageData                                                       (void) const override;
        void                                                    readImage                                                       (VkImage                                                image,
@@ -3870,7 +3876,7 @@ void MultiViewDepthStencilTestInstance::draw (const deUint32 subpassCount, VkRen
 
        beginCommandBuffer(*m_device, *m_cmdBuffer);
 
-       beforeDraw();
+       beforeRenderPass();
 
        if (!m_useDynamicRendering)
        {
@@ -3887,12 +3893,11 @@ void MultiViewDepthStencilTestInstance::draw (const deUint32 subpassCount, VkRen
                cmdBeginRenderPass(*m_device, *m_cmdBuffer, &renderPassBeginInfo, VK_SUBPASS_CONTENTS_INLINE, m_parameters.renderingType);
        }
 
-       m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
-
        for (deUint32 subpassNdx = 0u; subpassNdx < subpassCount; subpassNdx++)
        {
                deUint32 firstVertexOffset = (subpassNdx < 4) ? 0u : m_squareCount * vertexPerPrimitive;
 
+               m_device->cmdBindVertexBuffers(*m_cmdBuffer, 0u, DE_LENGTH_OF_ARRAY(vertexBuffers), vertexBuffers, vertexBufferOffsets);
                m_device->cmdBindPipeline(*m_cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, **pipelines[subpassNdx]);
 
 #ifndef CTS_USES_VULKANSC
@@ -3961,15 +3966,15 @@ void MultiViewDepthStencilTestInstance::draw (const deUint32 subpassCount, VkRen
        if (!m_useDynamicRendering)
                cmdEndRenderPass(*m_device, *m_cmdBuffer, m_parameters.renderingType);
 
-       afterDraw();
+       afterRenderPass();
 
        VK_CHECK(m_device->endCommandBuffer(*m_cmdBuffer));
        submitCommandsAndWait(*m_device, *m_logicalDevice, m_queue, *m_cmdBuffer);
 }
 
-void MultiViewDepthStencilTestInstance::beforeDraw (void)
+void MultiViewDepthStencilTestInstance::beforeRenderPass (void)
 {
-       MultiViewRenderTestInstance::beforeDraw();
+       MultiViewRenderTestInstance::beforeRenderPass();
 
        const VkImageSubresourceRange   subresourceRange                =
        {
@@ -3996,9 +4001,9 @@ void MultiViewDepthStencilTestInstance::beforeDraw (void)
                VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT);
 }
 
-void MultiViewDepthStencilTestInstance::afterDraw (void)
+void MultiViewDepthStencilTestInstance::afterRenderPass (void)
 {
-       MultiViewRenderTestInstance::afterDraw();
+       MultiViewRenderTestInstance::afterRenderPass();
 
        const VkImageSubresourceRange   dsSubresourceRange              =
        {