[Mesa-dev] [PATCH v2 11/32] radv/image: Implement the wsi "extension"

Jason Ekstrand jason at jlekstrand.net
Wed Nov 29 00:28:23 UTC 2017


---
 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 4517227..b715014 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 c241e36..8107c9e 100644
--- a/src/amd/vulkan/radv_image.c
+++ b/src/amd/vulkan/radv_image.c
@@ -1110,11 +1110,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.5.0.400.gff86faf



More information about the mesa-dev mailing list