From 0e4f9f242d31d55807ae6d3665e53e1a0abeafdc Mon Sep 17 00:00:00 2001 From: Slawomir Cygan Date: Mon, 31 Jul 2017 14:22:50 +0200 Subject: [PATCH] Fix regressions in synchronization tests for dedicated allocations Pass image memory requirements to allocation routine in allocateAndBindMemory. VK_KHR_get_memory_requirements2 is a device extension (not instance). Throw NotSupported when external handle requires dedicated allocation, but 'suballocated' variant of test is being run. Affects: dEQP-VK.synchronization.cross_instance.* Components: Vulkan VK-GL-CTS issue: 604 Bug: 65490152 Bug: 65202260 Test: Ran tests on couple of Google devices Change-Id: I3636779459300f5dee2e22b0a2e04762eb7b0601 --- .../vktSynchronizationCrossInstanceSharingTests.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp index b8cfaf6..b3c8cf9 100644 --- a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp +++ b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp @@ -432,6 +432,8 @@ de::MovePtr allocateAndBindMemory (const vk::DeviceInterface& if (!dedicated && dedicatedRequirements.requiresDedicatedAllocation) TCU_THROW(NotSupportedError, "Memory requires dedicated allocation"); + + memoryRequirements = requirements.memoryRequirements; } else { @@ -855,7 +857,7 @@ SharingTestInstance::SharingTestInstance (Context& context, , m_physicalDeviceA (getPhysicalDevice(m_vkiA, *m_instanceA, context.getTestContext().getCommandLine())) , m_queueFamiliesA (vk::getPhysicalDeviceQueueFamilyProperties(m_vkiA, m_physicalDeviceA)) , m_queueFamilyIndicesA (getFamilyIndices(m_queueFamiliesA)) - , m_getMemReq2Supported (de::contains(context.getInstanceExtensions().begin(), context.getInstanceExtensions().end(), "VK_KHR_get_memory_requirements2")) + , m_getMemReq2Supported (de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_get_memory_requirements2")) , m_deviceA (createDevice(m_vkiA, m_physicalDeviceA, m_config.memoryHandleType, m_config.semaphoreHandleType, m_config.dedicated, m_getMemReq2Supported)) , m_vkdA (m_vkiA, *m_deviceA) @@ -931,6 +933,11 @@ SharingTestInstance::SharingTestInstance (Context& context, if ((externalProperties.externalMemoryProperties.externalMemoryFeatures & vk::VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR) == 0) TCU_THROW(NotSupportedError, "Importing image resource not supported"); + + if (!m_config.dedicated && (externalProperties.externalMemoryProperties.externalMemoryFeatures & vk::VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR) != 0) + { + TCU_THROW(NotSupportedError, "Handle requires dedicated allocation, but test uses suballocated memory"); + } } else { @@ -956,6 +963,11 @@ SharingTestInstance::SharingTestInstance (Context& context, if ((properties.externalMemoryProperties.externalMemoryFeatures & vk::VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR) == 0 || (properties.externalMemoryProperties.externalMemoryFeatures & vk::VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR) == 0) TCU_THROW(NotSupportedError, "Exporting and importing memory type not supported"); + + if (!m_config.dedicated && (properties.externalMemoryProperties.externalMemoryFeatures & vk::VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR) != 0) + { + TCU_THROW(NotSupportedError, "Handle requires dedicated allocation, but test uses suballocated memory"); + } } // Check semaphore support -- 2.7.4