diff options
author | Jussi Kukkonen <jussi.kukkonen@intel.com> | 2017-08-28 15:46:35 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-08-30 11:14:26 +0100 |
commit | d935a1a3f0c11d180b3080801fa836b3ad12651f (patch) | |
tree | 30b7a3344e83cc1652617815c5f148f13cc1d69f /meta/recipes-graphics/mesa/mesa.inc | |
parent | f9c451b71ad0093b4c2abedf7f3d714c5a3af5a5 (diff) | |
download | poky-d935a1a3f0c11d180b3080801fa836b3ad12651f.tar.gz |
mesa: Support building without opengl
mesa can build certain things without opengl: most importantly vulkan
drivers.
Add comments on the dependencies between the packageconfigs. Also add
a few dependencies to packageconfigs. Modify default packageconfig to
do the reasonable thing based on distro features.
Add a backported patch to fix the build with --disable-opengl. Fix
do_install_append() so it works even if dri drivers are not built.
(From OE-Core rev: 48d39cf43b59c96d4deca783ec66686f5c8cd3e7)
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-graphics/mesa/mesa.inc')
-rw-r--r-- | meta/recipes-graphics/mesa/mesa.inc | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc index 3bb3cf401f..4f31ed255c 100644 --- a/meta/recipes-graphics/mesa/mesa.inc +++ b/meta/recipes-graphics/mesa/mesa.inc | |||
@@ -20,7 +20,7 @@ PROVIDES = "virtual/libgl virtual/libgles1 virtual/libgles2 virtual/egl virtual/ | |||
20 | 20 | ||
21 | inherit autotools pkgconfig gettext distro_features_check | 21 | inherit autotools pkgconfig gettext distro_features_check |
22 | 22 | ||
23 | REQUIRED_DISTRO_FEATURES = "opengl" | 23 | ANY_OF_DISTRO_FEATURES = "opengl vulkan" |
24 | 24 | ||
25 | PLATFORMS ??= "${@bb.utils.filter('PACKAGECONFIG', 'x11 wayland', d)} \ | 25 | PLATFORMS ??= "${@bb.utils.filter('PACKAGECONFIG', 'x11 wayland', d)} \ |
26 | ${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'drm', '', d)}" | 26 | ${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'drm', '', d)}" |
@@ -32,20 +32,25 @@ EXTRA_OECONF = "--enable-shared-glapi \ | |||
32 | --with-llvm-prefix=${STAGING_LIBDIR}/llvm${MESA_LLVM_RELEASE} \ | 32 | --with-llvm-prefix=${STAGING_LIBDIR}/llvm${MESA_LLVM_RELEASE} \ |
33 | --with-platforms='${PLATFORMS}'" | 33 | --with-platforms='${PLATFORMS}'" |
34 | 34 | ||
35 | PACKAGECONFIG ??= "gbm egl gles dri \ | 35 | PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland vulkan', d)} \ |
36 | ${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11 vulkan', d)} \ | 36 | ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl egl gles gbm dri', '', d)} \ |
37 | ${@bb.utils.contains('DISTRO_FEATURES', 'x11 vulkan', 'dri3', '', d)} \ | 37 | ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'x11', '', d)} \ |
38 | " | 38 | ${@bb.utils.contains('DISTRO_FEATURES', 'x11 vulkan', 'dri3', '', d)} \ |
39 | " | ||
40 | |||
41 | # "gbm" requires "dri", "opengl" | ||
39 | PACKAGECONFIG[gbm] = "--enable-gbm,--disable-gbm" | 42 | PACKAGECONFIG[gbm] = "--enable-gbm,--disable-gbm" |
40 | 43 | ||
41 | X11_DEPS = "xf86driproto glproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes" | 44 | X11_DEPS = "xf86driproto glproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes" |
45 | # "x11" requires "opengl" | ||
42 | PACKAGECONFIG[x11] = "--enable-glx-tls,--disable-glx,${X11_DEPS}" | 46 | PACKAGECONFIG[x11] = "--enable-glx-tls,--disable-glx,${X11_DEPS}" |
43 | PACKAGECONFIG[xvmc] = "--enable-xvmc,--disable-xvmc,libxvmc" | 47 | PACKAGECONFIG[xvmc] = "--enable-xvmc,--disable-xvmc,libxvmc" |
44 | PACKAGECONFIG[wayland] = ",,wayland-native wayland" | 48 | PACKAGECONFIG[wayland] = ",,wayland-native wayland libdrm" |
45 | 49 | ||
46 | DRIDRIVERS = "swrast" | 50 | DRIDRIVERS = "swrast" |
47 | DRIDRIVERS_append_x86 = ",radeon,r200,nouveau,i965,i915" | 51 | DRIDRIVERS_append_x86 = ",radeon,r200,nouveau,i965,i915" |
48 | DRIDRIVERS_append_x86-64 = ",radeon,r200,nouveau,i965,i915" | 52 | DRIDRIVERS_append_x86-64 = ",radeon,r200,nouveau,i965,i915" |
53 | # "dri" requires "opengl" | ||
49 | PACKAGECONFIG[dri] = "--enable-dri --with-dri-drivers=${DRIDRIVERS}, --disable-dri, dri2proto libdrm" | 54 | PACKAGECONFIG[dri] = "--enable-dri --with-dri-drivers=${DRIDRIVERS}, --disable-dri, dri2proto libdrm" |
50 | PACKAGECONFIG[dri3] = "--enable-dri3, --disable-dri3, dri3proto presentproto libxshmfence" | 55 | PACKAGECONFIG[dri3] = "--enable-dri3, --disable-dri3, dri3proto presentproto libxshmfence" |
51 | 56 | ||
@@ -56,8 +61,12 @@ VULKAN_DRIVERS_append_x86 = ",intel" | |||
56 | VULKAN_DRIVERS_append_x86-64 = ",intel" | 61 | VULKAN_DRIVERS_append_x86-64 = ",intel" |
57 | PACKAGECONFIG[vulkan] = "--with-vulkan-drivers=${VULKAN_DRIVERS}, --without-vulkan-drivers" | 62 | PACKAGECONFIG[vulkan] = "--with-vulkan-drivers=${VULKAN_DRIVERS}, --without-vulkan-drivers" |
58 | 63 | ||
64 | PACKAGECONFIG[opengl] = "--enable-opengl, --disable-opengl" | ||
65 | |||
66 | # "gles" requires "opengl" | ||
59 | PACKAGECONFIG[gles] = "--enable-gles1 --enable-gles2, --disable-gles1 --disable-gles2" | 67 | PACKAGECONFIG[gles] = "--enable-gles1 --enable-gles2, --disable-gles1 --disable-gles2" |
60 | 68 | ||
69 | # "egl" requires "dri", "opengl" | ||
61 | PACKAGECONFIG[egl] = "--enable-egl, --disable-egl" | 70 | PACKAGECONFIG[egl] = "--enable-egl, --disable-egl" |
62 | 71 | ||
63 | PACKAGECONFIG[etnaviv] = "" | 72 | PACKAGECONFIG[etnaviv] = "" |
@@ -121,7 +130,7 @@ do_install_append () { | |||
121 | 130 | ||
122 | # it was packaged in libdricore9.1.3-1 and preventing upgrades when debian.bbclass was used | 131 | # it was packaged in libdricore9.1.3-1 and preventing upgrades when debian.bbclass was used |
123 | rm -f ${D}${sysconfdir}/drirc | 132 | rm -f ${D}${sysconfdir}/drirc |
124 | chrpath --delete ${D}${libdir}/dri/*_dri.so | 133 | chrpath --delete ${D}${libdir}/dri/*_dri.so || true |
125 | } | 134 | } |
126 | 135 | ||
127 | # For the packages that make up the OpenGL interfaces, inject variables so that | 136 | # For the packages that make up the OpenGL interfaces, inject variables so that |