From: Arkadiusz Sarwa Date: Mon, 11 Apr 2016 13:30:40 +0000 (+0200) Subject: Bug Fix: Corrected barriers in the tests dEQP-VK.dynamic_state. X-Git-Tag: upstream/0.1.0~812^2~1^2~12 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d4887964afd84294842b6743f7ebdfd4270f2619;p=platform%2Fupstream%2FVK-GL-CTS.git Bug Fix: Corrected barriers in the tests dEQP-VK.dynamic_state. (cherry picked from commit 188341def51b4a425163576ce1cd1c8931c45df8) --- diff --git a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateDSTests.cpp b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateDSTests.cpp index 4f479f8..5fe145d 100644 --- a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateDSTests.cpp +++ b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateDSTests.cpp @@ -311,7 +311,7 @@ protected: m_vk.beginCommandBuffer(*m_cmdBuffer, &beginInfo); initialTransitionColor2DImage(m_vk, *m_cmdBuffer, m_colorTargetImage->object(), vk::VK_IMAGE_LAYOUT_GENERAL); - initialTransitionDepthStencil2DImage(m_vk, *m_cmdBuffer, m_depthStencilImage->object(), vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL); + initialTransitionDepthStencil2DImage(m_vk, *m_cmdBuffer, m_depthStencilImage->object(), vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 0, vk::VK_ACCESS_TRANSFER_WRITE_BIT); const ImageSubresourceRange subresourceRangeImage(vk::VK_IMAGE_ASPECT_COLOR_BIT); m_vk.cmdClearColorImage(*m_cmdBuffer, m_colorTargetImage->object(), @@ -338,6 +338,8 @@ protected: const vk::VkRect2D renderArea = { { 0, 0 }, { WIDTH, HEIGHT } }; const RenderPassBeginInfo renderPassBegin(*m_renderPass, *m_framebuffer, renderArea); + transition2DImage(m_vk, *m_cmdBuffer, m_depthStencilImage->object(), vk::VK_IMAGE_ASPECT_DEPTH_BIT | vk::VK_IMAGE_ASPECT_STENCIL_BIT, vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, vk::VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, vk::VK_ACCESS_TRANSFER_WRITE_BIT, vk::VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT); + m_vk.cmdBeginRenderPass(*m_cmdBuffer, &renderPassBegin, vk::VK_SUBPASS_CONTENTS_INLINE); } diff --git a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateImageObjectUtil.cpp b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateImageObjectUtil.cpp index 99014d3..e00b5b1 100644 --- a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateImageObjectUtil.cpp +++ b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateImageObjectUtil.cpp @@ -876,22 +876,24 @@ de::SharedPtr Image::create(const vk::DeviceInterface& vk, } void transition2DImage (const vk::DeviceInterface& vk, - vk::VkCommandBuffer cmdBuffer, + vk::VkCommandBuffer cmdBuffer, vk::VkImage image, vk::VkImageAspectFlags aspectMask, vk::VkImageLayout oldLayout, - vk::VkImageLayout newLayout) + vk::VkImageLayout newLayout, + vk::VkAccessFlags srcAccessMask, + vk::VkAccessFlags dstAccessMask) { vk::VkImageMemoryBarrier barrier; - barrier.sType = vk::VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER; - barrier.pNext = DE_NULL; - barrier.srcAccessMask = 0; - barrier.dstAccessMask = 0; - barrier.oldLayout = oldLayout; - barrier.newLayout = newLayout; - barrier.srcQueueFamilyIndex = vk::VK_QUEUE_FAMILY_IGNORED; - barrier.dstQueueFamilyIndex = vk::VK_QUEUE_FAMILY_IGNORED; - barrier.image = image; + barrier.sType = vk::VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER; + barrier.pNext = DE_NULL; + barrier.srcAccessMask = srcAccessMask; + barrier.dstAccessMask = dstAccessMask; + barrier.oldLayout = oldLayout; + barrier.newLayout = newLayout; + barrier.srcQueueFamilyIndex = vk::VK_QUEUE_FAMILY_IGNORED; + barrier.dstQueueFamilyIndex = vk::VK_QUEUE_FAMILY_IGNORED; + barrier.image = image; barrier.subresourceRange.aspectMask = aspectMask; barrier.subresourceRange.baseMipLevel = 0; barrier.subresourceRange.levelCount = 1; @@ -919,9 +921,14 @@ void initialTransitionStencil2DImage (const vk::DeviceInterface &vk, vk::VkComma transition2DImage(vk, cmdBuffer, image, vk::VK_IMAGE_ASPECT_STENCIL_BIT, vk::VK_IMAGE_LAYOUT_UNDEFINED, layout); } -void initialTransitionDepthStencil2DImage (const vk::DeviceInterface &vk, vk::VkCommandBuffer cmdBuffer, vk::VkImage image, vk::VkImageLayout layout) +void initialTransitionDepthStencil2DImage (const vk::DeviceInterface& vk, + vk::VkCommandBuffer cmdBuffer, + vk::VkImage image, + vk::VkImageLayout layout, + vk::VkAccessFlags srcAccessMask, + vk::VkAccessFlags dstAccessMask) { - transition2DImage(vk, cmdBuffer, image, vk::VK_IMAGE_ASPECT_DEPTH_BIT | vk::VK_IMAGE_ASPECT_STENCIL_BIT, vk::VK_IMAGE_LAYOUT_UNDEFINED, layout); + transition2DImage(vk, cmdBuffer, image, vk::VK_IMAGE_ASPECT_DEPTH_BIT | vk::VK_IMAGE_ASPECT_STENCIL_BIT, vk::VK_IMAGE_LAYOUT_UNDEFINED, layout, srcAccessMask, dstAccessMask); } } // DynamicState diff --git a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateImageObjectUtil.hpp b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateImageObjectUtil.hpp index 144abee..952c500 100644 --- a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateImageObjectUtil.hpp +++ b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateImageObjectUtil.hpp @@ -261,7 +261,14 @@ private: vk::VkDevice m_device; }; -void transition2DImage (const vk::DeviceInterface& vk, vk::VkCommandBuffer cmdBuffer, vk::VkImage image, vk::VkImageAspectFlags aspectMask, vk::VkImageLayout oldLayout, vk::VkImageLayout newLayout); +void transition2DImage (const vk::DeviceInterface& vk, + vk::VkCommandBuffer cmdBuffer, + vk::VkImage image, + vk::VkImageAspectFlags aspectMask, + vk::VkImageLayout oldLayout, + vk::VkImageLayout newLayout, + vk::VkAccessFlags srcAccessMask = 0, + vk::VkAccessFlags dstAccessMask = 0); void initialTransitionColor2DImage (const vk::DeviceInterface& vk, vk::VkCommandBuffer cmdBuffer, vk::VkImage image, vk::VkImageLayout layout); @@ -269,7 +276,12 @@ void initialTransitionDepth2DImage (const vk::DeviceInterface& vk, vk::VkCommand void initialTransitionStencil2DImage (const vk::DeviceInterface& vk, vk::VkCommandBuffer cmdBuffer, vk::VkImage image, vk::VkImageLayout layout); -void initialTransitionDepthStencil2DImage (const vk::DeviceInterface& vk, vk::VkCommandBuffer cmdBuffer, vk::VkImage image, vk::VkImageLayout layout); +void initialTransitionDepthStencil2DImage (const vk::DeviceInterface& vk, + vk::VkCommandBuffer cmdBuffer, + vk::VkImage image, + vk::VkImageLayout layout, + vk::VkAccessFlags srcAccessMask = 0, + vk::VkAccessFlags dstAccessMask = 0); } // DynamicState } // vkt diff --git a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateRSTests.cpp b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateRSTests.cpp index 903a2eb..016d715 100644 --- a/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateRSTests.cpp +++ b/external/vulkancts/modules/vulkan/dynamic_state/vktDynamicStateRSTests.cpp @@ -283,7 +283,7 @@ protected: m_vk.beginCommandBuffer(*m_cmdBuffer, &beginInfo); initialTransitionColor2DImage(m_vk, *m_cmdBuffer, m_colorTargetImage->object(), vk::VK_IMAGE_LAYOUT_GENERAL); - initialTransitionDepthStencil2DImage(m_vk, *m_cmdBuffer, m_depthStencilImage->object(), vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL); + initialTransitionDepthStencil2DImage(m_vk, *m_cmdBuffer, m_depthStencilImage->object(), vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 0, vk::VK_ACCESS_TRANSFER_WRITE_BIT); const ImageSubresourceRange subresourceRangeImage(vk::VK_IMAGE_ASPECT_COLOR_BIT); m_vk.cmdClearColorImage(*m_cmdBuffer, m_colorTargetImage->object(), @@ -292,6 +292,7 @@ protected: const vk::VkClearDepthStencilValue depthStencilClearValue = { 0.0f, 0 }; const ImageSubresourceRange subresourceRangeDepthStencil[2] = { vk::VK_IMAGE_ASPECT_DEPTH_BIT, vk::VK_IMAGE_ASPECT_STENCIL_BIT }; + m_vk.cmdClearDepthStencilImage(*m_cmdBuffer, m_depthStencilImage->object(), vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, &depthStencilClearValue, 2, subresourceRangeDepthStencil); @@ -312,6 +313,8 @@ protected: const vk::VkRect2D renderArea = { { 0, 0 }, { WIDTH, HEIGHT } }; const RenderPassBeginInfo renderPassBegin(*m_renderPass, *m_framebuffer, renderArea); + transition2DImage(m_vk, *m_cmdBuffer, m_depthStencilImage->object(), vk::VK_IMAGE_ASPECT_DEPTH_BIT | vk::VK_IMAGE_ASPECT_STENCIL_BIT, vk::VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, vk::VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, vk::VK_ACCESS_TRANSFER_WRITE_BIT, vk::VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT); + m_vk.cmdBeginRenderPass(*m_cmdBuffer, &renderPassBegin, vk::VK_SUBPASS_CONTENTS_INLINE); }