Use proper image tiling in synchronization test support checks
[platform/upstream/VK-GL-CTS.git] / external / vulkancts / modules / vulkan / synchronization / vktSynchronizationUtil.cpp
index e3f25c7..9b6c58d 100644 (file)
@@ -91,7 +91,8 @@ VkImageCreateInfo makeImageCreateInfo (const VkImageType                      imageType,
                                                                           const VkExtent3D&                    extent,
                                                                           const VkFormat                               format,
                                                                           const VkImageUsageFlags              usage,
-                                                                          const VkSampleCountFlagBits  samples)
+                                                                          const VkSampleCountFlagBits  samples,
+                                                                          const VkImageTiling                  tiling)
 {
        return
        {
@@ -104,7 +105,7 @@ VkImageCreateInfo makeImageCreateInfo (const VkImageType                    imageType,
                1u,                                                                                     // uint32_t                 mipLevels;
                1u,                                                                                     // uint32_t                 arrayLayers;
                samples,                                                                        // VkSampleCountFlagBits    samples;
-               VK_IMAGE_TILING_OPTIMAL,                                        // VkImageTiling            tiling;
+               tiling,                                                                         // VkImageTiling            tiling;
                usage,                                                                          // VkImageUsageFlags        usage;
                VK_SHARING_MODE_EXCLUSIVE,                                      // VkSharingMode            sharingMode;
                0u,                                                                                     // uint32_t                 queueFamilyIndexCount;
@@ -988,10 +989,12 @@ void requireFeatures (const InstanceInterface& vki, const VkPhysicalDevice physD
                throw tcu::NotSupportedError("Tessellation and geometry shaders don't support PointSize built-in");
 }
 
-void requireStorageImageSupport(const InstanceInterface& vki, const VkPhysicalDevice physDevice, const VkFormat fmt)
+void requireStorageImageSupport(const InstanceInterface& vki, const VkPhysicalDevice physDevice, const VkFormat fmt, const VkImageTiling tiling)
 {
-       const VkFormatProperties p = getPhysicalDeviceFormatProperties(vki, physDevice, fmt);
-       if ((p.optimalTilingFeatures & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT) == 0)
+       const VkFormatProperties        p                       = getPhysicalDeviceFormatProperties(vki, physDevice, fmt);
+       const auto&                                     features        = ((tiling == VK_IMAGE_TILING_LINEAR) ? p.linearTilingFeatures : p.optimalTilingFeatures);
+
+       if ((features & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT) == 0)
                throw tcu::NotSupportedError("Storage image format not supported");
 }
 
@@ -1057,19 +1060,20 @@ VkSemaphoreSubmitInfoKHR makeCommonSemaphoreSubmitInfo(VkSemaphore semaphore, de
        };
 }
 
-VkDependencyInfoKHR makeCommonDependencyInfo(const VkMemoryBarrier2KHR* pMemoryBarrier, const VkBufferMemoryBarrier2KHR* pBufferMemoryBarrier, const VkImageMemoryBarrier2KHR* pImageMemoryBarrier)
+VkDependencyInfoKHR makeCommonDependencyInfo(const VkMemoryBarrier2KHR* pMemoryBarrier, const VkBufferMemoryBarrier2KHR* pBufferMemoryBarrier, const VkImageMemoryBarrier2KHR* pImageMemoryBarrier,
+                                                                                        bool eventDependency)
 {
        return
        {
-               VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR,          // VkStructureType                                      sType
-               DE_NULL,                                                                        // const void*                                          pNext
-               VK_DEPENDENCY_BY_REGION_BIT,                            // VkDependencyFlags                            dependencyFlags
-               !!pMemoryBarrier,                                                       // deUint32                                                     memoryBarrierCount
-               pMemoryBarrier,                                                         // const VkMemoryBarrier2KHR*           pMemoryBarriers
-               !!pBufferMemoryBarrier,                                         // deUint32                                                     bufferMemoryBarrierCount
-               pBufferMemoryBarrier,                                           // const VkBufferMemoryBarrier2KHR* pBufferMemoryBarriers
-               !!pImageMemoryBarrier,                                          // deUint32                                                     imageMemoryBarrierCount
-               pImageMemoryBarrier                                                     // const VkImageMemoryBarrier2KHR*      pImageMemoryBarriers
+               VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR,                          // VkStructureType                                      sType
+               DE_NULL,                                                                                        // const void*                                          pNext
+               eventDependency ? (VkDependencyFlags)0u : (VkDependencyFlags)VK_DEPENDENCY_BY_REGION_BIT,       // VkDependencyFlags                            dependencyFlags
+               !!pMemoryBarrier,                                                                       // deUint32                                                     memoryBarrierCount
+               pMemoryBarrier,                                                                         // const VkMemoryBarrier2KHR*           pMemoryBarriers
+               !!pBufferMemoryBarrier,                                                         // deUint32                                                     bufferMemoryBarrierCount
+               pBufferMemoryBarrier,                                                           // const VkBufferMemoryBarrier2KHR* pBufferMemoryBarriers
+               !!pImageMemoryBarrier,                                                          // deUint32                                                     imageMemoryBarrierCount
+               pImageMemoryBarrier                                                                     // const VkImageMemoryBarrier2KHR*      pImageMemoryBarriers
        };
 };