summaryrefslogtreecommitdiffstats
path: root/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build81
1 files changed, 72 insertions, 9 deletions
diff --git a/meson.build b/meson.build
index a8bcaf7621b..92b875b1a10 100644
--- a/meson.build
+++ b/meson.build
@@ -130,16 +130,20 @@ endif
# TODO: other OSes
with_dri_platform = 'drm'
-# TODO: there are more platforms required for non-vulkan drivers
+# TODO: android platform
with_platform_wayland = false
with_platform_x11 = false
with_platform_drm = false
+with_platform_surfaceless = false
+egl_native_platform = ''
_platforms = get_option('platforms')
if _platforms != ''
_split = _platforms.split(',')
with_platform_x11 = _split.contains('x11')
with_platform_wayland = _split.contains('wayland')
with_platform_drm = _split.contains('drm')
+ with_platform_surfaceless = _split.contains('surfaceless')
+ egl_native_platform = _split[0]
endif
with_gbm = get_option('gbm')
@@ -154,6 +158,27 @@ else
with_gbm = false
endif
+_egl = get_option('egl')
+if _egl == 'auto'
+ with_egl = with_dri and with_shared_glapi and egl_native_platform != ''
+elif _egl == 'yes'
+ if not with_dri
+ error('EGL requires dri')
+ elif not with_shared_glapi
+ error('EGL requires shared-glapi')
+ elif egl_native_platform == ''
+ error('No platforms specified, consider -Dplatforms=drm,x11 at least')
+ endif
+ with_egl = true
+else
+ with_egl = false
+endif
+
+# TODO: or virgl
+if with_egl and with_gallium_radeonsi and not (with_platform_drm or with_platform_surfaceless)
+ error('RadeonSI requires drm or surfaceless platform when using EGL')
+endif
+
pre_args += '-DGLX_USE_TLS'
with_glx = get_option('glx')
if with_glx != 'disabled'
@@ -228,7 +253,7 @@ if with_any_vk and (with_platform_x11 and not with_dri3)
error('Vulkan drivers require dri3 for X11 support')
endif
if with_dri or with_gallium
- if with_glx == 'disabled' # TODO: or egl
+ if with_glx == 'disabled' and not with_egl
error('building dri or gallium drivers require at least one window system')
endif
endif
@@ -250,6 +275,7 @@ if _drivers != ''
with_gallium_omx or with_gallium_va)
endif
+gl_pkgconfig_c_flags = []
if with_platform_x11
if with_any_vk or (with_glx == 'dri' and with_dri_platform == 'drm')
pre_args += '-DHAVE_X11_PLATFORM'
@@ -269,6 +295,18 @@ if with_platform_x11
pre_args += '-DGLX_USE_DRM'
endif
endif
+else
+ pre_args += '-DMESA_EGL_NO_X11_HEADERS'
+ gl_pkgconfig_c_flags += '-DMESA_EGL_NO_X11_HEADERS'
+endif
+if with_platform_drm
+ if with_egl and not with_gbm
+ error('EGL drm platform requires gbm')
+ endif
+ pre_args += '-DHAVE_DRM_PLATFORM'
+endif
+if with_platform_surfaceless
+ pre_args += '-DHAVE_SURFACELESS_PLATFORM'
endif
prog_python2 = find_program('python2')
@@ -646,18 +684,22 @@ endif
# TODO: symbol mangling
-# TODO: egl configuration
-
if with_platform_wayland
prog_wl_scanner = find_program('wayland-scanner')
dep_wl_protocols = dependency('wayland-protocols', version : '>= 1.8')
dep_wayland_client = dependency('wayland-client', version : '>=1.11')
dep_wayland_server = dependency('wayland-server', version : '>=1.11')
+ wayland_dmabuf_xml = join_paths(
+ dep_wl_protocols.get_pkgconfig_variable('pkgdatadir'), 'unstable',
+ 'linux-dmabuf', 'linux-dmabuf-unstable-v1.xml'
+ )
+ pre_args += ['-DHAVE_WAYLAND_PLATFORM', '-DWL_HIDE_DEPRECATED']
else
prog_wl_scanner = []
dep_wl_protocols = []
dep_wayland_client = []
dep_wayland_server = []
+ wayland_dmabuf_xml = ''
endif
dep_x11 = []
@@ -674,6 +716,7 @@ dep_xf86vm = []
dep_xcb_dri3 = []
dep_xcb_present = []
dep_xcb_sync = []
+dep_xcb_xfixes = []
dep_xshmfence = []
if with_platform_x11
if with_glx == 'dri' and with_dri_platform == 'drm'
@@ -701,21 +744,19 @@ if with_platform_x11
dep_dri2proto = dependency('dri2proto', version : '>= 2.8')
dep_glproto = dependency('glproto', version : '>= 1.4.14')
endif
+ if with_egl
+ dep_xcb_xfixes = dependency('xcb-xfixes')
+ endif
endif
-# TODO: platforms for !vulkan
-
# TODO: osmesa
-# TODO: egl
-
# TODO: vallium G3DVL
# TODO: nine
# TODO: clover
-# TODO: egl sans x11
# TODO: gallium tests
# TODO: various libdirs
@@ -744,6 +785,28 @@ endforeach
inc_include = include_directories('include')
+gl_priv_reqs = [
+ 'x11', 'xext', 'xdamage >= 1.1', 'xfixes', 'x11-xcb', 'xcb',
+ 'xcb-glx >= 1.8.1', 'libdrm >= 2.4.75',
+]
+if dep_xf86vm != [] and dep_xf86vm.found()
+ gl_priv_reqs += 'xf86vm'
+endif
+if with_dri_platform == 'drm'
+ gl_priv_reqs += 'xcb-dri2 >= 1.8'
+endif
+
+gl_priv_libs = []
+if dep_thread.found()
+ gl_priv_libs += ['-lpthread', '-pthread']
+endif
+if dep_m.found()
+ gl_priv_libs += '-lm'
+endif
+if dep_dl.found()
+ gl_priv_libs += '-ldl'
+endif
+
pkg = import('pkgconfig')
subdir('include')