Merge gerrit/vulkan-cts-1.0.1 into gerrit/vulkan-cts-1.0-dev
authorPyry Haulos <phaulos@google.com>
Fri, 2 Dec 2016 16:42:53 +0000 (08:42 -0800)
committerPyry Haulos <phaulos@google.com>
Fri, 2 Dec 2016 16:42:53 +0000 (08:42 -0800)
Change-Id: I9afe7efd004ee04a7edd465457e5376b03e0abc0

1  2 
external/vulkancts/modules/vulkan/api/vktApiCopiesAndBlittingTests.cpp

@@@ -588,7 -585,28 +588,27 @@@ void CopiesAndBlittingTestInstance::rea
                pixelDataSize                                                           // VkDeviceSize         size;
        };
  
+       const VkImageMemoryBarrier                              postImageBarrier                =
+       {
+               VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,         // VkStructureType                      sType;
+               DE_NULL,                                                                        // const void*                          pNext;
+               VK_ACCESS_TRANSFER_READ_BIT,                            // VkAccessFlags                        srcAccessMask;
+               VK_ACCESS_TRANSFER_WRITE_BIT,                           // VkAccessFlags                        dstAccessMask;
+               VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,           // VkImageLayout                        oldLayout;
+               VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,           // VkImageLayout                        newLayout;
+               VK_QUEUE_FAMILY_IGNORED,                                        // deUint32                                     srcQueueFamilyIndex;
+               VK_QUEUE_FAMILY_IGNORED,                                        // deUint32                                     dstQueueFamilyIndex;
+               image,                                                                          // VkImage                                      image;
+               {
+                       aspect,                                                                 // VkImageAspectFlags   aspectMask;
+                       0u,                                                                                     // deUint32                             baseMipLevel;
+                       1u,                                                                                     // deUint32                             mipLevels;
+                       0u,                                                                                     // deUint32                             baseArraySlice;
+                       1u,                                                                                     // deUint32                             arraySize;
+               }                                                                                       // VkImageSubresourceRange      subresourceRange;
+       };
        // Copy image to buffer
 -      const VkExtent3D                        imageExtent             = { (deUint32)dst.getWidth(), (deUint32)dst.getHeight(), 1u };
        const VkBufferImageCopy         copyRegion              =
        {
                0u,                                                                     // VkDeviceSize                         bufferOffset;
                (const VkCommandBufferInheritanceInfo*)DE_NULL,
        };
  
 -      VK_CHECK(vk.beginCommandBuffer(*cmdBuffer, &cmdBufferBeginInfo));
 -      vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &imageBarrier);
 -      vk.cmdCopyImageToBuffer(*cmdBuffer, image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *buffer, 1u, &copyRegion);
 -      vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT|VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &bufferBarrier, 1, &postImageBarrier);
 -      VK_CHECK(vk.endCommandBuffer(*cmdBuffer));
 +      VK_CHECK(vk.beginCommandBuffer(*m_cmdBuffer, &cmdBufferBeginInfo));
 +      vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, 1, &imageBarrier);
 +      vk.cmdCopyImageToBuffer(*m_cmdBuffer, image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *buffer, 1u, &copyRegion);
-       vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &bufferBarrier, 0, (const VkImageMemoryBarrier*)DE_NULL);
++      vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT|VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 1, &bufferBarrier, 1, &postImageBarrier);
 +      VK_CHECK(vk.endCommandBuffer(*m_cmdBuffer));
 +
 +      submitCommandsAndWait(vk, device, queue, *m_cmdBuffer);
 +
 +      // Read buffer data
 +      invalidateMappedMemoryRange(vk, device, bufferAlloc->getMemory(), bufferAlloc->getOffset(), pixelDataSize);
 +      tcu::copy(dst, tcu::ConstPixelBufferAccess(dst.getFormat(), dst.getSize(), bufferAlloc->getHostPtr()));
 +}
  
 +void CopiesAndBlittingTestInstance::submitCommandsAndWait (const DeviceInterface& vk, const VkDevice device, const VkQueue queue, const VkCommandBuffer& cmdBuffer)
 +{
        const VkSubmitInfo                                              submitInfo                              =
        {
                VK_STRUCTURE_TYPE_SUBMIT_INFO,  // VkStructureType                      sType;