From a50f93ecfbfbf94d661f90119d304ae13fcea9c8 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Thu, 16 Nov 2017 08:27:01 -0800 Subject: [PATCH] radv/image: Implement the wsi "extension" Reviewed-by: Dave Airlie Reviewed-by: Chad Versace --- src/amd/vulkan/radv_device.c | 6 ++++++ src/amd/vulkan/radv_image.c | 8 ++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 81d04e99fbb..07c639755b4 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -2151,11 +2151,17 @@ VkResult radv_alloc_memory(VkDevice _device, const VkMemoryDedicatedAllocateInfoKHR *dedicate_info = vk_find_struct_const(pAllocateInfo->pNext, MEMORY_DEDICATED_ALLOCATE_INFO_KHR); + const struct wsi_memory_allocate_info *wsi_info = + vk_find_struct_const(pAllocateInfo->pNext, WSI_MEMORY_ALLOCATE_INFO_MESA); + mem = vk_alloc2(&device->alloc, pAllocator, sizeof(*mem), 8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); if (mem == NULL) return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY); + if (wsi_info && wsi_info->implicit_sync) + flags |= RADEON_FLAG_IMPLICIT_SYNC; + if (dedicate_info) { mem->image = radv_image_from_handle(dedicate_info->image); mem->buffer = radv_buffer_from_handle(dedicate_info->buffer); diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c index ee03a1dc6a9..5c53e816376 100644 --- a/src/amd/vulkan/radv_image.c +++ b/src/amd/vulkan/radv_image.c @@ -1121,11 +1121,15 @@ radv_CreateImage(VkDevice device, const VkAllocationCallbacks *pAllocator, VkImage *pImage) { + const struct wsi_image_create_info *wsi_info = + vk_find_struct_const(pCreateInfo->pNext, WSI_IMAGE_CREATE_INFO_MESA); + bool scanout = wsi_info && wsi_info->scanout; + return radv_image_create(device, &(struct radv_image_create_info) { .vk_info = pCreateInfo, - .scanout = false, - }, + .scanout = scanout, + }, pAllocator, pImage); } -- 2.30.2