From 62de66f7bf78ff32ce4475262954957a1888bcde Mon Sep 17 00:00:00 2001 From: Matthew Netsch Date: Thu, 23 May 2019 09:06:45 -0400 Subject: [PATCH] Fixes precise occlusion query tests 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 --- .../query_pool/vktQueryPoolOcclusionTests.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolOcclusionTests.cpp b/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolOcclusionTests.cpp index 70642d6..2f10d68 100644 --- a/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolOcclusionTests.cpp +++ b/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolOcclusionTests.cpp @@ -779,6 +779,15 @@ vk::Move 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 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); -- 2.7.4