X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=meson.build;h=3e8ea7d17e06e9ededb0a7b045e06f63ac169dee;hb=66ce6ce78f4eeb0a103e35b6c819e7269b4bd3e1;hp=ddc4a44eb6feb36c9f4e446b15f07fa71387c587;hpb=0c49aa0624c289164b5501a8724b6d9fdbae7f49;p=mesa.git diff --git a/meson.build b/meson.build index ddc4a44eb6f..3e8ea7d17e0 100644 --- a/meson.build +++ b/meson.build @@ -361,21 +361,221 @@ if with_dri or with_gallium endif endif -with_gallium_xvmc = false -with_gallium_vdpau = false -with_gallium_omx = false # this is bellagio -with_gallium_va = false -with_gallium_media = false +dep_vdpau = [] +_vdpau = get_option('gallium-vdpau') +if _vdpau == 'auto' + if not ['linux', 'bsd'].contains(host_machine.system()) + with_gallium_vdpau = false + elif not with_platform_x11 + with_gallium_vdpau = false + elif not (with_gallium_r300 or with_gallium_r600 or with_gallium_radeonsi or + with_gallium_nouveau) + with_gallium_vdpau = false + else + dep_vdpau = dependency('vdpau', version : '>= 1.1', required : false) + with_gallium_vdpau = dep_vdpau.found() + endif +elif _vdpau == 'true' + if not ['linux', 'bsd'].contains(host_machine.system()) + error('VDPAU state tracker can only be build on unix-like OSes.') + elif not with_platform_x11 + error('VDPAU state tracker requires X11 support.') + with_gallium_vdpau = false + elif not (with_gallium_r300 or with_gallium_r600 or with_gallium_radeonsi or + with_gallium_nouveau) + error('VDPAU state tracker requires at least one of the following gallium drivers: r300, r600, radeonsi, nouveau.') + endif + dep_vdpau = dependency('vdpau', version : '>= 1.1') + with_gallium_vdpau = true +else + with_gallium_vdpau = false +endif +if with_gallium_vdpau + dep_vdpau = declare_dependency( + compile_args : dep_vdpau.get_pkgconfig_variable('cflags').split() + ) +endif + +if with_gallium_vdpau + pre_args += '-DHAVE_ST_VDPAU' +endif +vdpau_drivers_path = get_option('vdpau-libs-path') +if vdpau_drivers_path == '' + vdpau_drivers_path = join_paths(get_option('libdir'), 'vdpau') +endif + +dep_xvmc = [] +_xvmc = get_option('gallium-xvmc') +if _xvmc == 'auto' + if not ['linux', 'bsd'].contains(host_machine.system()) + with_gallium_xvmc = false + elif not with_platform_x11 + with_gallium_xvmc = false + elif not (with_gallium_r600 or with_gallium_nouveau) + with_gallium_xvmc = false + else + dep_xvmc = dependency('xvmc', version : '>= 1.0.6', required : false) + with_gallium_xvmc = dep_xvmc.found() + endif +elif _xvmc == 'true' + if not ['linux', 'bsd'].contains(host_machine.system()) + error('XVMC state tracker can only be build on unix-like OSes.') + elif not with_platform_x11 + error('XVMC state tracker requires X11 support.') + with_gallium_xvmc = false + elif not (with_gallium_r600 or with_gallium_nouveau) + error('XVMC state tracker requires at least one of the following gallium drivers: r600, nouveau.') + endif + dep_xvmc = dependency('xvmc', version : '>= 1.0.6') + with_gallium_xvmc = true +else + with_gallium_xvmc = false +endif +if with_gallium_xvmc + dep_xvmc = declare_dependency( + compile_args : dep_xvmc.get_pkgconfig_variable('cflags').split() + ) +endif + +xvmc_drivers_path = get_option('xvmc-libs-path') +if xvmc_drivers_path == '' + xvmc_drivers_path = get_option('libdir') +endif + +dep_omx = [] +_omx = get_option('gallium-omx') +if _omx == 'auto' + if not ['linux', 'bsd'].contains(host_machine.system()) + with_gallium_omx = false + elif not with_platform_x11 + with_gallium_omx = false + elif not (with_gallium_r600 or with_gallium_radeonsi or with_gallium_nouveau) + with_gallium_omx = false + else + dep_omx = dependency('libomxil-bellagio', required : false) + with_gallium_omx = dep_omx.found() + endif +elif _omx == 'true' + if not ['linux', 'bsd'].contains(host_machine.system()) + error('OMX state tracker can only be built on unix-like OSes.') + elif not (with_platform_x11 or with_platform_drm) + error('OMX state tracker requires X11 or drm platform support.') + with_gallium_omx = false + elif not (with_gallium_r600 or with_gallium_radeonsi or with_gallium_nouveau) + error('OMX state tracker requires at least one of the following gallium drivers: r600, radeonsi, nouveau.') + endif + dep_omx = dependency('libomxil-bellagio') + with_gallium_omx = true +else + with_gallium_omx = false +endif + +omx_drivers_path = get_option('omx-libs-path') +if with_gallium_omx + # Figure out where to put the omx driver. + # FIXME: this could all be vastly simplified by adding a 'defined_variable' + # argument to meson's get_pkgconfig_variable method. + if omx_drivers_path == '' + _omx_libdir = dep_omx.get_pkgconfig_variable('libdir') + _omx_drivers_dir = dep_omx.get_pkgconfig_variable('pluginsdir') + if _omx_libdir == get_option('libdir') + omx_drivers_path = _omx_drivers_dir + else + _omx_base_dir = [] + # This will fail on windows. Does OMX run on windows? + _omx_libdir = _omx_libdir.split('/') + _omx_drivers_dir = _omx_drivers_dir.split('/') + foreach o : _omx_drivers_dir + if not _omx_libdir.contains(o) + _omx_base_dir += o + endif + endforeach + omx_drivers_path = join_paths(get_option('libdir'), _omx_base_dir) + endif + endif +endif +if with_gallium_omx + dep_omx = declare_dependency( + compile_args : dep_omx.get_pkgconfig_variable('cflags').split() + ) +endif + dep_va = [] -_drivers = get_option('gallium-media') -if _drivers != '' - _split = _drivers.split(',') - with_gallium_xvmc = _split.contains('xvmc') - with_gallium_vdpau = _split.contains('vdpau') - with_gallium_omx = _split.contains('omx') - with_gallium_va = _split.contains('va') - with_gallium_media = (with_gallium_xvmc or with_gallium_vdpau or - with_gallium_omx or with_gallium_va) +_va = get_option('gallium-va') +if _va == 'auto' + if not ['linux', 'bsd'].contains(host_machine.system()) + with_gallium_va = false + elif not with_platform_x11 + with_gallium_va = false + elif not (with_gallium_r600 or with_gallium_radeonsi or with_gallium_nouveau) + with_gallium_va = false + else + dep_va = dependency('libva', version : '>= 0.38.0', required : false) + with_gallium_va = dep_va.found() + endif +elif _va == 'true' + if not ['linux', 'bsd'].contains(host_machine.system()) + error('VA state tracker can only be built on unix-like OSes.') + elif not (with_platform_x11 or with_platform_drm) + error('VA state tracker requires X11 or drm or wayland platform support.') + with_gallium_va = false + elif not (with_gallium_r600 or with_gallium_radeonsi or with_gallium_nouveau) + error('VA state tracker requires at least one of the following gallium drivers: r600, radeonsi, nouveau.') + endif + dep_va = dependency('libva', version : '>= 0.38.0') + with_gallium_va = true +else + with_gallium_va = false +endif +if with_gallium_va + dep_va = declare_dependency( + compile_args : dep_va.get_pkgconfig_variable('cflags').split() + ) +endif + +va_drivers_path = get_option('va-libs-path') +if va_drivers_path == '' + va_drivers_path = join_paths(get_option('libdir'), 'dri') +endif + +_xa = get_option('gallium-xa') +if _xa == 'auto' + if not ['linux', 'bsd'].contains(host_machine.system()) + with_gallium_xa = false + elif not (with_gallium_nouveau or with_gallium_freedreno or with_gallium_i915 + or with_gallium_svga) + with_gallium_xa = false + else + with_gallium_xa = true + endif +elif _xa == 'true' + if not ['linux', 'bsd'].contains(host_machine.system()) + error('XA state tracker can only be built on unix-like OSes.') + elif not (with_gallium_nouveau or with_gallium_freedreno or with_gallium_i915 + or with_gallium_svga) + error('XA state tracker requires at least one of the following gallium drivers: nouveau, freedreno, i915, svga.') + endif + with_gallium_xa = true +else + with_gallium_xa = false +endif + +d3d_drivers_path = get_option('d3d-drivers-path') +if d3d_drivers_path == '' + d3d_drivers_path = join_paths(get_option('libdir'), 'd3d') +endif + +with_gallium_st_nine = get_option('gallium-nine') +if with_gallium_st_nine + if not with_gallium_softpipe + error('The nine state tracker requires gallium softpipe/llvmpipe.') + elif not (with_gallium_radeonsi or with_gallium_nouveau or with_gallium_r600 + or with_gallium_r300 or with_gallium_svga or with_gallium_i915) + error('The nine state tracker requires at least on non-swrast gallium driver.') + endif + if not with_dri3 + error('Using nine with wine requires dri3') + endif endif gl_pkgconfig_c_flags = [] @@ -907,7 +1107,9 @@ if with_platform_x11 dep_xcb_glx = dependency('xcb-glx', version : '>= 1.8.1') dep_xxf86vm = dependency('xxf86vm', required : false) endif - if with_any_vk or with_glx == 'dri' + if with_any_vk or with_glx == 'dri' or + (with_gallium_vdpau or with_gallium_xvmc or with_gallium_omx or + with_gallium_xa) dep_xcb = dependency('xcb') dep_x11_xcb = dependency('x11-xcb') endif @@ -947,9 +1149,6 @@ else dep_lmsensors = [] endif - -# TODO: nine - # TODO: clover # TODO: gallium tests