[FFmpeg-devel] [PATCH 4/7] hwcontext_vulkan: add support for AV_PIX_FMT_RGBA32
James Almer
jamrial at gmail.com
Sat Oct 12 01:11:27 EEST 2024
On 10/10/2024 2:32 AM, Lynne via ffmpeg-devel wrote:
> ---
> libavutil/hwcontext_vulkan.c | 1 +
> libavutil/vulkan.c | 11 ++++++++++-
> 2 files changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
> index 1fb0481fa7..24aafcba07 100644
> --- a/libavutil/hwcontext_vulkan.c
> +++ b/libavutil/hwcontext_vulkan.c
> @@ -320,6 +320,7 @@ static const struct FFVkFormatEntry {
> { VK_FORMAT_R8G8B8A8_UNORM, AV_PIX_FMT_RGB0, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R8G8B8A8_UNORM } },
> { VK_FORMAT_A2R10G10B10_UNORM_PACK32, AV_PIX_FMT_X2RGB10, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_A2R10G10B10_UNORM_PACK32 } },
> { VK_FORMAT_A2B10G10R10_UNORM_PACK32, AV_PIX_FMT_X2BGR10, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_A2B10G10R10_UNORM_PACK32 } },
> + { VK_FORMAT_R32G32B32A32_UINT, AV_PIX_FMT_RGBA32, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R32G32B32A32_UINT } },
> { VK_FORMAT_R32G32B32A32_SFLOAT, AV_PIX_FMT_RGBAF32, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R32G32B32A32_SFLOAT } },
>
> /* Planar RGB */
> diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c
> index 4cd180f54c..1ad3b3feb5 100644
> --- a/libavutil/vulkan.c
> +++ b/libavutil/vulkan.c
> @@ -1282,7 +1282,7 @@ int ff_vk_mt_is_np_rgb(enum AVPixelFormat pix_fmt)
> pix_fmt == AV_PIX_FMT_BGR565 || pix_fmt == AV_PIX_FMT_BGR0 ||
> pix_fmt == AV_PIX_FMT_0BGR || pix_fmt == AV_PIX_FMT_RGB0 ||
> pix_fmt == AV_PIX_FMT_X2RGB10 || pix_fmt == AV_PIX_FMT_X2BGR10 ||
> - pix_fmt == AV_PIX_FMT_RGBAF32)
> + pix_fmt == AV_PIX_FMT_RGBAF32 || pix_fmt == AV_PIX_FMT_RGBA32)
> return 1;
> return 0;
> }
> @@ -1366,6 +1366,15 @@ const char *ff_vk_shader_rep_fmt(enum AVPixelFormat pix_fmt,
> };
> return rep_tab[rep_fmt];
> }
> + case AV_PIX_FMT_RGBA32: {
> + const char *rep_tab[] = {
> + [FF_VK_REP_NATIVE] = "rgba32ui",
> + [FF_VK_REP_FLOAT] = NULL,
> + [FF_VK_REP_INT] = "rgba32i",
> + [FF_VK_REP_UINT] = "rgba32ui",
> + };
> + return rep_tab[rep_fmt];
> + };
> case AV_PIX_FMT_GRAY8:
> case AV_PIX_FMT_GBRAP: {
> const char *rep_tab[] = {
What does this accomplish if you don't add input and/or output support
to libsws? Assuming Vulkan driver outputs this, nothing but
av_read_image_line() and av_write_image_line() will be able to do
anything with it.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 495 bytes
Desc: OpenPGP digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20241011/2edec77b/attachment.sig>
More information about the ffmpeg-devel
mailing list