[Mesa-dev] [PATCH 06/10] anv: Move close(fd) from anv_bo_cache_import to its callers

Jason Ekstrand jason at jlekstrand.net
Mon Oct 16 23:01:53 UTC 2017


You're missing one other caller in anv_queue.c

On Mon, Oct 16, 2017 at 11:55 AM, Chad Versace <chadversary at chromium.org>
wrote:

> This will allow us to implement VK_ANDROID_native_buffer without dup'ing
> the fd. We must close the fd in VK_KHR_external_memory_fd, but we should
> not in VK_ANDROID_native_buffer.
> ---
>  src/intel/vulkan/anv_allocator.c | 12 ------------
>  src/intel/vulkan/anv_device.c    | 11 +++++++++++
>  src/intel/vulkan/anv_intel.c     |  2 ++
>  3 files changed, 13 insertions(+), 12 deletions(-)
>
> diff --git a/src/intel/vulkan/anv_allocator.c b/src/intel/vulkan/anv_
> allocator.c
> index 0f123563f7..401cea40e6 100644
> --- a/src/intel/vulkan/anv_allocator.c
> +++ b/src/intel/vulkan/anv_allocator.c
> @@ -1324,18 +1324,6 @@ anv_bo_cache_import(struct anv_device *device,
>     }
>
>     pthread_mutex_unlock(&cache->mutex);
> -
> -   /* From the Vulkan spec:
> -    *
> -    *    "Importing memory from a file descriptor transfers ownership of
> -    *    the file descriptor from the application to the Vulkan
> -    *    implementation. The application must not perform any operations
> on
> -    *    the file descriptor after a successful import."
> -    *
> -    * If the import fails, we leave the file descriptor open.
> -    */
> -   close(fd);
> -
>     *bo_out = &bo->bo;
>
>     return VK_SUCCESS;
> diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
> index 2c10a2fe7f..1634b5158c 100644
> --- a/src/intel/vulkan/anv_device.c
> +++ b/src/intel/vulkan/anv_device.c
> @@ -1547,6 +1547,17 @@ VkResult anv_AllocateMemory(
>                                     &mem->bo);
>        if (result != VK_SUCCESS)
>           goto fail;
> +
> +      /* From the Vulkan spec:
> +       *
> +       *    "Importing memory from a file descriptor transfers ownership
> of
> +       *    the file descriptor from the application to the Vulkan
> +       *    implementation. The application must not perform any
> operations on
> +       *    the file descriptor after a successful import."
> +       *
> +       * If the import fails, we leave the file descriptor open.
> +       */
> +      close(fd_info->fd);
>     } else {
>        result = anv_bo_cache_alloc(device, &device->bo_cache,
>                                    pAllocateInfo->allocationSize,
> diff --git a/src/intel/vulkan/anv_intel.c b/src/intel/vulkan/anv_intel.c
> index 9f8cd92734..d6bad44091 100644
> --- a/src/intel/vulkan/anv_intel.c
> +++ b/src/intel/vulkan/anv_intel.c
> @@ -71,6 +71,8 @@ VkResult anv_CreateDmaBufImageINTEL(
>     if (result != VK_SUCCESS)
>        goto fail;
>
> +   close(pCreateInfo->fd);
> +
>     image = anv_image_from_handle(image_h);
>
>     result = anv_bo_cache_import(device, &device->bo_cache,
> --
> 2.13.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20171016/798b8944/attachment.html>


More information about the mesa-dev mailing list