X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=external%2Fvulkancts%2Fmodules%2Fvulkan%2Fsynchronization%2FvktSynchronizationUtil.cpp;h=9b6c58d47ec8e0740924d0538b070b31f090372d;hb=6f8c6844e5706ce9a1bc6d25f324daf988c0fa78;hp=e3f25c7dff114d74c1d129957733e9d0f20f9030;hpb=063444935fa687d720f13e1f7a77edb3e88a36e7;p=platform%2Fupstream%2FVK-GL-CTS.git diff --git a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationUtil.cpp b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationUtil.cpp index e3f25c7..9b6c58d 100644 --- a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationUtil.cpp +++ b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationUtil.cpp @@ -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 }; };