diff mbox series

[FFmpeg-devel] avutil/hwcontext_vulkan: add proper maps for XV3{0, 6}

Message ID 20241014145056.1233-1-jamrial@gmail.com
State New
Headers show
Series [FFmpeg-devel] avutil/hwcontext_vulkan: add proper maps for XV3{0, 6} | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished

Commit Message

James Almer Oct. 14, 2024, 2:50 p.m. UTC
Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavutil/hwcontext_vulkan.c | 9 ++++-----
 libavutil/vulkan.c           | 3 ++-
 2 files changed, 6 insertions(+), 6 deletions(-)

Comments

Lynne Oct. 14, 2024, 3:09 p.m. UTC | #1
On 14/10/2024 16:50, James Almer wrote:
> Signed-off-by: James Almer <jamrial@gmail.com>
> ---
>   libavutil/hwcontext_vulkan.c | 9 ++++-----
>   libavutil/vulkan.c           | 3 ++-
>   2 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
> index 47e21fda83..465308271e 100644
> --- a/libavutil/hwcontext_vulkan.c
> +++ b/libavutil/hwcontext_vulkan.c
> @@ -308,7 +308,6 @@ static const struct FFVkFormatEntry {
>       { VK_FORMAT_R32_SFLOAT, AV_PIX_FMT_GRAYF32, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R32_SFLOAT } },
>   
>       /* RGB formats */
> -    { VK_FORMAT_R16G16B16A16_UNORM,       AV_PIX_FMT_XV36,    VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM       } },
>       { VK_FORMAT_B8G8R8A8_UNORM,           AV_PIX_FMT_BGRA,    VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_B8G8R8A8_UNORM           } },
>       { VK_FORMAT_R8G8B8A8_UNORM,           AV_PIX_FMT_RGBA,    VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R8G8B8A8_UNORM           } },
>       { VK_FORMAT_R8G8B8_UNORM,             AV_PIX_FMT_RGB24,   VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R8G8B8_UNORM             } },
> @@ -367,6 +366,8 @@ static const struct FFVkFormatEntry {
>       { VK_FORMAT_B8G8R8G8_422_UNORM,                     AV_PIX_FMT_UYVY422, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R8G8B8A8_UNORM     } },
>       { VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, AV_PIX_FMT_Y210,    VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM } },
>       { VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, AV_PIX_FMT_Y212,    VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM } },
> +    { VK_FORMAT_A2R10G10B10_UNORM_PACK32,               AV_PIX_FMT_XV30,    VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM } },
> +    { VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,     AV_PIX_FMT_XV36,    VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM } },
>   };
>   static const int nb_vk_formats_list = FF_ARRAY_ELEMS(vk_formats_list);
>   
> @@ -2863,10 +2864,8 @@ static const struct {
>       // All these DRM_FORMATs were added in the same libdrm commit.
>   #ifdef DRM_FORMAT_XYUV8888
>       { DRM_FORMAT_XYUV8888, VK_FORMAT_R8G8B8A8_UNORM     },
> -    { DRM_FORMAT_XVYU12_16161616, VK_FORMAT_R16G16B16A16_UNORM} ,
> -    // As we had to map XV36 to a 16bit Vulkan format, reverse mapping will
> -    // end up yielding Y416 as the DRM format, so we need to recognise it.
> -    { DRM_FORMAT_Y416,     VK_FORMAT_R16G16B16A16_UNORM },
> +    { DRM_FORMAT_XVYU2101010, VK_FORMAT_A2R10G10B10_UNORM_PACK32 } ,
> +    { DRM_FORMAT_XVYU12_16161616, VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 } ,
>   #endif
>   };
>   
> diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c
> index 661b2627c9..e2d2478608 100644
> --- a/libavutil/vulkan.c
> +++ b/libavutil/vulkan.c
> @@ -1311,7 +1311,8 @@ const char *ff_vk_shader_rep_fmt(enum AVPixelFormat pix_fmt,
>       }
>       case AV_PIX_FMT_X2RGB10:
>       case AV_PIX_FMT_X2BGR10:
> -    case AV_PIX_FMT_Y210: {
> +    case AV_PIX_FMT_Y210:
> +    case AV_PIX_FMT_XV30: {
>           const char *rep_tab[] = {
>               [FF_VK_REP_NATIVE] = "rgb10_a2ui",
>               [FF_VK_REP_FLOAT] = "rgb10_a2",

LGTM

Thanks.
diff mbox series

Patch

diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
index 47e21fda83..465308271e 100644
--- a/libavutil/hwcontext_vulkan.c
+++ b/libavutil/hwcontext_vulkan.c
@@ -308,7 +308,6 @@  static const struct FFVkFormatEntry {
     { VK_FORMAT_R32_SFLOAT, AV_PIX_FMT_GRAYF32, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R32_SFLOAT } },
 
     /* RGB formats */
-    { VK_FORMAT_R16G16B16A16_UNORM,       AV_PIX_FMT_XV36,    VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM       } },
     { VK_FORMAT_B8G8R8A8_UNORM,           AV_PIX_FMT_BGRA,    VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_B8G8R8A8_UNORM           } },
     { VK_FORMAT_R8G8B8A8_UNORM,           AV_PIX_FMT_RGBA,    VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R8G8B8A8_UNORM           } },
     { VK_FORMAT_R8G8B8_UNORM,             AV_PIX_FMT_RGB24,   VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R8G8B8_UNORM             } },
@@ -367,6 +366,8 @@  static const struct FFVkFormatEntry {
     { VK_FORMAT_B8G8R8G8_422_UNORM,                     AV_PIX_FMT_UYVY422, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R8G8B8A8_UNORM     } },
     { VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, AV_PIX_FMT_Y210,    VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM } },
     { VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, AV_PIX_FMT_Y212,    VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM } },
+    { VK_FORMAT_A2R10G10B10_UNORM_PACK32,               AV_PIX_FMT_XV30,    VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM } },
+    { VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,     AV_PIX_FMT_XV36,    VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM } },
 };
 static const int nb_vk_formats_list = FF_ARRAY_ELEMS(vk_formats_list);
 
@@ -2863,10 +2864,8 @@  static const struct {
     // All these DRM_FORMATs were added in the same libdrm commit.
 #ifdef DRM_FORMAT_XYUV8888
     { DRM_FORMAT_XYUV8888, VK_FORMAT_R8G8B8A8_UNORM     },
-    { DRM_FORMAT_XVYU12_16161616, VK_FORMAT_R16G16B16A16_UNORM} ,
-    // As we had to map XV36 to a 16bit Vulkan format, reverse mapping will
-    // end up yielding Y416 as the DRM format, so we need to recognise it.
-    { DRM_FORMAT_Y416,     VK_FORMAT_R16G16B16A16_UNORM },
+    { DRM_FORMAT_XVYU2101010, VK_FORMAT_A2R10G10B10_UNORM_PACK32 } ,
+    { DRM_FORMAT_XVYU12_16161616, VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 } ,
 #endif
 };
 
diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c
index 661b2627c9..e2d2478608 100644
--- a/libavutil/vulkan.c
+++ b/libavutil/vulkan.c
@@ -1311,7 +1311,8 @@  const char *ff_vk_shader_rep_fmt(enum AVPixelFormat pix_fmt,
     }
     case AV_PIX_FMT_X2RGB10:
     case AV_PIX_FMT_X2BGR10:
-    case AV_PIX_FMT_Y210: {
+    case AV_PIX_FMT_Y210:
+    case AV_PIX_FMT_XV30: {
         const char *rep_tab[] = {
             [FF_VK_REP_NATIVE] = "rgb10_a2ui",
             [FF_VK_REP_FLOAT] = "rgb10_a2",