Add queue ownership release in modifier tests
authorNanley Chery <nanley.g.chery@intel.com>
Wed, 16 Mar 2022 20:08:04 +0000 (13:08 -0700)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Thu, 7 Apr 2022 17:23:49 +0000 (17:23 +0000)
Queue ownership transfers require a release operation and an acquire
operation. Before this patch, this test only performed the acquire
operation.

Components: Vulkan

VK-GL-CTS issue: 3575

Affects: dEQP-VK.drm_format_modifiers.export_import.*
Change-Id: I2998d7928d1042d6a159e1173257ee551c1120a5

external/vulkancts/modules/vulkan/modifiers/vktModifiersTests.cpp

index 9a97ccd..be294da 100644 (file)
@@ -573,6 +573,27 @@ bool exportImportMemoryExplicitModifiersCase (Context& context, const VkFormat f
        };
        vkd.cmdBlitImage(*cmdBuffer, *srcImage, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *dstImage, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &imageBlit, VK_FILTER_NEAREST);
 
+       const VkImageMemoryBarrier              exportImageBarrier              =
+       {
+               VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,         // VkStructureType                      sType;
+               DE_NULL,                                                                        // const void*                          pNext;
+               VK_ACCESS_TRANSFER_WRITE_BIT,                           // VkAccessFlags                        dstAccessMask;
+               VK_ACCESS_TRANSFER_WRITE_BIT,                           // VkAccessFlags                        srcAccessMask;
+               VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,           // VkImageLayout                        oldLayout;
+               VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,           // VkImageLayout                        newLayout;
+               context.getUniversalQueueFamilyIndex(),         // deUint32                                     dstQueueFamilyIndex;
+               VK_QUEUE_FAMILY_FOREIGN_EXT,                            // deUint32                                     srcQueueFamilyIndex;
+               *dstImage,                                                                      // VkImage                                      image;
+               {                                                                                       // VkImageSubresourceRange      subresourceRange;
+                       VK_IMAGE_ASPECT_COLOR_BIT,              // VkImageAspectFlags           aspectMask;
+                       0u,                                                             // deUint32                                     baseMipLevel;
+                       1u,                                                             // deUint32                                     mipLevels;
+                       0u,                                                             // deUint32                                     baseArraySlice;
+                       1u                                                              // deUint32                                     arraySize;
+               }
+       };
+
+       vkd.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, &exportImageBarrier);
        VK_CHECK(vkd.endCommandBuffer(*cmdBuffer));
        submitCommandsAndWait(vkd, device, context.getUniversalQueue(), *cmdBuffer);
        VkImageDrmFormatModifierPropertiesEXT   properties;