1
0
mirror of https://github.com/mpv-player/mpv synced 2025-03-11 08:37:59 +00:00
mpv/video/out
Akemi c5e4538bc4 cocoa-cb: initial implementation via opengl-cb API
this is meant to replace the old and not properly working vo_gpu/opengl
cocoa backend in the future. the problems are various shortcomings of
Apple's opengl implementation and buggy behaviour in certain
circumstances that couldn't be properly worked around. there are also
certain regressions on newer macOS versions from 10.11 onwards.

- awful opengl performance with a none layer backed context
- huge amount of dropped frames with an early context flush
- flickering of system elements like the dock or volume indicator
- double buffering not properly working with a none layer backed context
- bad performance in fullscreen because of system optimisations

all the problems were caused by using a normal opengl context, that
seems somewhat abandoned by apple, and are fixed by using a layer backed
opengl context instead. problems that couldn't be fixed could be
properly worked around.

this has all features our old backend has sans the wid embedding,
the possibility to disable the automatic GPU switching and taking
screenshots of the window content. the first was deemed unnecessary by
me for now, since i just use the libmpv API that others can use anyway.
second is technically not possible atm because we have to pre-allocate
our opengl context at a time the config isn't read yet, so we can't get
the needed property. third one is a bit tricky because of deadlocking
and it needed to be in sync, hopefully i can work around that in the
future.

this also has at least one additional feature or eye-candy. a properly
working fullscreen animation with the native fs. also since this is a
direct port of the old backend of the parts that could be used, though
with adaptions and improvements, this looks a lot cleaner and easier to
understand.

some credit goes to @pigoz for the initial swift build support which
i could improve upon.

Fixes: #5478, #5393, #5152, #5151, #4615, #4476, #3978, #3746, #3739,
#2392, #2217
2018-02-12 04:49:15 -08:00
..
cocoa osx: code cleanups and cosmetic fixes 2018-01-20 14:43:49 -08:00
cocoa-cb cocoa-cb: initial implementation via opengl-cb API 2018-02-12 04:49:15 -08:00
d3d11 video: rewrite filtering glue code 2018-01-30 03:10:27 -08:00
gpu vo_gpu: make screenshots use the GL renderer 2018-02-11 17:45:51 -08:00
opengl cocoa-cb: initial implementation via opengl-cb API 2018-02-12 04:49:15 -08:00
vulkan vo_gpu: add RA_CAP for gl_NumWorkGroups 2018-02-05 23:11:18 -08:00
wayland wayland_common: rewrite from scratch 2017-10-03 19:36:02 +01:00
win32 vo_gpu: win: remove exclusive-fullscreen detection hack 2017-12-20 14:53:41 +11:00
aspect.c aspect: change license to LGPL 2017-06-17 17:08:51 +02:00
aspect.h aspect: change license to LGPL 2017-06-17 17:08:51 +02:00
bitmap_packer.c
bitmap_packer.h
cocoa_cb_common.swift cocoa-cb: initial implementation via opengl-cb API 2018-02-12 04:49:15 -08:00
cocoa_common.h osx: change license of OSX and cocoa files to LGPL 2017-06-24 16:29:22 +02:00
cocoa_common.m Revert "cocoa: re-enable double buffering" 2017-09-22 23:08:46 +10:00
d3d_shader_420p.h
d3d_shader_yuv.hlsl
dither.c
dither.h
drm_atomic.c video: fix double free in drm_atomic_create_context 2017-12-03 17:30:17 +02:00
drm_atomic.h Add DRM_PRIME Format Handling and Display for RockChip MPP decoders 2017-10-23 21:07:24 +02:00
drm_common.c video : Move drm options to substruct. 2017-10-23 21:08:20 +02:00
drm_common.h video : Move drm options to substruct. 2017-10-23 21:08:20 +02:00
drm_prime.c Add DRM_PRIME Format Handling and Display for RockChip MPP decoders 2017-10-23 21:07:24 +02:00
drm_prime.h Add DRM_PRIME Format Handling and Display for RockChip MPP decoders 2017-10-23 21:07:24 +02:00
filter_kernels.c vo_opengl: refactor scaler LUT weight packing/loading 2017-09-04 13:53:14 +02:00
filter_kernels.h vo_opengl: refactor scaler LUT weight packing/loading 2017-09-04 13:53:14 +02:00
vo_caca.c Add checks for HAVE_GPL to various GPL-only source files 2017-10-10 15:51:16 +02:00
vo_direct3d.c Add checks for HAVE_GPL to various GPL-only source files 2017-10-10 15:51:16 +02:00
vo_drm.c vo_drm: support --monitorpixelaspect 2018-02-11 17:51:15 -08:00
vo_gpu.c vo_gpu: make screenshots use the GL renderer 2018-02-11 17:45:51 -08:00
vo_image.c image_writer, vo_image: change license to LGPL 2017-06-18 15:45:24 +02:00
vo_lavc.c vo_lavc: remove messy delayed subtitle rendering logic 2017-11-07 05:29:26 +01:00
vo_mediacodec_embed.c vo_mediacodec_embed: implement hwcontext 2017-12-20 15:45:55 +11:00
vo_null.c vo.c, vo.h, vo_null.c: change license to LGPL 2017-05-10 15:06:20 +02:00
vo_opengl_cb.c cocoa-cb: initial implementation via opengl-cb API 2018-02-12 04:49:15 -08:00
vo_rpi.c vo_gpu: add internal ability to skip osd/subs for rendering 2018-02-11 17:45:51 -08:00
vo_sdl.c input: merge mouse wheel and axis keycodes 2017-09-03 20:31:44 +10:00
vo_tct.c sws_utils: don't force callers to provide option struct 2018-01-18 00:59:07 -08:00
vo_vaapi.c video: change some mp_image_pool semantics 2018-01-13 03:26:45 -08:00
vo_vdpau.c video: change some remaining vo_opengl mentions to vo_gpu 2018-01-20 14:43:49 -08:00
vo_x11.c sws_utils: don't force callers to provide option struct 2018-01-18 00:59:07 -08:00
vo_xv.c build: remove POSIX/sysv shared memory test 2017-12-02 23:19:13 +01:00
vo.c vo_gpu: make screenshots use the GL renderer 2018-02-11 17:45:51 -08:00
vo.h cocoa-cb: initial implementation via opengl-cb API 2018-02-12 04:49:15 -08:00
w32_common.c w32_common: refactor and improve window state handling 2017-12-19 23:22:52 +11:00
w32_common.h w32_common, w32_keyboard: change license to LGPL 2017-06-24 12:54:45 +02:00
wayland_common.c wayland_common: fix idle_inhibitor protocol segfault 2018-02-09 21:16:14 +02:00
wayland_common.h wayland_common: improve cursor code and scale cursor properly 2017-10-22 05:53:20 +01:00
win_state.c video: change some remaining vo_opengl mentions to vo_gpu 2018-01-20 14:43:49 -08:00
win_state.h x11: pseudo HiDPI scaling 2017-01-19 16:31:54 +01:00
x11_common.c input: merge mouse wheel and axis keycodes 2017-09-03 20:31:44 +10:00
x11_common.h Add checks for HAVE_GPL to various GPL-only source files 2017-10-10 15:51:16 +02:00