meson: make libplacebo a required dependency

Make it not possible to build mpv without the latest libplacebo anymore.
This will allow for less code duplication between mpv and libplacebo,
and in the future also let us delete legacy ifdefs and track libplacebo
better.
This commit is contained in:
llyyr 2023-09-20 02:50:26 +05:30 committed by Niklas Haas
parent 59a3c453f9
commit f5ca11e12b
9 changed files with 20 additions and 41 deletions

View File

@ -14,7 +14,7 @@ PKG_CONFIG_PATH="${FFMPEG_SYSROOT}/lib/pkgconfig/" CC="${CC}" CXX="${CXX}" \
meson setup build \
-Dprefix="${MPV_INSTALL_PREFIX}" \
-D{libmpv,tests}=true \
-D{gl,iconv,lcms2,libplacebo,lua,jpeg,plain-gl,zlib}=enabled \
-D{gl,iconv,lcms2,lua,jpeg,plain-gl,zlib}=enabled \
-D{cocoa,coreaudio,gl-cocoa,macos-cocoa-cb,macos-touchbar,videotoolbox-gl}=enabled
meson compile -C build -j4

View File

@ -272,7 +272,7 @@ meson setup $build --cross-file "$prefix_dir/crossfile" \
-Dc_args="-Wno-error=deprecated -Wno-error=deprecated-declarations" \
--buildtype debugoptimized \
-Dlibmpv=true -Dlua=luajit \
-D{shaderc,spirv-cross,d3d11,libplacebo}=enabled
-D{shaderc,spirv-cross,d3d11}=enabled
meson compile -C $build

View File

@ -23,6 +23,9 @@ libavutil = dependency('libavutil', version: '>= 56.70.100')
libswresample = dependency('libswresample', version: '>= 3.9.100')
libswscale = dependency('libswscale', version: '>= 5.9.100')
libplacebo = dependency('libplacebo', version: '>=6.338.0', fallback: ['libplacebo', 'libplacebo'],
default_options: ['default_library=static', 'demos=false'])
libass = dependency('libass', version: '>= 0.12.2')
# the dependency order of libass -> ffmpeg is necessary due to
@ -32,6 +35,7 @@ dependencies = [libass,
libavfilter,
libavformat,
libavutil,
libplacebo,
libswresample,
libswscale]
@ -44,6 +48,7 @@ features = {
'avif-muxer': libavformat.version().version_compare('>= 59.24.100'),
'libass': true,
'threads': true,
'libplacebo': true,
}
@ -234,6 +239,12 @@ sources = files(
'video/repack.c',
'video/sws_utils.c',
## libplacebo
'video/out/placebo/ra_pl.c',
'video/out/placebo/utils.c',
'video/out/vo_gpu_next.c',
'video/out/gpu_next/context.c',
## osdep
'osdep/io.c',
'osdep/semaphore_osx.c',
@ -930,16 +941,6 @@ if features['jpeg']
dependencies += jpeg
endif
libplacebo = dependency('libplacebo', version: '>=6.292.0', required: get_option('libplacebo'))
features += {'libplacebo': libplacebo.found()}
if features['libplacebo']
dependencies += libplacebo
sources += files('video/out/placebo/ra_pl.c',
'video/out/placebo/utils.c',
'video/out/vo_gpu_next.c',
'video/out/gpu_next/context.c')
endif
sdl2_video = get_option('sdl2-video').require(
features['sdl2'],
error_message: 'sdl2 was not found!',
@ -1257,7 +1258,7 @@ endif
# vulkan
vulkan_opt = get_option('vulkan').require(
libplacebo.get_variable('pl_has_vulkan', default_value: '0') == '1',
error_message: 'libplacebo could not be found!',
error_message: 'libplacebo compiled without vulkan support!',
)
vulkan = dependency('vulkan', version: '>= 1.1.70', required: vulkan_opt)
features += {'vulkan': vulkan.found()}
@ -1330,9 +1331,8 @@ endif
vulkan_interop = get_option('vulkan-interop').require(
features['vulkan'] and vulkan.version().version_compare('>=1.3.238') and
features['libplacebo'] and
libavutil.version().version_compare('>=58.11.100'),
error_message: 'Vulkan Interop requires vulkan headers >= 1.3.238, libplacebo, and libavutil >= 58.11.100',
error_message: 'Vulkan Interop requires vulkan headers >= 1.3.238, and libavutil >= 58.11.100',
)
features += {'vulkan-interop': vulkan_interop.allowed()}
if vulkan_interop.allowed()
@ -1426,14 +1426,9 @@ features += {'vaapi': vaapi.allowed()}
if features['vaapi']
dependencies += libva
sources += files('video/filter/vf_vavpp.c',
'video/vaapi.c')
endif
features += {'vaapi-egl': features['vaapi'] and features['egl'] and features['drm']}
features += {'vaapi-libplacebo': features['vaapi'] and libplacebo.found()}
if features['vaapi-egl'] or features['vaapi-libplacebo']
sources += files('video/out/hwdec/hwdec_vaapi.c')
'video/vaapi.c',
'video/out/hwdec/hwdec_vaapi.c',
'video/out/hwdec/dmabuf_interop_pl.c')
endif
dmabuf_interop_gl = features['egl'] and features['drm']
@ -1442,12 +1437,6 @@ if features['dmabuf-interop-gl']
sources += files('video/out/hwdec/dmabuf_interop_gl.c')
endif
dmabuf_interop_pl = features['vaapi-libplacebo']
features += {'dmabuf-interop-pl': dmabuf_interop_pl}
if features['dmabuf-interop-pl']
sources += files('video/out/hwdec/dmabuf_interop_pl.c')
endif
vdpau_opt = get_option('vdpau').require(
features['x11'],
error_message: 'x11 was not found!',
@ -1786,7 +1775,6 @@ if get_option('tests')
endif
summary({'d3d11': features['d3d11'],
'gpu-next': features['libplacebo'],
'javascript': features['javascript'],
'libmpv': get_option('libmpv'),
'lua': features['lua'],

View File

@ -74,7 +74,6 @@ option('gl-dxinterop', type: 'feature', value: 'auto', description: 'OpenGL/Dire
option('gl-win32', type: 'feature', value: 'auto', description: 'OpenGL Win32 Backend')
option('gl-x11', type: 'feature', value: 'disabled', description: 'OpenGL X11/GLX (deprecated/legacy)')
option('jpeg', type: 'feature', value: 'auto', description: 'JPEG support')
option('libplacebo', type: 'feature', value: 'auto', description: 'libplacebo support')
option('rpi', type: 'feature', value: 'disabled', description: 'Raspberry Pi support')
option('sdl2-video', type: 'feature', value: 'auto', description: 'SDL2 video output')
option('shaderc', type: 'feature', value: 'auto', description: 'libshaderc SPIR-V compiler')

View File

@ -26,9 +26,7 @@
#include "config.h"
#if HAVE_LIBPLACEBO
#include <libplacebo/config.h>
#endif
#include "mpv_talloc.h"
@ -149,9 +147,7 @@ void mp_print_version(struct mp_log *log, int always)
mp_msg(log, v, "%s %s\n", mpv_version, mpv_copyright);
if (strcmp(mpv_builddate, "UNKNOWN"))
mp_msg(log, v, " built on %s\n", mpv_builddate);
#if HAVE_LIBPLACEBO
mp_msg(log, v, "libplacebo version: %s\n", PL_VERSION);
#endif
check_library_versions(log, v);
mp_msg(log, v, "\n");
// Only in verbose mode.

View File

@ -41,7 +41,7 @@ extern const struct ra_hwdec_driver ra_hwdec_aimagereader;
extern const struct ra_hwdec_driver ra_hwdec_vulkan;
const struct ra_hwdec_driver *const ra_hwdec_drivers[] = {
#if HAVE_VAAPI_EGL || HAVE_VAAPI_LIBPLACEBO
#if HAVE_VAAPI
&ra_hwdec_vaapi,
#endif
#if HAVE_VIDEOTOOLBOX_GL || HAVE_IOS_GL

View File

@ -55,7 +55,7 @@ const static dmabuf_interop_init interop_inits[] = {
#if HAVE_DMABUF_INTEROP_GL
dmabuf_interop_gl_init,
#endif
#if HAVE_DMABUF_INTEROP_PL
#if HAVE_VAAPI
dmabuf_interop_pl_init,
#endif
#if HAVE_DMABUF_WAYLAND

View File

@ -128,9 +128,7 @@ const static dmabuf_interop_init interop_inits[] = {
#if HAVE_DMABUF_INTEROP_GL
dmabuf_interop_gl_init,
#endif
#if HAVE_DMABUF_INTEROP_PL
dmabuf_interop_pl_init,
#endif
#if HAVE_DMABUF_WAYLAND
dmabuf_interop_wl_init,
#endif

View File

@ -76,9 +76,7 @@ static const struct vo_driver *const video_out_drivers[] =
&video_out_mediacodec_embed,
#endif
&video_out_gpu,
#if HAVE_LIBPLACEBO
&video_out_gpu_next,
#endif
#if HAVE_VDPAU
&video_out_vdpau,
#endif