mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-12 11:26:39 +00:00
265f1274dc
An operation is an arbitrary amount of work to be executed on the host, a device, or an external entity such as a presentation engine. The purpose of this object is to help on the operation's synchronization through declaring explicit execution dependencies, and memory dependencies between two sets of operations defined by the command’s two synchronization scopes. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5079>
497 lines
17 KiB
Meson
497 lines
17 KiB
Meson
gstvulkan_dep = dependency('', required: false)
|
|
gstvulkanxcb_dep = dependency('', required: false)
|
|
gstvulkanwyland_dep = dependency('', required: false)
|
|
if get_option('vulkan').disabled()
|
|
subdir_done()
|
|
endif
|
|
|
|
vulkan_sources = files(
|
|
'gstvkbuffermemory.c',
|
|
'gstvkbufferpool.c',
|
|
'gstvkcommandbuffer.c',
|
|
'gstvkcommandpool.c',
|
|
'gstvkdescriptorcache.c',
|
|
'gstvkdescriptorset.c',
|
|
'gstvkdescriptorpool.c',
|
|
'gstvkdevice.c',
|
|
'gstvkdebug.c',
|
|
'gstvkdisplay.c',
|
|
'gstvkerror.c',
|
|
'gstvkfence.c',
|
|
'gstvkformat.c',
|
|
'gstvkfullscreenquad.c',
|
|
'gstvkhandle.c',
|
|
'gstvkhandlepool.c',
|
|
'gstvkimagememory.c',
|
|
'gstvkimagebufferpool.c',
|
|
'gstvkimageview.c',
|
|
'gstvkinstance.c',
|
|
'gstvkmemory.c',
|
|
'gstvkoperation.c',
|
|
'gstvkphysicaldevice.c',
|
|
'gstvkqueue.c',
|
|
'gstvkswapper.c',
|
|
'gstvktrash.c',
|
|
'gstvkvideofilter.c',
|
|
'gstvkvideoutils.c',
|
|
'gstvkutils.c',
|
|
'gstvkwindow.c',
|
|
)
|
|
|
|
vulkan_headers = files(
|
|
'gstvkapi.h',
|
|
'gstvkbarrier.h',
|
|
'gstvkbuffermemory.h',
|
|
'gstvkbufferpool.h',
|
|
'gstvkcommandbuffer.h',
|
|
'gstvkcommandpool.h',
|
|
'gstvkdescriptorcache.h',
|
|
'gstvkdescriptorset.h',
|
|
'gstvkdescriptorpool.h',
|
|
'gstvkdebug.h',
|
|
'gstvkdevice.h',
|
|
'gstvkdisplay.h',
|
|
'gstvkerror.h',
|
|
'gstvkfence.h',
|
|
'gstvkformat.h',
|
|
'gstvkfullscreenquad.h',
|
|
'gstvkhandle.h',
|
|
'gstvkhandlepool.h',
|
|
'gstvkimagememory.h',
|
|
'gstvkimagebufferpool.h',
|
|
'gstvkimageview.h',
|
|
'gstvkinstance.h',
|
|
'gstvkmemory.h',
|
|
'gstvkoperation.h',
|
|
'gstvkphysicaldevice.h',
|
|
'gstvkqueue.h',
|
|
'gstvkswapper.h',
|
|
'gstvktrash.h',
|
|
'gstvkutils.h',
|
|
'gstvkvideofilter.h',
|
|
'gstvkvideoutils.h',
|
|
'gstvkwindow.h',
|
|
'vulkan-prelude.h',
|
|
'vulkan_fwd.h',
|
|
'vulkan.h',
|
|
)
|
|
|
|
vulkan_priv_sources = []
|
|
vulkan_xcb_sources = []
|
|
vulkan_xcb_headers = []
|
|
vulkan_wayland_sources = []
|
|
vulkan_wayland_headers = []
|
|
|
|
vulkan_windowing = false
|
|
vulkan_objc_args = []
|
|
vulkan_defines = []
|
|
optional_deps = []
|
|
has_vulkan_header = false
|
|
vulkan_dep = dependency('', required: false)
|
|
vulkan_inc_dir = ''
|
|
enabled_vulkan_winsys = []
|
|
|
|
vulkan_conf = configuration_data()
|
|
vulkan_conf_options = [
|
|
'GST_VULKAN_HAVE_WINDOW_XCB',
|
|
'GST_VULKAN_HAVE_WINDOW_WAYLAND',
|
|
'GST_VULKAN_HAVE_WINDOW_COCOA',
|
|
'GST_VULKAN_HAVE_WINDOW_IOS',
|
|
'GST_VULKAN_HAVE_WINDOW_WIN32',
|
|
'GST_VULKAN_HAVE_WINDOW_ANDROID',
|
|
'GST_VULKAN_HAVE_VIDEO_EXTENSIONS',
|
|
]
|
|
|
|
foreach option : vulkan_conf_options
|
|
vulkan_conf.set(option, 0)
|
|
endforeach
|
|
|
|
if ['ios', 'darwin'].contains(host_system)
|
|
# - ios does not support the loader/validation layers
|
|
# - We need to link directly to MoltenVK to be able to use
|
|
# MoltenVK-specific functions that use dispatchable handles (like
|
|
# retrieving the metal device from the VkDevice) which is currently waiting
|
|
# on implementing a proper Metal extension for Vulkan
|
|
# https://github.com/KhronosGroup/MoltenVK/issues/492
|
|
vulkan_dep = cc.find_library('MoltenVK', required : get_option('vulkan'))
|
|
elif host_system == 'windows'
|
|
vulkan_root = run_command(python3, '-c', 'import os; print(os.environ.get("VK_SDK_PATH"))', check: false).stdout().strip()
|
|
if vulkan_root != '' and vulkan_root != 'None'
|
|
vulkan_lib_dir = ''
|
|
if build_machine.cpu_family() == 'x86_64'
|
|
vulkan_lib_dir = join_paths(vulkan_root, 'Lib')
|
|
else
|
|
vulkan_lib_dir = join_paths(vulkan_root, 'Lib32')
|
|
endif
|
|
|
|
vulkan_lib = cc.find_library('vulkan-1', dirs: vulkan_lib_dir,
|
|
required : get_option('vulkan'))
|
|
|
|
vulkan_inc_dir = join_paths(vulkan_root, 'Include')
|
|
has_vulkan_header = cc.has_header('vulkan/vulkan_core.h',
|
|
args: '-I' + vulkan_inc_dir)
|
|
|
|
if vulkan_lib.found() and has_vulkan_header
|
|
vulkan_dep = declare_dependency(include_directories: include_directories(vulkan_inc_dir),
|
|
dependencies: vulkan_lib)
|
|
endif
|
|
endif
|
|
else
|
|
vulkan_dep = dependency('vulkan', method: 'pkg-config', required : false)
|
|
if not vulkan_dep.found()
|
|
vulkan_dep = cc.find_library('vulkan', required : false)
|
|
endif
|
|
endif
|
|
|
|
if host_system != 'windows'
|
|
has_vulkan_header = cc.has_header('vulkan/vulkan_core.h')
|
|
endif
|
|
|
|
if not has_vulkan_header and get_option('vulkan').enabled()
|
|
error('vulkan plugin enabled, but vulkan.h not found')
|
|
endif
|
|
if not vulkan_dep.found() and get_option('vulkan').enabled()
|
|
error('vulkan plugin enabled, but could not find vulkan library')
|
|
endif
|
|
|
|
xcb_dep = dependency('xcb', version : '>=1.10', required : get_option('x11'))
|
|
xkbcommon_dep = dependency('xkbcommon', required : get_option('x11'))
|
|
xkbcommon_x11_dep = dependency('xkbcommon-x11', required : get_option('x11'))
|
|
|
|
if xcb_dep.found() and xkbcommon_dep.found() and xkbcommon_x11_dep.found() and cc.has_header('vulkan/vulkan_xcb.h', dependencies : vulkan_dep)
|
|
vulkan_priv_sources += files(
|
|
'xcb/gstvkwindow_xcb.c',
|
|
'xcb/xcb_event_source.c',
|
|
)
|
|
vulkan_xcb_sources += files(
|
|
'xcb/gstvkdisplay_xcb.c',
|
|
)
|
|
vulkan_xcb_headers += files(
|
|
'xcb/xcb.h',
|
|
'xcb/gstvkdisplay_xcb.h'
|
|
)
|
|
|
|
optional_deps += [xcb_dep, xkbcommon_dep, xkbcommon_x11_dep]
|
|
vulkan_windowing = true
|
|
vulkan_conf.set('GST_VULKAN_HAVE_WINDOW_XCB', 1)
|
|
enabled_vulkan_winsys += ['xcb']
|
|
endif
|
|
|
|
wayland_client_dep = dependency('wayland-client', version : '>=1.4', required : get_option('wayland'))
|
|
wayland_protocols_dep = dependency('wayland-protocols', version : '>= 1.15', required : get_option('wayland'))
|
|
wayland_scanner = find_program('wayland-scanner', required: get_option('wayland'))
|
|
if wayland_client_dep.found() and wayland_protocols_dep.found() and wayland_scanner.found() and cc.has_header('vulkan/vulkan_wayland.h', dependencies : vulkan_dep)
|
|
# Generate the XDG shell interface
|
|
wayland_protocols_basedir = wayland_protocols_dep.get_variable('pkgdatadir')
|
|
xdg_shell_xml_spec = join_paths(wayland_protocols_basedir, 'stable', 'xdg-shell', 'xdg-shell.xml')
|
|
xdg_shell_header = custom_target('xdg-shell-client-header',
|
|
command: [ wayland_scanner, 'client-header', '@INPUT@', '@OUTPUT@' ],
|
|
input: xdg_shell_xml_spec,
|
|
output: 'xdg-shell-client-protocol.h',
|
|
)
|
|
xdg_shell_code = custom_target('xdg-shell-client-code',
|
|
command: [ wayland_scanner, 'private-code', '@INPUT@', '@OUTPUT@' ],
|
|
input: xdg_shell_xml_spec,
|
|
output: 'xdg-shell-client-protocol.c',
|
|
)
|
|
|
|
vulkan_priv_sources += files(
|
|
'wayland/gstvkdisplay_wayland.c',
|
|
'wayland/gstvkwindow_wayland.c',
|
|
'wayland/wayland_event_source.c',
|
|
)
|
|
vulkan_priv_sources += [
|
|
xdg_shell_header,
|
|
xdg_shell_code,
|
|
]
|
|
vulkan_wayland_sources += files(
|
|
'wayland/gstvkdisplay_wayland.c',
|
|
)
|
|
vulkan_wayland_headers += files(
|
|
'wayland/wayland.h',
|
|
'wayland/gstvkdisplay_wayland.h'
|
|
)
|
|
|
|
optional_deps += wayland_client_dep
|
|
vulkan_windowing = true
|
|
vulkan_conf.set('GST_VULKAN_HAVE_WINDOW_WAYLAND', 1)
|
|
enabled_vulkan_winsys += ['wayland']
|
|
endif
|
|
|
|
if ['darwin', 'ios'].contains(host_system)
|
|
objc = meson.get_compiler('objc')
|
|
if not objc.has_argument('-fobjc-arc')
|
|
error('ARC is required for building')
|
|
endif
|
|
|
|
vulkan_objc_args += ['-fobjc-arc']
|
|
|
|
foundation_dep = dependency('appleframeworks', modules : ['Foundation'], required : get_option('vulkan'))
|
|
quartzcore_dep = dependency('appleframeworks', modules : ['QuartzCore'], required : get_option('vulkan'))
|
|
corefoundation_dep = dependency('appleframeworks', modules : ['CoreFoundation'], required : get_option('vulkan'))
|
|
if foundation_dep.found() and quartzcore_dep.found() and corefoundation_dep.found()
|
|
optional_deps += [foundation_dep, corefoundation_dep, quartzcore_dep]
|
|
endif
|
|
endif
|
|
|
|
if host_system == 'darwin'
|
|
cocoa_dep = dependency('appleframeworks', modules : ['Cocoa'], required : get_option('vulkan'))
|
|
|
|
if cocoa_dep.found() and cc.has_header('vulkan/vulkan_macos.h', dependencies : vulkan_dep)
|
|
vulkan_priv_sources += files(
|
|
'cocoa/gstvkdisplay_cocoa.m',
|
|
'cocoa/gstvkwindow_cocoa.m',
|
|
)
|
|
optional_deps += [cocoa_dep]
|
|
vulkan_windowing = true
|
|
vulkan_conf.set('GST_VULKAN_HAVE_WINDOW_COCOA', 1)
|
|
enabled_vulkan_winsys += ['cocoa']
|
|
endif
|
|
endif
|
|
|
|
if host_system == 'ios'
|
|
uikit_dep = dependency('appleframeworks', modules : ['UIKit'], required : get_option('vulkan'))
|
|
|
|
if uikit_dep.found() and cc.has_header('vulkan/vulkan_ios.h', dependencies : vulkan_dep)
|
|
vulkan_priv_sources += files(
|
|
'ios/gstvkdisplay_ios.m',
|
|
'ios/gstvkwindow_ios.m',
|
|
)
|
|
optional_deps += [uikit_dep]
|
|
vulkan_windowing = true
|
|
vulkan_conf.set('GST_VULKAN_HAVE_WINDOW_IOS', 1)
|
|
enabled_vulkan_winsys += ['ios']
|
|
endif
|
|
endif
|
|
|
|
if host_system == 'windows'
|
|
gdi_dep = cc.find_library('gdi32', required : get_option('vulkan'))
|
|
|
|
# Cannot use internal dependency object with cc.has_header()
|
|
if gdi_dep.found() and cc.has_header('vulkan/vulkan_win32.h', args: '-I' + vulkan_inc_dir)
|
|
vulkan_priv_sources += ['win32/gstvkwindow_win32.c']
|
|
optional_deps += [gdi_dep]
|
|
vulkan_windowing = true
|
|
vulkan_conf.set('GST_VULKAN_HAVE_WINDOW_WIN32', 1)
|
|
enabled_vulkan_winsys += ['win32']
|
|
endif
|
|
endif
|
|
|
|
if host_system == 'android'
|
|
if cc.has_header('vulkan/vulkan_android.h', dependencies : vulkan_dep)
|
|
vulkan_priv_sources += files(
|
|
'android/gstvkdisplay_android.c',
|
|
'android/gstvkwindow_android.c',
|
|
)
|
|
vulkan_windowing = true
|
|
vulkan_conf.set('GST_VULKAN_HAVE_WINDOW_ANDROID', 1)
|
|
enabled_vulkan_winsys += ['android']
|
|
endif
|
|
endif
|
|
|
|
if not vulkan_windowing
|
|
if get_option('vulkan').enabled()
|
|
error('No Windowing system found. vulkansink will not work')
|
|
else
|
|
message('No Windowing system found. vulkansink will not work')
|
|
endif
|
|
endif
|
|
|
|
# Only needed for the vulkan plugin, but doesn't make sense to build
|
|
# anything else vulkan related if we are not going to build the plugin
|
|
glslc = find_program('glslc', required: get_option('vulkan'))
|
|
|
|
if not vulkan_dep.found() or not has_vulkan_header or not glslc.found()
|
|
if get_option('vulkan').enabled()
|
|
error('GStreamer Vulkan integration required via options, but needed dependencies not found.')
|
|
else
|
|
subdir_done()
|
|
endif
|
|
endif
|
|
|
|
if get_option('vulkan-video').allowed()
|
|
video_test = '''
|
|
#include <vulkan/vulkan.h>
|
|
|
|
#if !(defined(VK_VERSION_1_4) || (defined(VK_VERSION_1_3) && VK_HEADER_VERSION >= 238))
|
|
#error "Need at least Vulkan 1.3.238"
|
|
#endif
|
|
|
|
/* vk_video/vulkan_video_codec_h264std.h */
|
|
static StdVideoH264SequenceParameterSet h264_sps;
|
|
static StdVideoH264PictureParameterSet h264_pps;
|
|
|
|
/* vk_video/vulkan_video_codec_h265std.h */
|
|
static StdVideoH265SequenceParameterSet h265_sps;
|
|
static StdVideoH265PictureParameterSet h265_pps;
|
|
'''
|
|
|
|
if vulkan_inc_dir != ''
|
|
have_vk_video = cc.compiles(video_test, dependencies : vulkan_dep, args: '-I' + vulkan_inc_dir)
|
|
else
|
|
have_vk_video = cc.compiles(video_test, dependencies : vulkan_dep)
|
|
endif
|
|
if have_vk_video
|
|
vulkan_conf.set('GST_VULKAN_HAVE_VIDEO_EXTENSIONS', 1)
|
|
elif get_option('vulkan-video').enabled()
|
|
error('Vulkan Video extensions headers not found')
|
|
endif
|
|
endif
|
|
|
|
gen_sources = []
|
|
|
|
install_headers(vulkan_headers, subdir : 'gstreamer-1.0/gst/vulkan')
|
|
|
|
configure_file(input : 'gstvkconfig.h.meson',
|
|
output : 'gstvkconfig.h',
|
|
install_dir : join_paths(get_option('includedir'), 'gstreamer-1.0/gst/vulkan'),
|
|
configuration : vulkan_conf)
|
|
|
|
glib_mkenums = find_program('glib-mkenums')
|
|
mkenums = find_program('vulkan_mkenum.py')
|
|
vulkan_enumtypes_h = custom_target('gstvulkanenum_h',
|
|
output : 'vulkan-enumtypes.h',
|
|
input : vulkan_headers,
|
|
install : true,
|
|
install_dir : join_paths(get_option('includedir'), 'gstreamer-1.0/gst/vulkan/'),
|
|
command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
|
|
|
|
vulkan_enumtypes_c = custom_target('gstvulkanenum_c',
|
|
output : 'vulkan-enumtypes.c',
|
|
input : vulkan_headers,
|
|
depends : [vulkan_enumtypes_h],
|
|
command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
|
|
gen_sources += [vulkan_enumtypes_h]
|
|
|
|
gstvulkan = library('gstvulkan-' + api_version,
|
|
vulkan_sources, vulkan_priv_sources, vulkan_wayland_sources, vulkan_xcb_sources, vulkan_enumtypes_c, vulkan_enumtypes_h,
|
|
c_args : gst_plugins_bad_args + vulkan_defines + ['-DBUILDING_GST_VULKAN', '-DG_LOG_DOMAIN="GStreamer-Vulkan"'],
|
|
objc_args : gst_plugins_bad_args + vulkan_defines + vulkan_objc_args + ['-DBUILDING_GST_VULKAN', '-DG_LOG_DOMAIN="GStreamer-Vulkan"'],
|
|
include_directories : [configinc, libsinc],
|
|
version : libversion,
|
|
soversion : soversion,
|
|
darwin_versions : osxversion,
|
|
install : true,
|
|
dependencies : [gstbase_dep, gstvideo_dep, vulkan_dep] + optional_deps,
|
|
# don't confuse gst/vulkan/xcb/xcb.h with xcb/xcb.h
|
|
implicit_include_directories : false)
|
|
|
|
library_def = {'lib': gstvulkan}
|
|
pkg_name = 'gstreamer-vulkan-1.0'
|
|
pkgconfig.generate(gstvulkan,
|
|
libraries : [gst_dep, gstbase_dep, gstvideo_dep],
|
|
variables : pkgconfig_variables,
|
|
subdirs : pkgconfig_subdirs,
|
|
name : pkg_name,
|
|
description : 'GStreamer Vulkan support',
|
|
)
|
|
|
|
if build_gir
|
|
extra_gir_includes = []
|
|
gobject_introspection_dep = dependency('gobject-introspection-1.0')
|
|
if gobject_introspection_dep.version().version_compare('>=1.61.1')
|
|
# This is the first version that contains Vulkan-1.0.gir
|
|
extra_gir_includes += ['Vulkan-1.0']
|
|
endif
|
|
|
|
gir = {
|
|
'sources' : vulkan_sources + vulkan_headers + [vulkan_enumtypes_h, vulkan_enumtypes_c],
|
|
'namespace' : 'GstVulkan',
|
|
'nsversion' : api_version,
|
|
'identifier_prefix' : 'Gst',
|
|
'symbol_prefix' : 'gst',
|
|
'export_packages' : pkg_name,
|
|
'includes' : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0'] + extra_gir_includes,
|
|
'install' : true,
|
|
'extra_args' : gir_init_section + ['--c-include=gst/vulkan/vulkan.h'],
|
|
'dependencies' : [gstvideo_dep, gst_dep, gstbase_dep] + optional_deps
|
|
}
|
|
|
|
library_def += {'gir': [gir]}
|
|
if not static_build
|
|
vulkan_gir = gnome.generate_gir(gstvulkan, kwargs: gir)
|
|
library_def += {'gir_targets': library_def.get('gir_targets', []) + [vulkan_gir]}
|
|
gen_sources += vulkan_gir
|
|
endif
|
|
endif
|
|
gst_libraries += [[pkg_name, library_def]]
|
|
|
|
gstvulkan_dep = declare_dependency(link_with : gstvulkan,
|
|
include_directories : [libsinc],
|
|
sources: gen_sources,
|
|
dependencies : [gstvideo_dep, gstbase_dep, vulkan_dep] + optional_deps)
|
|
|
|
meson.override_dependency(pkg_name, gstvulkan_dep)
|
|
|
|
if enabled_vulkan_winsys.contains('xcb')
|
|
install_headers(vulkan_xcb_headers, subdir : 'gstreamer-1.0/gst/vulkan/xcb')
|
|
pkgconfig.generate(
|
|
libraries : [gstvulkan],
|
|
requires : ['xcb'],
|
|
subdirs : pkgconfig_subdirs,
|
|
name : 'gstreamer-vulkan-xcb-1.0',
|
|
description : 'GStreamer Vulkan support (XCB Specifics)',
|
|
)
|
|
vulkan_xcb_gir = []
|
|
if build_gir
|
|
gir = {
|
|
'sources' : vulkan_xcb_sources + vulkan_xcb_headers,
|
|
'namespace' : 'GstVulkanXCB',
|
|
'nsversion' : api_version,
|
|
'identifier_prefix' : 'Gst',
|
|
'symbol_prefix' : 'gst',
|
|
'export_packages' : 'gstreamer-vulkan-xcb-1.0',
|
|
'install' : true,
|
|
'extra_args' : gir_init_section + ['--c-include=gst/vulkan/xcb/xcb.h'],
|
|
'dependencies' : [gstvideo_dep, gst_dep, gstbase_dep] + optional_deps
|
|
}
|
|
|
|
if not static_build
|
|
gir += {'includes' : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', vulkan_gir[0]] + extra_gir_includes}
|
|
vulkan_xcb_gir = gnome.generate_gir(gstvulkan, kwargs: gir)
|
|
library_def += {'gir_targets': library_def.get('gir_targets', []) + [vulkan_xcb_gir]}
|
|
endif
|
|
|
|
gir += {'includes' :['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', 'GstVulkan-1.0'] + extra_gir_includes}
|
|
library_def += {'gir': library_def['gir'] + [gir]}
|
|
endif
|
|
gstvulkanxcb_dep = declare_dependency(dependencies : [gstvulkan_dep],
|
|
sources : vulkan_xcb_gir)
|
|
meson.override_dependency('gstreamer-vulkan-xcb-1.0', gstvulkanxcb_dep)
|
|
endif
|
|
|
|
if enabled_vulkan_winsys.contains('wayland')
|
|
install_headers(vulkan_wayland_headers, subdir : 'gstreamer-1.0/gst/vulkan/wayland')
|
|
pkgconfig.generate(
|
|
libraries : [gstvulkan],
|
|
requires : ['wayland-client'],
|
|
subdirs : pkgconfig_subdirs,
|
|
name : 'gstreamer-vulkan-wayland-1.0',
|
|
description : 'GStreamer Vulkan support (Wayland Specifics)',
|
|
)
|
|
vulkan_wayland_gir = []
|
|
if build_gir
|
|
gir = {
|
|
'sources' : vulkan_wayland_sources + vulkan_wayland_headers,
|
|
'namespace' : 'GstVulkanWayland',
|
|
'nsversion' : api_version,
|
|
'identifier_prefix' : 'Gst',
|
|
'symbol_prefix' : 'gst',
|
|
'export_packages' : 'gstreamer-vulkan-wayland-1.0',
|
|
'install' : true,
|
|
'extra_args' : gir_init_section + ['--c-include=gst/vulkan/wayland/wayland.h'],
|
|
'dependencies' : [gstvideo_dep, gst_dep, gstbase_dep] + optional_deps
|
|
}
|
|
if not static_build
|
|
gir += {'includes' : ['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', vulkan_gir[0]] + extra_gir_includes}
|
|
vulkan_wayland_gir += gnome.generate_gir(gstvulkan, kwargs: gir)
|
|
library_def += {'gir_targets': library_def.get('gir_targets', []) + [vulkan_wayland_gir]}
|
|
endif
|
|
gir += {'includes' :['Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', 'GstVulkan-1.0'] + extra_gir_includes}
|
|
library_def += {'gir': library_def['gir'] + [gir]}
|
|
endif
|
|
gstvulkanwayland_dep = declare_dependency(dependencies : [gstvulkan_dep],
|
|
sources : vulkan_wayland_gir)
|
|
meson.override_dependency('gstreamer-vulkan-wayland-1.0', gstvulkanwayland_dep)
|
|
endif
|
|
|