1
0
mirror of https://github.com/mpv-player/mpv synced 2025-03-01 20:00:37 +00:00
mpv/video
Philip Langdale 345342f50a hwdec/dmabuf_interop_gl: work-around implicit rgba swizzling
This has been a long standing problem that I think was the root cause
for wm4's vaapi shitlist. As DRM explicit supports all possible rgba
orderings, but OpenGL only guarantees support for 'rgba8', something
has to happen to support import of dmabufs with non-native ordering.

Although undocumented, it appears that somewhere in the import on the
GL side, the ordering is swizzled to rgba - which makes sense as that's
the only way to be able to support importing all the different formats.

But we didn't know this, and we do our own swizzling based on the
original imgfmt - which matches the drm format. So we get double
swizzling and messed up colours.

As there is no way for us to express that the GL swizzle happened to
the rest of mpv, the easiest thing to do is fudge the format to the
natural ordering so the GL doesn't change anything, then our swizzling
will do the right thing in the end.

Note that this change doesn't handle 0rgb and 0bgr because they seem to
be affected by some additional feature/bug that is mangling the
ordering somewhere that equally affects Vulkan interop. That could be a
vaapi driver bug or something going on in ffmpeg.
2022-10-15 09:30:46 -07:00
..
decode vo: hwdec: do hwdec interop lookup by image format 2022-09-21 09:39:34 -07:00
filter filters: lavfi: allow hwdec_interop selection for filters 2022-09-21 09:39:34 -07:00
out hwdec/dmabuf_interop_gl: work-around implicit rgba swizzling 2022-10-15 09:30:46 -07:00
csputils.c csputils: add mappings for DCI-P3 (ST.431-2) and P3-D65 (ST.432-1) 2020-12-30 20:03:54 +02:00
csputils.h csputils: add MP_CHROMA_TOPLEFT 2020-12-02 01:36:29 +01:00
cuda.c
d3d.c
d3d.h
drmprime.c video/drmprime: fix use-after-free 2022-08-09 22:19:45 -07:00
fmt-conversion.c f_hwtransfer: mp_image_pool: support HW -> HW mapping 2022-09-21 09:39:34 -07:00
fmt-conversion.h
hwdec.c filters: support loading new hwdec_interops from filters 2022-09-21 09:39:34 -07:00
hwdec.h vo: hwdec: do hwdec interop lookup by image format 2022-09-21 09:39:34 -07:00
image_loader.c
image_loader.h
image_writer.c video/image_writer: tag colorspace in AVCodecContext 2022-05-04 14:42:06 -04:00
image_writer.h video/image_writer: add Jpeg XL screenshots 2022-04-26 16:48:00 +03:00
img_format.c
img_format.h f_hwtransfer: mp_image_pool: support HW -> HW mapping 2022-09-21 09:39:34 -07:00
mp_image_pool.c f_hwtransfer: mp_image_pool: support HW -> HW mapping 2022-09-21 09:39:34 -07:00
mp_image_pool.h f_hwtransfer: mp_image_pool: support HW -> HW mapping 2022-09-21 09:39:34 -07:00
mp_image.c mp_image: strip DoVi metadata that requires an EL 2022-09-28 02:28:37 +02:00
mp_image.h mp_image: support film grain parameters 2022-04-05 15:02:18 +02:00
repack.c repack: add repacker for ccc16x16 formats 2022-09-10 12:31:44 -07:00
repack.h
sws_utils.c
sws_utils.h
vaapi.c
vaapi.h
vdpau_functions.inc
vdpau_mixer.c
vdpau_mixer.h
vdpau.c
vdpau.h
zimg.c csputils: add MP_CHROMA_TOPLEFT 2020-12-02 01:36:29 +01:00
zimg.h