diff options
author | Lynne <dev@lynne.ee> | 2024-11-24 17:50:34 +0100 |
---|---|---|
committer | Lynne <dev@lynne.ee> | 2024-11-26 14:14:13 +0100 |
commit | f65e51293aedaffd51c54abc682bcea130d74e74 (patch) | |
tree | cf434dad990dbbafcd39fc00798f53b9df21aae0 | |
parent | 7c52dda55f130958b4d39f433f40e5c60ef919d2 (diff) | |
download | ffmpeg-f65e51293aedaffd51c54abc682bcea130d74e74.tar.gz |
hwcontext_vulkan: add support for AV_PIX_FMT_GBRAP10/12/14
-rw-r--r-- | libavcodec/vulkan/ffv1_enc_rct.comp | 2 | ||||
-rw-r--r-- | libavutil/hwcontext_vulkan.c | 3 | ||||
-rw-r--r-- | libavutil/vulkan.c | 7 |
3 files changed, 10 insertions, 2 deletions
diff --git a/libavcodec/vulkan/ffv1_enc_rct.comp b/libavcodec/vulkan/ffv1_enc_rct.comp index 28f40cda7e..a615381c90 100644 --- a/libavcodec/vulkan/ffv1_enc_rct.comp +++ b/libavcodec/vulkan/ffv1_enc_rct.comp @@ -30,7 +30,7 @@ ivec4 load_components(ivec2 pos) pix[i] = int(imageLoad(src[i], pos)[0]); /* Swizzle out the difference */ - if (bits > 8 && bits < 16) + if (bits > 8 && bits < 16 && transparency == 0) return pix.bgra; return pix.brga; } diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c index 7f5a74dd38..95455dfa39 100644 --- a/libavutil/hwcontext_vulkan.c +++ b/libavutil/hwcontext_vulkan.c @@ -337,6 +337,9 @@ static const struct FFVkFormatEntry { /* Planar RGB + Alpha */ { VK_FORMAT_R8_UNORM, AV_PIX_FMT_GBRAP, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM } }, + { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GBRAP10, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, + { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GBRAP12, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, + { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GBRAP14, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GBRAP16, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, { VK_FORMAT_R32_SFLOAT, AV_PIX_FMT_GBRAPF32, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R32_SFLOAT, VK_FORMAT_R32_SFLOAT, VK_FORMAT_R32_SFLOAT, VK_FORMAT_R32_SFLOAT } }, diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c index 790f2e5aa4..5c463b731c 100644 --- a/libavutil/vulkan.c +++ b/libavutil/vulkan.c @@ -1332,7 +1332,9 @@ int ff_vk_mt_is_np_rgb(enum AVPixelFormat pix_fmt) pix_fmt == AV_PIX_FMT_0BGR || pix_fmt == AV_PIX_FMT_RGB0 || pix_fmt == AV_PIX_FMT_GBRP10 || pix_fmt == AV_PIX_FMT_GBRP12 || pix_fmt == AV_PIX_FMT_GBRP14 || pix_fmt == AV_PIX_FMT_GBRP16 || - pix_fmt == AV_PIX_FMT_GBRAP || pix_fmt == AV_PIX_FMT_GBRAP16 || + pix_fmt == AV_PIX_FMT_GBRAP || pix_fmt == AV_PIX_FMT_GBRAP10 || + pix_fmt == AV_PIX_FMT_GBRAP12 || pix_fmt == AV_PIX_FMT_GBRAP14 || + pix_fmt == AV_PIX_FMT_GBRAP16 || pix_fmt == AV_PIX_FMT_GBRPF32 || pix_fmt == AV_PIX_FMT_GBRAPF32 || pix_fmt == AV_PIX_FMT_X2RGB10 || pix_fmt == AV_PIX_FMT_X2BGR10 || pix_fmt == AV_PIX_FMT_RGBAF32 || pix_fmt == AV_PIX_FMT_RGBF32 || @@ -1427,6 +1429,9 @@ const char *ff_vk_shader_rep_fmt(enum AVPixelFormat pix_fmt, case AV_PIX_FMT_GRAY12: case AV_PIX_FMT_GRAY14: case AV_PIX_FMT_GRAY16: + case AV_PIX_FMT_GBRAP10: + case AV_PIX_FMT_GBRAP12: + case AV_PIX_FMT_GBRAP14: case AV_PIX_FMT_GBRAP16: case AV_PIX_FMT_GBRP10: case AV_PIX_FMT_GBRP12: |