24 if get_option('vulkan').disabled()
28 if host_system == 'ios'
29 vulkan_dep = cc.find_library('MoltenVK', required : get_option('vulkan'))
31 vulkan_dep = cc.find_library('vulkan', required : get_option('vulkan'))
33 has_vulkan_header = cc.has_header('vulkan/vulkan.h')
34 if not has_vulkan_header and get_option('vulkan').enabled()
35 error('vulkan plugin enabled, but vulkan.h not found')
38 if vulkan_dep.found() and has_vulkan_header
39 have_vulkan_windowing = false
41 vkconf = configuration_data()
43 xcb_dep = dependency('xcb', version : '>=1.10', required : get_option('x11'))
46 'xcb/vkdisplay_xcb.c',
48 'xcb/xcb_event_source.c',
51 optional_deps += xcb_dep
52 have_vulkan_windowing = true
53 vkconf.set10('GST_VULKAN_HAVE_WINDOW_XCB', 1)
56 wayland_client_dep = dependency('wayland-client', version : '>=1.4', required : get_option('wayland'))
57 if wayland_client_dep.found()
59 'wayland/vkdisplay_wayland.c',
60 'wayland/vkwindow_wayland.c',
61 'wayland/wayland_event_source.c',
64 optional_deps += wayland_client_dep
65 have_vulkan_windowing = true
66 vkconf.set10('GST_VULKAN_HAVE_WINDOW_WAYLAND', 1)
69 if ['darwin', 'ios'].contains(host_system)
70 objc = meson.get_compiler('objc')
71 if not objc.has_argument('-fobjc-arc')
72 error('ARC is required for building')
75 vulkan_objc_args += ['-fobjc-arc']
77 foundation_dep = dependency('appleframeworks', modules : ['Foundation'], required : get_option('vulkan'))
78 quartzcore_dep = dependency('appleframeworks', modules : ['QuartzCore'], required : get_option('vulkan'))
79 corefoundation_dep = dependency('appleframeworks', modules : ['CoreFoundation'], required : get_option('vulkan'))
80 if foundation_dep.found() and quartzcore_dep.found() and corefoundation_dep.found()
81 optional_deps += [foundation_dep, corefoundation_dep, quartzcore_dep]
85 if host_system == 'darwin'
86 cocoa_dep = dependency('appleframeworks', modules : ['Cocoa'], required : get_option('vulkan'))
90 'cocoa/vkdisplay_cocoa.m',
91 'cocoa/vkwindow_cocoa.m',
93 optional_deps += [cocoa_dep]
94 have_vulkan_windowing = true
95 vkconf.set10('GST_VULKAN_HAVE_WINDOW_COCOA', 1)
99 if host_system == 'ios'
100 uikit_dep = dependency('appleframeworks', modules : ['UIKit'], required : get_option('vulkan'))
104 'ios/vkdisplay_ios.m',
105 'ios/vkwindow_ios.m',
107 optional_deps += [uikit_dep]
108 have_vulkan_windowing = true
109 vkconf.set10('GST_VULKAN_HAVE_WINDOW_IOS', 1)
113 if have_vulkan_windowing
114 configure_file(input : 'vkconfig.h.meson',
115 output : 'vkconfig.h',
116 configuration : vkconf)
118 gstvulkan = library('gstvulkan',
120 c_args : gst_plugins_bad_args + vulkan_defines,
121 objc_args : gst_plugins_bad_args + vulkan_defines + vulkan_objc_args,
122 link_args : noseh_link_args,
123 include_directories : [configinc],
124 dependencies : [gstvideo_dep, gstbase_dep, vulkan_dep] + optional_deps,
126 install_dir : plugins_install_dir,
128 pkgconfig.generate(gstvulkan, install_dir : plugins_pkgconfig_install_dir)