graphics/mesa-dri: Convert gallium and vulkan driver to port options

Instead of selecting the one by arches add options.
This will help users who doesn't want some features.
The default are still the same based on the specific arch.
No functional changes intended.

Differential Revision:	https://reviews.freebsd.org/D45754
Inspired by:		graphics/mesa-devel
Reviewed by:		bapt
Sponsored by:		Beckhoff Automation GmbH & Co. KG
This commit is contained in:
Emmanuel Vadot 2024-06-27 08:27:30 +02:00
parent a26876a1e5
commit efb0c89e59
2 changed files with 71 additions and 59 deletions

View File

@ -1,6 +1,6 @@
PORTNAME= mesa-dri
PORTVERSION= ${MESAVERSION}
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= graphics
COMMENT= OpenGL hardware acceleration drivers for DRI2+
@ -10,14 +10,8 @@ LIB_DEPENDS+= libglapi.so:graphics/mesa-libs
USES+= llvm:lib,noexport
OPTIONS_GROUP= PLATFORM
OPTIONS_GROUP_PLATFORM= X11 WAYLAND
X11_DESC= Enable X11 support for GBM/EGL
WAYLAND_DESC= Enable Wayland support for GBM/EGL and Vulkan
WAYLAND_BUILD_DEPENDS= wayland-protocols>=1.8:graphics/wayland-protocols
WAYLAND_LIB_DEPENDS= libwayland-client.so:graphics/wayland
OPTIONS_DEFINE= ZSTD
OPTIONS_GROUP= GALLIUM PLATFORM VULKAN
OPTIONS_DEFAULT= WAYLAND X11 ZSTD
OPTIONS_SUB= yes
@ -25,32 +19,52 @@ ZSTD_DESC= Use ZSTD for shader cache
ZSTD_LIB_DEPENDS= libzstd.so:archivers/zstd
ZSTD_MESON_ENABLED= zstd
OPTIONS_GROUP_PLATFORM= X11 WAYLAND
X11_DESC= Enable X11 support for GBM/EGL
WAYLAND_DESC= Enable Wayland support for GBM/EGL and Vulkan
WAYLAND_BUILD_DEPENDS= wayland-protocols>=1.8:graphics/wayland-protocols
WAYLAND_LIB_DEPENDS= libwayland-client.so:graphics/wayland
OPTIONS_GROUP_GALLIUM= crocus i915 iris panfrost r300 r600 radeonsi svga swrast zink
GALLIUM_DESC= Unified OpenGL drivers
crocus_DESC= Intel GPU Gen4 (Broadwater) to Gen7 (Haswell)
i915_DESC= Intel GPU Gen3 (Grantsdale to Pineview)
iris_DESC= Intel GPU Gen8 (Broadwell) and newer
panfrost_DESC= ARM Midgard and Bifrost
r300_DESC= AMD/ATI R300, R400 and R500
r600_DESC= AMD/ATI R600, R700, Evergreen, Northern Islands
radeonsi_DESC= AMD/ATI Southern Islands and newer
svga_DESC= VMWare Virtual GPU
swrast_DESC= Software Rasterizer
zink_DESC= OpenGL on top of Khronos Vulkan API
OPTIONS_EXCLUDE+= ${ARCH:Marmv7:C/.+/crocus i915 iris panfrost r300 r600 radeonsi svga zink/}
OPTIONS_EXCLUDE+= ${ARCH:Naarch64:C/.+/panfrost/}
OPTIONS_EXCLUDE+= ${ARCH:Namd64:Ni386:Nx86_64:C/.+/crocus i915 iris svga/}
MESON_ARGS+= -Dgallium-drivers=${GALLIUM_DRIVERS:ts,}
. for _gd in ${OPTIONS_GROUP_GALLIUM}
OPTIONS_DEFAULT+= ${_gd}
${_gd}_VARS+= GALLIUM_DRIVERS+=${_gd}
. endfor
OPTIONS_GROUP_VULKAN= anv radv swrast_vk
VULKAN_DESC= Vulkan drivers
anv_DESC= Intel GPU Gen9 and newer Vulkan support
radv_DESC= AMD/ATI Southern Islands and newer Vulkan support
radv_BUILD_DEPENDS= glslangValidator:graphics/glslang
swrast_vk_DESC= Software Rasterizer Vulkan support
OPTIONS_EXCLUDE+= ${ARCH:Marmv7:C/.+/anv radv/}
OPTIONS_EXCLUDE+= ${ARCH:Namd64:Ni386:Nx86_64:C/.+/anv/}
MESON_ARGS+= -Dvulkan-drivers=${VULKAN_DRIVERS:ts,}
. for _vd in ${OPTIONS_GROUP_VULKAN}
OPTIONS_DEFAULT+= ${_vd}
${_vd}_VARS+= VULKAN_DRIVERS+=${_vd:S/anv/intel/:S/radv/amd/:S/swrast_vk/swrast/}
. endfor
.include <bsd.port.options.mk>
.include "${.CURDIR:H:H}/graphics/mesa-dri/Makefile.common"
ALL_GALLIUM_DRIVERS= CROCUS I915 IRIS PANFROST R300 R600 RADEONSI SVGA \
SWRAST ZINK
ALL_VULKAN_DRIVERS= INTEL AMD SWRAST
GALLIUM_DRIVERS+= SWRAST \
ZINK
VULKAN_DRIVERS+= SWRAST # lavapipe
.if ${ARCH} == aarch64
GALLIUM_DRIVERS+= PANFROST
.endif
.if ${ARCH} == aarch64 || ${ARCH} == amd64 || ${ARCH} == i386 \
|| ${ARCH:Mpowerpc*} || ${ARCH} == riscv64
GALLIUM_DRIVERS+= R300 R600 RADEONSI
VULKAN_DRIVERS+= AMD
BUILD_DEPENDS+= glslangValidator:graphics/glslang
.endif
.if ${ARCH} == amd64 || ${ARCH} == i386
GALLIUM_DRIVERS+= CROCUS I915 IRIS SVGA
VULKAN_DRIVERS+= INTEL
.endif
LDFLAGS_i386= -Wl,-znotext
.if ${PORT_OPTIONS:MX11}
@ -64,9 +78,7 @@ MESON_ARGS+= -Dxlib-lease=disabled
MESA_PLATFORMS+= wayland
.endif
MESON_ARGS+= -Dgallium-drivers="${GALLIUM_DRIVERS:ts,:tl}" \
-Dvulkan-drivers="${VULKAN_DRIVERS:ts,:tl}" \
-Dplatforms="${MESA_PLATFORMS:ts,:tl}"
MESON_ARGS+= -Dplatforms="${MESA_PLATFORMS:ts,:tl}"
# Vulkan Video extensions (keep in sync with mesa-gallium-va)
MESON_ARGS+= -Dvideo-codecs="vc1dec,h264dec,h264enc,h265dec,h265enc,av1dec,av1enc,vp9dec"
@ -85,20 +97,20 @@ MESON_ARGS+= -Dandroid-libbacktrace=disabled \
-Dosmesa=false \
-Dvalgrind=disabled
.for _gd in ${ALL_GALLIUM_DRIVERS}
.for _gd in ${OPTIONS_GROUP_GALLIUM}
. if defined(GALLIUM_DRIVERS) && ${GALLIUM_DRIVERS:M${_gd}}
PLIST_SUB+= ${_gd}_GDRIVER=""
PLIST_SUB+= ${_gd}=""
. else
PLIST_SUB+= ${_gd}_GDRIVER="@comment "
PLIST_SUB+= ${_gd}="@comment "
. endif
.endfor
PLIST_SUB += ARCH=${ARCH:S/amd/x86_/}
.for _vd in ${ALL_VULKAN_DRIVERS}
.for _vd in ${OPTIONS_GROUP_VULKAN}
. if defined(VULKAN_DRIVERS) && ${VULKAN_DRIVERS:M${_vd}}
PLIST_SUB+= ${_vd}_VDRIVER=""
PLIST_SUB+= ${_vd}=""
. else
PLIST_SUB+= ${_vd}_VDRIVER="@comment "
PLIST_SUB+= ${_vd}="@comment "
. endif
.endfor

View File

@ -21,18 +21,18 @@ include/GL/internal/dri_interface.h
@comment include/GLES3/gl3platform.h
@comment include/KHR/khrplatform.h
@comment include/gbm.h
%%CROCUS_GDRIVER%%lib/dri/crocus_dri.so
%%I915_GDRIVER%%lib/dri/i915_dri.so
%%IRIS_GDRIVER%%lib/dri/iris_dri.so
%%PANFROST_GDRIVER%%lib/dri/panfrost_dri.so
%%PANFROST_GDRIVER%%lib/dri/rockchip_dri.so
%%SWRAST_GDRIVER%%lib/dri/kms_swrast_dri.so
%%R300_GDRIVER%%lib/dri/r300_dri.so
%%R600_GDRIVER%%lib/dri/r600_dri.so
%%RADEONSI_GDRIVER%%lib/dri/radeonsi_dri.so
%%SWRAST_GDRIVER%%lib/dri/swrast_dri.so
%%SVGA_GDRIVER%%lib/dri/vmwgfx_dri.so
%%ZINK_GDRIVER%%lib/dri/zink_dri.so
%%crocus%%lib/dri/crocus_dri.so
%%i915%%lib/dri/i915_dri.so
%%iris%%lib/dri/iris_dri.so
%%panfrost%%lib/dri/panfrost_dri.so
%%panfrost%%lib/dri/rockchip_dri.so
%%r300%%lib/dri/r300_dri.so
%%r600%%lib/dri/r600_dri.so
%%radeonsi%%lib/dri/radeonsi_dri.so
%%svga%%lib/dri/vmwgfx_dri.so
%%swrast%%lib/dri/kms_swrast_dri.so
%%swrast%%lib/dri/swrast_dri.so
%%zink%%lib/dri/zink_dri.so
@comment lib/libEGL.so
@comment lib/libEGL.so.1
@comment lib/libEGL.so.1.0.0
@ -48,17 +48,17 @@ include/GL/internal/dri_interface.h
@comment lib/libGLESv2.so
@comment lib/libGLESv2.so.2
@comment lib/libGLESv2.so.2.0.0
%%INTEL_VDRIVER%%lib/libvulkan_intel.so
%%AMD_VDRIVER%%lib/libvulkan_radeon.so
%%SWRAST_VDRIVER%%lib/libvulkan_lvp.so
%%anv%%lib/libvulkan_intel.so
%%radv%%lib/libvulkan_radeon.so
%%swrast_vk%%lib/libvulkan_lvp.so
libdata/pkgconfig/dri.pc
@comment libdata/pkgconfig/egl.pc
@comment libdata/pkgconfig/gbm.pc
@comment libdata/pkgconfig/glesv1_cm.pc
@comment libdata/pkgconfig/glesv2.pc
share/drirc.d/00-mesa-defaults.conf
%%AMD_VDRIVER%%share/drirc.d/00-radv-defaults.conf
%%radv%%share/drirc.d/00-radv-defaults.conf
share/drirc.d/01-freebsd.conf
%%INTEL_VDRIVER%%share/vulkan/icd.d/intel_icd.%%ARCH%%.json
%%AMD_VDRIVER%%share/vulkan/icd.d/radeon_icd.%%ARCH%%.json
%%SWRAST_VDRIVER%%share/vulkan/icd.d/lvp_icd.%%ARCH%%.json
%%anv%%share/vulkan/icd.d/intel_icd.%%ARCH%%.json
%%radv%%share/vulkan/icd.d/radeon_icd.%%ARCH%%.json
%%swrast_vk%%share/vulkan/icd.d/lvp_icd.%%ARCH%%.json