aboutsummaryrefslogtreecommitdiffstats
path: root/libavutil/vulkan.c
diff options
context:
space:
mode:
authorLynne <dev@lynne.ee>2025-02-23 14:09:13 +0000
committerLynne <dev@lynne.ee>2025-03-17 08:49:15 +0100
commitf2a0bdd6b15523f062ac782727696effd449d347 (patch)
tree843792594f4ca5cbba6a282c6039bf968555ffae /libavutil/vulkan.c
parentdd7cc557affff5040d3e8a9a072f01155b591607 (diff)
downloadffmpeg-f2a0bdd6b15523f062ac782727696effd449d347.tar.gz
vulkan: unify handling of BGR and simplify ffv1_rct
Diffstat (limited to 'libavutil/vulkan.c')
-rw-r--r--libavutil/vulkan.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c
index ad10be4195..e641975f1e 100644
--- a/libavutil/vulkan.c
+++ b/libavutil/vulkan.c
@@ -1451,6 +1451,52 @@ int ff_vk_mt_is_np_rgb(enum AVPixelFormat pix_fmt)
return 0;
}
+void ff_vk_set_perm(enum AVPixelFormat pix_fmt, int lut[4], int inv)
+{
+ switch (pix_fmt) {
+ case AV_PIX_FMT_BGRA:
+ case AV_PIX_FMT_BGR0:
+ case AV_PIX_FMT_BGR565:
+ case AV_PIX_FMT_X2BGR10:
+ lut[0] = 2;
+ lut[1] = 1;
+ lut[2] = 0;
+ lut[3] = 3;
+ break;
+ case AV_PIX_FMT_GBRAP:
+ case AV_PIX_FMT_GBRP:
+ 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:
+ case AV_PIX_FMT_GBRP14:
+ case AV_PIX_FMT_GBRP16:
+ case AV_PIX_FMT_GBRPF32:
+ case AV_PIX_FMT_GBRAPF32:
+ lut[0] = 1;
+ lut[1] = 2;
+ lut[2] = 0;
+ lut[3] = 3;
+ break;
+ default:
+ lut[0] = 0;
+ lut[1] = 1;
+ lut[2] = 2;
+ lut[3] = 3;
+ break;
+ }
+
+ if (inv) {
+ int lut_tmp[4] = { lut[0], lut[1], lut[2], lut[3] };
+ for (int i = 0; i < 4; i++)
+ lut[lut_tmp[i]] = i;
+ }
+
+ return;
+}
+
const char *ff_vk_shader_rep_fmt(enum AVPixelFormat pix_fmt,
enum FFVkShaderRepFormat rep_fmt)
{