Fixes precise occlusion query tests
authorMatthew Netsch <quic_mnetsch@quicinc.com>
Thu, 23 May 2019 13:06:45 +0000 (09:06 -0400)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Thu, 30 May 2019 10:20:07 +0000 (06:20 -0400)
Individual test cases were not isolated
so they interfered with each other

Components: Vulkan
VK-GL-CTS Issue: 1784

Affects:
dEQP-VK.query_pool.occlusion_query.*precise*

Change-Id: I6ad422612c80c6aa5efc90fd90e0e7ce91e9f8bb

external/vulkancts/modules/vulkan/query_pool/vktQueryPoolOcclusionTests.cpp

index 70642d6..2f10d68 100644 (file)
@@ -779,6 +779,15 @@ vk::Move<vk::VkCommandBuffer> OcclusionQueryTestInstance::recordRender (vk::VkCo
        vk.cmdDraw(*cmdBuffer, NUM_VERTICES_IN_DRAWCALL, 1, START_VERTEX, 0);
        vk.cmdEndQuery(*cmdBuffer, m_queryPool, QUERY_INDEX_CAPTURE_ALL);
 
+       endRenderPass(vk, *cmdBuffer);
+
+       beginRenderPass(vk, *cmdBuffer, *m_stateObjects->m_renderPass, *m_stateObjects->m_framebuffer, vk::makeRect2D(0, 0, StateObjects::WIDTH, StateObjects::HEIGHT), (deUint32)renderPassClearValues.size(), &renderPassClearValues[0]);
+
+       vk.cmdBindPipeline(*cmdBuffer, vk::VK_PIPELINE_BIND_POINT_GRAPHICS, *m_stateObjects->m_pipeline);
+
+       // Draw un-occluded geometry
+       vk.cmdDraw(*cmdBuffer, NUM_VERTICES_IN_DRAWCALL, 1, START_VERTEX, 0);
+
        // Partially occlude geometry
        vk.cmdDraw(*cmdBuffer, NUM_VERTICES_IN_PARTIALLY_OCCLUDED_DRAWCALL, 1, START_VERTEX_PARTIALLY_OCCLUDED, 0);
 
@@ -787,6 +796,18 @@ vk::Move<vk::VkCommandBuffer> OcclusionQueryTestInstance::recordRender (vk::VkCo
        vk.cmdDraw(*cmdBuffer, NUM_VERTICES_IN_DRAWCALL, 1, START_VERTEX, 0);
        vk.cmdEndQuery(*cmdBuffer, m_queryPool, QUERY_INDEX_CAPTURE_PARTIALLY_OCCLUDED);
 
+       endRenderPass(vk, *cmdBuffer);
+
+       beginRenderPass(vk, *cmdBuffer, *m_stateObjects->m_renderPass, *m_stateObjects->m_framebuffer, vk::makeRect2D(0, 0, StateObjects::WIDTH, StateObjects::HEIGHT), (deUint32)renderPassClearValues.size(), &renderPassClearValues[0]);
+
+       vk.cmdBindPipeline(*cmdBuffer, vk::VK_PIPELINE_BIND_POINT_GRAPHICS, *m_stateObjects->m_pipeline);
+
+       // Draw un-occluded geometry
+       vk.cmdDraw(*cmdBuffer, NUM_VERTICES_IN_DRAWCALL, 1, START_VERTEX, 0);
+
+       // Partially occlude geometry
+       vk.cmdDraw(*cmdBuffer, NUM_VERTICES_IN_PARTIALLY_OCCLUDED_DRAWCALL, 1, START_VERTEX_PARTIALLY_OCCLUDED, 0);
+
        // Occlude geometry
        vk.cmdDraw(*cmdBuffer, NUM_VERTICES_IN_OCCLUDER_DRAWCALL, 1, START_VERTEX_OCCLUDER, 0);