[FFmpeg-devel] [PATCH] lavu/vulkan: fix handle type for 32-bit targets

Martin Storsjö martin at martin.st
Mon Mar 6 11:00:33 EET 2023


On Thu, 2 Mar 2023, Kacper Michajłow wrote:

> Fixes compilation with clang which errors out on Wint-conversion.
>
> Signed-off-by: Kacper Michajłow <kasper93 at gmail.com>
> ---
> libavutil/hwcontext_vulkan.c | 2 +-
> libavutil/vulkan.h           | 4 ++++
> 2 files changed, 5 insertions(+), 1 deletion(-)

Minor context; it's only recent Clang that treats this issue as an error 
by default - iirc it changed sometime last year, so possibly since Clang 
15 or so.

>
> diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
> index 2a9b5f4aac..b3eccea7af 100644
> --- a/libavutil/hwcontext_vulkan.c
> +++ b/libavutil/hwcontext_vulkan.c
> @@ -1149,7 +1149,7 @@ static void free_exec_ctx(AVHWFramesContext *hwfc, VulkanExecCtx *cmd)
>
>     av_freep(&cmd->queues);
>     av_freep(&cmd->bufs);
> -    cmd->pool = NULL;
> +    cmd->pool = VK_NULL_HANDLE;
> }

This LGTM - I had run into the same issue and tried to fix this issue 
differently, but this looks better to me.

> static VkCommandBuffer get_buf_exec_ctx(AVHWFramesContext *hwfc, VulkanExecCtx *cmd)
> diff --git a/libavutil/vulkan.h b/libavutil/vulkan.h
> index d1ea1e24fb..90922c6cf3 100644
> --- a/libavutil/vulkan.h
> +++ b/libavutil/vulkan.h
> @@ -122,7 +122,11 @@ typedef struct FFVulkanPipeline {
>     VkDescriptorSetLayout         *desc_layout;
>     VkDescriptorPool               desc_pool;
>     VkDescriptorSet               *desc_set;
> +#if VK_USE_64_BIT_PTR_DEFINES == 1
>     void                         **desc_staging;
> +#else
> +    uint64_t                      *desc_staging;
> +#endif
>     VkDescriptorSetLayoutBinding **desc_binding;
>     VkDescriptorUpdateTemplate    *desc_template;
>     int                           *desc_set_initialized;
> -- 
> 2.34.1

What issue does this fix? I don't run into any errors relating to this, 
when building with Clang for Windows on i386 or armv7. I think the fix is 
correct though, the vulkan data types are a bit hard to get a grip of.

// Martin


More information about the ffmpeg-devel mailing list