From 88a37fd1e3ccfe27b92fb694c5aecbfa73165b85 Mon Sep 17 00:00:00 2001 From: zeppelin Date: Fri, 1 Apr 2016 16:09:55 -0700 Subject: [PATCH] Add missing memory barrier to draw tests. Fixes #352 --- .../modules/vulkan/draw/vktDrawBaseClass.cpp | 12 ++++++++++++ .../dynamic_state/vktDynamicStateBaseClass.cpp | 12 ++++++++++++ .../dynamic_state/vktDynamicStateRSTests.cpp | 14 ++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/external/vulkancts/modules/vulkan/draw/vktDrawBaseClass.cpp b/external/vulkancts/modules/vulkan/draw/vktDrawBaseClass.cpp index 3be2628ad..ab5c370cf 100644 --- a/external/vulkancts/modules/vulkan/draw/vktDrawBaseClass.cpp +++ b/external/vulkancts/modules/vulkan/draw/vktDrawBaseClass.cpp @@ -205,6 +205,18 @@ void DrawTestsBaseClass::beginRenderPass (void) m_vk.cmdClearColorImage(*m_cmdBuffer, m_colorTargetImage->object(), vk::VK_IMAGE_LAYOUT_GENERAL, &clearColor, 1, &subresourceRange); + const vk::VkMemoryBarrier memBarrier = + { + vk::VK_STRUCTURE_TYPE_MEMORY_BARRIER, + DE_NULL, + vk::VK_ACCESS_TRANSFER_WRITE_BIT, + vk::VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | vk::VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT + }; + + m_vk.cmdPipelineBarrier(*m_cmdBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, + vk::VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, + 0, 1, &memBarrier, 0, DE_NULL, 0, DE_NULL); + const vk::VkRect2D renderArea = { { 0, 0 }, { WIDTH, HEIGHT } }; const RenderPassBeginInfo renderPassBegin(*m_renderPass, *m_framebuffer, renderArea); diff --git a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateBaseClass.cpp b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateBaseClass.cpp index 3f47dd0c1..d44d80e64 100644 --- a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateBaseClass.cpp +++ b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateBaseClass.cpp @@ -206,6 +206,18 @@ void DynamicStateBaseClass::beginRenderPassWithClearColor (const vk::VkClearColo m_vk.cmdClearColorImage(*m_cmdBuffer, m_colorTargetImage->object(), vk::VK_IMAGE_LAYOUT_GENERAL, &clearColor, 1, &subresourceRange); + const vk::VkMemoryBarrier memBarrier = + { + vk::VK_STRUCTURE_TYPE_MEMORY_BARRIER, + DE_NULL, + vk::VK_ACCESS_TRANSFER_WRITE_BIT, + vk::VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | vk::VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT + }; + + m_vk.cmdPipelineBarrier(*m_cmdBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, + vk::VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, + 0, 1, &memBarrier, 0, DE_NULL, 0, DE_NULL); + const vk::VkRect2D renderArea = { { 0, 0 }, { WIDTH, HEIGHT } }; const RenderPassBeginInfo renderPassBegin(*m_renderPass, *m_framebuffer, renderArea); diff --git a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateRSTests.cpp b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateRSTests.cpp index 6ad540fdf..17c20437e 100644 --- a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateRSTests.cpp +++ b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateRSTests.cpp @@ -302,6 +302,20 @@ protected: m_vk.cmdClearDepthStencilImage(*m_cmdBuffer, m_depthStencilImage->object(), vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, &depthStencilClearValue, 2, subresourceRangeDepthStencil); + const vk::VkMemoryBarrier memBarrier = + { + vk::VK_STRUCTURE_TYPE_MEMORY_BARRIER, + DE_NULL, + vk::VK_ACCESS_TRANSFER_WRITE_BIT, + vk::VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | vk::VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | + vk::VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT | vk::VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT + }; + + m_vk.cmdPipelineBarrier(*m_cmdBuffer, vk::VK_PIPELINE_STAGE_TRANSFER_BIT, + vk::VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT | + vk::VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | vk::VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, + 0, 1, &memBarrier, 0, DE_NULL, 0, DE_NULL); + const vk::VkRect2D renderArea = { { 0, 0 }, { WIDTH, HEIGHT } }; const RenderPassBeginInfo renderPassBegin(*m_renderPass, *m_framebuffer, renderArea); -- 2.34.1