dEQP-VK.wsi.android.shared_presentable_image.scale_none.continuous
dEQP-VK.wsi.android.shared_presentable_image.scale_up.demand
dEQP-VK.wsi.android.shared_presentable_image.scale_up.continuous
- dEQP-VK.wsi.android.shared_presentable_image.scale_down.demand
- dEQP-VK.wsi.android.shared_presentable_image.scale_down.continuous
+dEQP-VK.wsi.android.colorspace.extensions
+dEQP-VK.wsi.android.colorspace.basic
+dEQP-VK.wsi.android.colorspace.hdr
+dEQP-VK.wsi.macos.surface.create
+dEQP-VK.wsi.macos.surface.create_custom_allocator
+dEQP-VK.wsi.macos.surface.create_simulate_oom
+dEQP-VK.wsi.macos.surface.query_support
+dEQP-VK.wsi.macos.surface.query_capabilities
+dEQP-VK.wsi.macos.surface.query_capabilities2
+dEQP-VK.wsi.macos.surface.query_formats
+dEQP-VK.wsi.macos.surface.query_formats2
+dEQP-VK.wsi.macos.surface.query_present_modes
+dEQP-VK.wsi.macos.surface.query_devgroup_present_capabilities
+dEQP-VK.wsi.macos.surface.query_devgroup_present_modes
+dEQP-VK.wsi.macos.surface.destroy_null_handle
+dEQP-VK.wsi.macos.surface.initial_size
+dEQP-VK.wsi.macos.surface.resize
+dEQP-VK.wsi.macos.swapchain.create.min_image_count
+dEQP-VK.wsi.macos.swapchain.create.image_format
+dEQP-VK.wsi.macos.swapchain.create.image_extent
+dEQP-VK.wsi.macos.swapchain.create.image_array_layers
+dEQP-VK.wsi.macos.swapchain.create.image_usage
+dEQP-VK.wsi.macos.swapchain.create.image_sharing_mode
+dEQP-VK.wsi.macos.swapchain.create.pre_transform
+dEQP-VK.wsi.macos.swapchain.create.composite_alpha
+dEQP-VK.wsi.macos.swapchain.create.present_mode
+dEQP-VK.wsi.macos.swapchain.create.clipped
+dEQP-VK.wsi.macos.swapchain.simulate_oom.min_image_count
+dEQP-VK.wsi.macos.swapchain.simulate_oom.image_format
+dEQP-VK.wsi.macos.swapchain.simulate_oom.image_extent
+dEQP-VK.wsi.macos.swapchain.simulate_oom.image_array_layers
+dEQP-VK.wsi.macos.swapchain.simulate_oom.image_usage
+dEQP-VK.wsi.macos.swapchain.simulate_oom.image_sharing_mode
+dEQP-VK.wsi.macos.swapchain.simulate_oom.pre_transform
+dEQP-VK.wsi.macos.swapchain.simulate_oom.composite_alpha
+dEQP-VK.wsi.macos.swapchain.simulate_oom.present_mode
+dEQP-VK.wsi.macos.swapchain.simulate_oom.clipped
+dEQP-VK.wsi.macos.swapchain.render.basic
+dEQP-VK.wsi.macos.swapchain.destroy.null_handle
+dEQP-VK.wsi.macos.swapchain.get_images.incomplete
+dEQP-VK.wsi.macos.incremental_present.scale_none.immediate.reference
+dEQP-VK.wsi.macos.incremental_present.scale_none.immediate.incremental_present
+dEQP-VK.wsi.macos.incremental_present.scale_none.mailbox.reference
+dEQP-VK.wsi.macos.incremental_present.scale_none.mailbox.incremental_present
+dEQP-VK.wsi.macos.incremental_present.scale_none.fifo.reference
+dEQP-VK.wsi.macos.incremental_present.scale_none.fifo.incremental_present
+dEQP-VK.wsi.macos.incremental_present.scale_none.fifo_relaxed.reference
+dEQP-VK.wsi.macos.incremental_present.scale_none.fifo_relaxed.incremental_present
+dEQP-VK.wsi.macos.display_timing.fifo.reference
+dEQP-VK.wsi.macos.display_timing.fifo.display_timing
+dEQP-VK.wsi.macos.display_timing.fifo_relaxed.reference
+dEQP-VK.wsi.macos.display_timing.fifo_relaxed.display_timing
+dEQP-VK.wsi.macos.display_timing.immediate.reference
+dEQP-VK.wsi.macos.display_timing.immediate.display_timing
+dEQP-VK.wsi.macos.display_timing.mailbox.reference
+dEQP-VK.wsi.macos.display_timing.mailbox.display_timing
+dEQP-VK.wsi.macos.shared_presentable_image.scale_none.demand
+dEQP-VK.wsi.macos.shared_presentable_image.scale_none.continuous
+dEQP-VK.wsi.macos.colorspace.extensions
+dEQP-VK.wsi.macos.colorspace.basic
+dEQP-VK.wsi.macos.colorspace.hdr
dEQP-VK.wsi.display.get_display_properties
dEQP-VK.wsi.display.get_display_plane_properties
dEQP-VK.wsi.display.get_display_plane_supported_displays
};
vk::Move<vk::VkDeviceMemory> memory (vk::allocateMemory(vkd, device, &info));
- handle.disown();
+ // The handle's owned reference must also be released. Do not discard the handle below.
+ if (externalType != vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT)
+ handle.disown();
+
+ return memory;
+ }
+ else if (externalType == vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID)
+ {
+ AndroidHardwareBufferExternalApi* ahbApi = AndroidHardwareBufferExternalApi::getInstance();
++ if (!ahbApi)
++ {
++ TCU_THROW(NotSupportedError, "Platform doesn't support Android Hardware Buffer handles");
++ }
++
++ deUint32 ahbFormat = 0;
++ ahbApi->describe(handle.getAndroidHardwareBuffer(), DE_NULL, DE_NULL, DE_NULL, &ahbFormat, DE_NULL, DE_NULL);
++ DE_ASSERT(ahbApi->ahbFormatIsBlob(ahbFormat) || image != 0);
++
++ vk::VkImportAndroidHardwareBufferInfoANDROID importInfo =
++ {
++ vk::VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
++ DE_NULL,
++ handle.getAndroidHardwareBuffer()
++ };
++ const vk::VkMemoryDedicatedAllocateInfo dedicatedInfo =
++ {
++ vk::VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR,
++ &importInfo,
++ image,
++ buffer,
++ };
++ const vk::VkMemoryAllocateInfo info =
++ {
++ vk::VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
++ (isDedicated ? (const void*)&dedicatedInfo : (const void*)&importInfo),
++ requirements.size,
++ (memoryTypeIndex == ~0U) ? chooseMemoryType(requirements.memoryTypeBits) : memoryTypeIndex
++ };
++ vk::Move<vk::VkDeviceMemory> memory (vk::allocateMemory(vkd, device, &info));
+
+ return memory;
+ }
+ else if (externalType == vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID)
+ {
+ AndroidHardwareBufferExternalApi* ahbApi = AndroidHardwareBufferExternalApi::getInstance();
if (!ahbApi)
{
TCU_THROW(NotSupportedError, "Platform doesn't support Android Hardware Buffer handles");