Test imported signaled sync fd
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Sun, 19 Jul 2020 19:13:18 +0000 (22:13 +0300)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Wed, 5 Aug 2020 14:34:34 +0000 (10:34 -0400)
New tests:
dEQP-VK.api.external.fence.sync_fd.import_signaled_temporary

Components: Vulkan

Change-Id: Ifb79338443d09596494c30d3d1527f79ac39e1b4

android/cts/master/vk-master-2020-03-01.txt
android/cts/master/vk-master.txt
external/vulkancts/modules/vulkan/api/vktApiExternalMemoryTests.cpp
external/vulkancts/mustpass/master/vk-default.txt

index b64e1bf..8cc0cc0 100644 (file)
@@ -56077,6 +56077,7 @@ dEQP-VK.api.external.memory.dma_buf.dedicated.image.info
 dEQP-VK.api.external.memory.dma_buf.dedicated.image.bind_export_import_bind
 dEQP-VK.api.external.memory.dma_buf.dedicated.image.export_bind_import_bind
 dEQP-VK.api.external.memory.dma_buf.dedicated.image.export_import_bind_bind
+dEQP-VK.api.external.fence.sync_fd.import_signaled_temporary
 dEQP-VK.api.pipeline.pipeline_layout.lifetime.destroy_after_end
 dEQP-VK.api.tooling_info.validate_getter
 dEQP-VK.api.tooling_info.validate_tools_properties
index a865bc5..90bc87a 100644 (file)
@@ -143907,6 +143907,7 @@ dEQP-VK.api.external.fence.sync_fd.signal_export_import_wait_temporary
 dEQP-VK.api.external.fence.sync_fd.signal_import_temporary
 dEQP-VK.api.external.fence.sync_fd.reset_temporary
 dEQP-VK.api.external.fence.sync_fd.transference_temporary
+dEQP-VK.api.external.fence.sync_fd.import_signaled_temporary
 dEQP-VK.api.external.fence.sync_fd.export_multiple_times_temporary
 dEQP-VK.api.external.fence.sync_fd.dup_temporary
 dEQP-VK.api.external.fence.sync_fd.dup2_temporary
index ee0ea77..a3e210d 100644 (file)
@@ -1934,6 +1934,31 @@ tcu::TestStatus testFenceSignalExportImportWait (Context&                                context,
        }
 }
 
+tcu::TestStatus testFenceImportSyncFdSignaled (Context&                                        context,
+                                                                                          const FenceTestConfig        config)
+{
+       const vk::PlatformInterface&            vkp                                     (context.getPlatformInterface());
+       const CustomInstance                            instance                        (createTestInstance(context, 0u, 0u, config.externalType));
+       const vk::InstanceDriver&                       vki                                     (instance.getDriver());
+       const vk::VkPhysicalDevice                      physicalDevice          (vk::chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
+       const deUint32                                          queueFamilyIndex        (chooseQueueFamilyIndex(vki, physicalDevice, 0u));
+       const vk::VkFenceImportFlags            flags                           = config.permanence == PERMANENCE_TEMPORARY ? vk::VK_FENCE_IMPORT_TEMPORARY_BIT : (vk::VkFenceImportFlagBits)0u;
+
+       checkFenceSupport(vki, physicalDevice, config.externalType);
+
+       {
+               const vk::Unique<vk::VkDevice>  device  (createTestDevice(context, vkp, instance, vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
+               const vk::DeviceDriver                  vkd             (vkp, instance, *device);
+               NativeHandle                                    handle  = -1;
+               const vk::Unique<vk::VkFence>   fence   (createAndImportFence(vkd, *device, config.externalType, handle, flags));
+
+               if (vkd.waitForFences(*device, 1u, &*fence, VK_TRUE, 0) != vk::VK_SUCCESS)
+                       return tcu::TestStatus::pass("Imported -1 sync fd isn't signaled");
+
+               return tcu::TestStatus::pass("Pass");
+       }
+}
+
 tcu::TestStatus testFenceExportSignalImportWait (Context&                              context,
                                                                                                 const FenceTestConfig  config)
 {
@@ -3892,6 +3917,11 @@ de::MovePtr<tcu::TestCaseGroup> createFenceTests (tcu::TestContext& testCtx, vk:
                addFunctionCase(fenceGroup.get(), std::string("reset_") + permanenceName,                                               "Test resetting the fence.",                                                                                    testFenceReset,                                         config);
                addFunctionCase(fenceGroup.get(), std::string("transference_") + permanenceName,                                "Test fences transference.",                                                                                    testFenceTransference,                          config);
 
+               if (externalType == vk::VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT)
+               {
+                       addFunctionCase(fenceGroup.get(), std::string("import_signaled_") + permanenceName,                     "Test import signaled fence fd.",                                                                               testFenceImportSyncFdSignaled,          config);
+               }
+
                if (externalType == vk::VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT
                        || externalType == vk::VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT)
                {
index e38f2a6..ea2b2f2 100644 (file)
@@ -143906,6 +143906,7 @@ dEQP-VK.api.external.fence.sync_fd.signal_export_import_wait_temporary
 dEQP-VK.api.external.fence.sync_fd.signal_import_temporary
 dEQP-VK.api.external.fence.sync_fd.reset_temporary
 dEQP-VK.api.external.fence.sync_fd.transference_temporary
+dEQP-VK.api.external.fence.sync_fd.import_signaled_temporary
 dEQP-VK.api.external.fence.sync_fd.export_multiple_times_temporary
 dEQP-VK.api.external.fence.sync_fd.dup_temporary
 dEQP-VK.api.external.fence.sync_fd.dup2_temporary