From f537ce2ad11188f4439783ed903f33f679eade2d Mon Sep 17 00:00:00 2001 From: Emmanuel Vadot Date: Sat, 6 Jun 2020 10:52:00 +0200 Subject: [PATCH] mesa*: Add platforms option Mesa support different platforms, add some options that control which one we are enabling and build the -Dplatform meson arg based on that. Keep the WAYLAND option for now but if you're using it switch to the newly created PLATFORM_WAYLAND. Signed-off-by: Emmanuel Vadot --- graphics/mesa-dri/Makefile | 31 ++++++++++++++++++++++++++----- graphics/mesa-libs/Makefile | 29 ++++++++++++++++++++++++++--- 2 files changed, 52 insertions(+), 8 deletions(-) diff --git a/graphics/mesa-dri/Makefile b/graphics/mesa-dri/Makefile index be65e261cfe0..57719d24ea03 100644 --- a/graphics/mesa-dri/Makefile +++ b/graphics/mesa-dri/Makefile @@ -1,114 +1,135 @@ # Created by: Eric Anholt # $FreeBSD$ PORTNAME= mesa-dri PORTVERSION= ${MESAVERSION} PORTREVISION= 2 CATEGORIES= graphics COMMENT= OpenGL hardware acceleration drivers for DRI2+ USES= xorg USE_XORG= xorgproto x11 xdamage xext xfixes xshmfence xv xvmc +OPTIONS_GROUP= PLATFORM +OPTIONS_GROUP_PLATFORM= PLATFORM_X11 PLATFORM_WAYLAND PLATFORM_DRM PLATFORM_SURFACELESS +PLATFORM_X11_DESC= Enable X11 support for GBM/EGL +PLATFORM_WAYLAND_DESC= Enable Wayland support for GBM/EGL +PLATFORM_DRM_DESC= Enable DRM support for GBM/EGL +PLATFORM_SURFACELESS_DESC= Enable Surfaceless support for GBM/EGL +PLATFORM_WAYLAND_IMPLIES= WAYLAND + OPTIONS_DEFINE= VAAPI VDPAU WAYLAND -OPTIONS_DEFAULT=WAYLAND +OPTIONS_DEFAULT=WAYLAND PLATFORM_X11 PLATFORM_WAYLAND PLATFORM_DRM PLATFORM_SURFACELESS OPTIONS_SUB= yes VAAPI_MESON_ON= -Dgallium-va=true VAAPI_LIB_DEPENDS= libva.so:multimedia/libva VAAPI_USE= XORG=xcb VDPAU_MESON_ON= -Dgallium-vdpau=true VDPAU_LIB_DEPENDS= libvdpau.so:multimedia/libvdpau WAYLAND_DESC= Enable support for the Wayland platform in Vulkan drivers WAYLAND_BUILD_DEPENDS= wayland-protocols>=1.8:graphics/wayland-protocols WAYLAND_LIB_DEPENDS= libwayland-client.so:graphics/wayland +WAYLAND_IMPLIES= PLATFORM_WAYLAND .include .include "${.CURDIR:H:H}/graphics/mesa-dri/Makefile.common" ALL_DRI_DRIVERS= I915 I965 R100 R200 SWRAST ALL_GALLIUM_DRIVERS= R300 R600 RADEONSI SVGA SWRAST ALL_VULKAN_DRIVERS= INTEL AMD .if ${ARCH} == aarch64 || ${ARCH} == amd64 || ${ARCH:Marm*} || ${ARCH} == i386 || ${ARCH:Mmips*} || ${ARCH:Mpowerpc*} GALLIUM_DRIVERS= SWRAST # llvmpipe .else GALLIUM_DRIVERS= "" .endif VULKAN_DRIVERS= # .if ${ARCH} == aarch64 || ${ARCH} == amd64 || ${ARCH} == i386 \ || ${ARCH} == powerpc || ${ARCH} == powerpc64 DRI_DRIVERS+= R100 R200 GALLIUM_DRIVERS+= R300 R600 RADEONSI VULKAN_DRIVERS+= AMD MESON_ARGS+= -Dgallium-xvmc=true .endif .if ${ARCH} == amd64 || ${ARCH} == i386 DRI_DRIVERS+= I915 I965 GALLIUM_DRIVERS+= SVGA . if ${OPSYS} == FreeBSD EXTRA_PATCHES+= ${PATCHDIR}/extra-src_mesa_drivers_dri_i965_intel__screen.c . endif VULKAN_DRIVERS+= INTEL .endif .if ${VULKAN_DRIVERS} BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}mako>0:textproc/py-mako@${PY_FLAVOR} USE_XORG+= xcb xrandr .endif LDFLAGS_i386= -Wl,-znotext -# enables VK_KHR_wayland_surface in Vulkan drivers -.if ${PORT_OPTIONS:MWAYLAND} && !empty(VULKAN_DRIVERS) -MESON_ARGS+= -Dplatforms=x11,surfaceless,drm,wayland +.if ${PORT_OPTIONS:MPLATFORM_X11} +MESA_PLATFORMS+= x11 +.endif + +.if ${PORT_OPTIONS:MPLATFORM_DRM} +MESA_PLATFORMS+= drm .endif +.if ${PORT_OPTIONS:MPLATFORM_SURFACELESS} +MESA_PLATFORMS+= surfaceless +.endif + +# .if ${PORT_OPTIONS:MPLATFORM_WAYLAND} && !${PORT_OPTIONS:MWAYLAND} +# .error "Platform Wayland is selected but Wayland support is disabled" +# .endif + MESON_ARGS+= -Ddri-drivers="${DRI_DRIVERS:ts,:tl}" \ -Dgallium-drivers="${GALLIUM_DRIVERS:ts,:tl}" \ - -Dvulkan-drivers="${VULKAN_DRIVERS:ts,:tl}" + -Dvulkan-drivers="${VULKAN_DRIVERS:ts,:tl}" \ + -Dplatforms="${MESA_PLATFORMS:ts,:tl}" # Disable some options MESON_ARGS+= -Dgallium-xa=false \ -Dgles1=false \ -Dgles2=false \ -Dglx=disabled \ -Degl=false \ -Dosmesa=none \ -Dtools="" .for _d in ${ALL_DRI_DRIVERS} . if ${DRI_DRIVERS:M${_d}} PLIST_SUB+= ${_d}_DRIVER="" . else PLIST_SUB+= ${_d}_DRIVER="@comment " . endif .endfor .for _gd in ${ALL_GALLIUM_DRIVERS} . if ${GALLIUM_DRIVERS:M${_gd}} PLIST_SUB+= ${_gd}_GDRIVER="" . else PLIST_SUB+= ${_gd}_GDRIVER="@comment " . endif .endfor PLIST_SUB += ARCH=${ARCH:S/amd/x86_/} .for _vd in ${ALL_VULKAN_DRIVERS} . if ${VULKAN_DRIVERS:M${_vd}} PLIST_SUB+= ${_vd}_VDRIVER="" . else PLIST_SUB+= ${_vd}_VDRIVER="@comment " . endif .endfor .include "${MASTERDIR}/Makefile.targets" post-install: @${RM} -r ${STAGEDIR}/etc/OpenCL .include diff --git a/graphics/mesa-libs/Makefile b/graphics/mesa-libs/Makefile index e6fec368cead..01b9bab50191 100644 --- a/graphics/mesa-libs/Makefile +++ b/graphics/mesa-libs/Makefile @@ -1,56 +1,79 @@ # Created by: Eric Anholt # $FreeBSD$ PORTNAME= mesa-libs PORTVERSION= ${MESAVERSION} CATEGORIES= graphics COMMENT= OpenGL libraries that support GLX and EGL clients CONFLICTS_INSTALL= libglvnd # include/GL/gl.h USES= xorg USE_XORG= xorgproto x11 xcb xdamage xext \ xfixes xshmfence xxf86vm xrandr +OPTIONS_GROUP= PLATFORM +OPTIONS_GROUP_PLATFORM= PLATFORM_X11 PLATFORM_WAYLAND PLATFORM_DRM PLATFORM_SURFACELESS +PLATFORM_X11_DESC= Enable X11 support for GBM/EGL +PLATFORM_WAYLAND_DESC= Enable Wayland support for GBM/EGL +PLATFORM_DRM_DESC= Enable DRM support for GBM/EGL +PLATFORM_SURFACELESS_DESC= Enable Surfaceless support for GBM/EGL +PLATFORM_WAYLAND_IMPLIES= WAYLAND + OPTIONS_DEFINE= WAYLAND -OPTIONS_DEFAULT=WAYLAND +OPTIONS_DEFAULT=WAYLAND PLATFORM_X11 PLATFORM_WAYLAND PLATFORM_DRM PLATFORM_SURFACELESS OPTIONS_SUB= yes WAYLAND_DESC= Enable support for the Wayland platform in EGL WAYLAND_BUILD_DEPENDS= wayland-protocols>=1.8:graphics/wayland-protocols WAYLAND_LIB_DEPENDS= libwayland-egl.so:graphics/wayland +WAYLAND_IMPLIES= PLATFORM_WAYLAND .include .include "${.CURDIR:H:H}/graphics/mesa-dri/Makefile.common" MESON_ARGS+= -Dgallium-drivers="" \ -Dgallium-vdpau=false \ -Dgallium-xvmc=false \ -Dgallium-omx=disabled \ -Dgallium-va=false \ -Dgallium-xa=false \ -Dgallium-nine=false \ -Dgallium-clover=disabled \ -Dosmesa=none \ -Dtools="" \ -Degl=true \ -Dgbm=true \ -Dvulkan-drivers="" # Building EGL and GBM requires a dri driver so add swrast MESON_ARGS+= -Ddri-drivers="swrast" -.if ${PORT_OPTIONS:MWAYLAND} -MESON_ARGS+= -Dplatforms=x11,surfaceless,drm,wayland +.if ${PORT_OPTIONS:MPLATFORM_X11} +MESA_PLATFORMS+= x11 +.endif + +.if ${PORT_OPTIONS:MPLATFORM_WAYLAND} && ${PORT_OPTIONS:MWAYLAND} +MESA_PLATFORMS+= wayland +.endif + +.if ${PORT_OPTIONS:MPLATFORM_DRM} +MESA_PLATFORMS+= drm +.endif + +.if ${PORT_OPTIONS:MPLATFORM_SURFACELESS} +MESA_PLATFORMS+= surfaceless .endif +MESON_ARGS+= -Dplatforms="${MESA_PLATFORMS:ts,:tl}" + .if ${ARCH} == "i386" # PR230239 Fix the build for i386 when WITH_LLD_IS_LD is set LDFLAGS+=-Wl,-z,notext .elif ${ARCH} == "powerpc" USE_GCC= yes .endif .include "${MASTERDIR}/Makefile.targets" .include -- 2.26.2