[Mesa-dev] [PATCH] radv: get rid of another api bypass in the wsi code.

Samuel Pitoiset samuel.pitoiset at gmail.com
Thu Nov 16 08:51:17 UTC 2017


This patch doesn't apply with current master.

On 11/16/2017 12:11 AM, Dave Airlie wrote:
> From: Dave Airlie <airlied at redhat.com>
> 
> This just uses the vulkan api to get the fd from the memory.
> 
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
>   src/amd/vulkan/radv_wsi.c | 14 ++++++++------
>   1 file changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/src/amd/vulkan/radv_wsi.c b/src/amd/vulkan/radv_wsi.c
> index e4f7fa7..3cf0cbd 100644
> --- a/src/amd/vulkan/radv_wsi.c
> +++ b/src/amd/vulkan/radv_wsi.c
> @@ -277,7 +277,7 @@ radv_wsi_image_create(VkDevice device_h,
>   	VkImage client_image_h = VK_NULL_HANDLE;
>   	struct radeon_surf *surface;
>   	struct radv_image *image;
> -	struct radv_device_memory *memory;
> +	VkDeviceMemory memory_h;
>   	int fd;
>   	RADV_FROM_HANDLE(radv_device, device, device_h);
>   
> @@ -297,7 +297,7 @@ radv_wsi_image_create(VkDevice device_h,
>   	if (result != VK_SUCCESS)
>   		goto fail;
>   	image = radv_image_from_handle(client_image_h);
> -	memory = radv_device_memory_from_handle(private->client_memory_h);
> +	memory_h = private->client_memory_h;
>   
>   	if (different_gpu) {
>   		result = radv_wsi_image_create_common(device_h,
> @@ -309,7 +309,7 @@ radv_wsi_image_create(VkDevice device_h,
>   		if (result != VK_SUCCESS)
>   			goto fail;
>   		image = radv_image_from_handle(private->wsi_image_h);
> -		memory = radv_device_memory_from_handle(private->wsi_memory_h);
> +		memory_h = private->wsi_memory_h;
>   
>   		for (uint32_t q = 0; q < RADV_MAX_QUEUE_FAMILIES; q++) {
>   			result = wsi_create_blit_cmd_buffer(&wsi_cbs, device_h,
> @@ -325,10 +325,12 @@ radv_wsi_image_create(VkDevice device_h,
>   		}
>   	}
>   
> -	if (!radv_get_memory_fd(device, memory, &fd)) {
> -		result = vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
> +	VkMemoryGetFdInfoKHR getfdinfo;
> +	getfdinfo.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR;
> +	getfdinfo.memory = memory_h;
> +	result = radv_GetMemoryFdKHR(device_h, &getfdinfo, &fd);
> +	if (result != VK_SUCCESS)
>   		goto fail;
> -	}
>   
>   	surface = &image->surface;
>   
> 


More information about the mesa-dev mailing list