| menuconfig BR2_PACKAGE_MESA3D |
| bool "mesa3d" |
| depends on BR2_INSTALL_LIBSTDCPP |
| depends on !BR2_STATIC_LIBS |
| depends on BR2_TOOLCHAIN_HAS_SYNC_1 |
| depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL |
| depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 |
| select BR2_PACKAGE_EXPAT |
| select BR2_PACKAGE_LIBDRM |
| select BR2_PACKAGE_WAYLAND_PROTOCOLS if BR2_PACKAGE_WAYLAND |
| select BR2_PACKAGE_ZLIB |
| help |
| Mesa 3D, an open-source implementation of the OpenGL |
| specification. |
| |
| http://mesa3d.org |
| |
| if BR2_PACKAGE_MESA3D |
| |
| # Some Gallium driver needs libelf when built with LLVM support |
| config BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS |
| bool |
| |
| config BR2_PACKAGE_MESA3D_LLVM |
| bool "llvm support" |
| depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS |
| depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 |
| depends on BR2_TOOLCHAIN_HAS_THREADS |
| depends on BR2_INSTALL_LIBSTDCPP |
| depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future |
| depends on !BR2_STATIC_LIBS |
| depends on BR2_USE_WCHAR # std::wstring |
| depends on BR2_HOST_GCC_AT_LEAST_7 # host-llvm |
| select BR2_PACKAGE_LLVM |
| |
| comment "llvm support needs a toolchain w/ wchar, threads, C++, gcc >= 7, dynamic library, host gcc >= 7" |
| depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS |
| depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ |
| !BR2_TOOLCHAIN_GCC_AT_LEAST_7 \ |
| || BR2_STATIC_LIBS || !BR2_USE_WCHAR \ |
| || !BR2_HOST_GCC_AT_LEAST_7 |
| |
| comment "llvm support needs a toolchain not affected by GCC bug 64735" |
| depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS |
| depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 |
| |
| # clang and libclc dependencies are satisfied by |
| # BR2_PACKAGE_MESA3D_LLVM |
| config BR2_PACKAGE_MESA3D_OPENCL |
| bool "OpenCL support" |
| depends on BR2_PACKAGE_MESA3D_LLVM |
| depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 || \ |
| BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI |
| select BR2_PACKAGE_LLVM_RTTI |
| select BR2_PACKAGE_CLANG |
| select BR2_PACKAGE_LIBCLC |
| select BR2_PACKAGE_HAS_LIBOPENCL |
| |
| # inform the .mk file of gallium or vulkan driver selection |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| bool |
| select BR2_PACKAGE_MESA3D_DRIVER |
| |
| config BR2_PACKAGE_MESA3D_VULKAN_DRIVER |
| bool |
| select BR2_PACKAGE_MESA3D_DRIVER |
| |
| config BR2_PACKAGE_MESA3D_DRIVER |
| bool |
| select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7 |
| |
| # Gallium xa state tracker. |
| # Quote from mesa3d meson.build: "XA state tracker requires at least |
| # one of the following gallium drivers: nouveau, freedreno, i915, svga. |
| config BR2_PACKAGE_MESA3D_NEEDS_XA |
| bool |
| |
| # OpenGL GLX and Gallium VDPAU both needs X11 |
| config BR2_PACKAGE_MESA3D_NEEDS_X11 |
| bool |
| depends on BR2_PACKAGE_XORG7 |
| select BR2_PACKAGE_LIBXCB |
| select BR2_PACKAGE_XLIB_LIBX11 |
| select BR2_PACKAGE_XLIB_LIBXDAMAGE |
| select BR2_PACKAGE_XLIB_LIBXEXT |
| select BR2_PACKAGE_XLIB_LIBXFIXES |
| select BR2_PACKAGE_XLIB_LIBXRANDR |
| select BR2_PACKAGE_XLIB_LIBXXF86VM |
| select BR2_PACKAGE_XORGPROTO |
| |
| comment "Gallium drivers" |
| |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS |
| bool "Gallium crocus driver" |
| depends on BR2_i386 || BR2_x86_64 |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| help |
| Mesa driver for gen4-7 Intel GPUs. |
| |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV |
| bool "Gallium Etnaviv driver" |
| depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| select BR2_PACKAGE_LIBDRM_ETNAVIV |
| help |
| Mesa driver for Vivante GPUs. |
| |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO |
| bool "Gallium freedreno driver" |
| depends on BR2_arm || BR2_aarch64 || BR2_aarch64_be # libdrm-freedreno |
| # libdrm's freedreno option depends on LIBDRM_HAS_ATOMIC. Propagating |
| # that dependency here causes a circular dependency that Kconfig |
| # can't see is just spurious. However, that dependency is about |
| # the toolchain having sync4 primitives, which is always a given |
| # for arm/aarch64. |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| select BR2_PACKAGE_LIBDRM_FREEDRENO |
| help |
| Mesa driver for Freedreno GPUs. |
| |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_I915 |
| bool "Gallium i915 driver" |
| depends on BR2_i386 || BR2_x86_64 |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| select BR2_PACKAGE_LIBDRM_INTEL |
| help |
| Support for i915-based Intel GPUs. |
| |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS |
| bool "Gallium iris driver" |
| depends on BR2_i386 || BR2_x86_64 |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| help |
| Mesa driver for iris-based Intel GPUs. |
| |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LIMA |
| bool "Gallium lima driver" |
| depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| help |
| Mesa driver for ARM Mali Utgard GPUs. |
| |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU |
| bool "Gallium nouveau driver" |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| select BR2_PACKAGE_LIBDRM_NOUVEAU |
| select BR2_PACKAGE_MESA3D_NEEDS_XA |
| select BR2_PACKAGE_LLVM_RTTI if BR2_PACKAGE_MESA3D_LLVM |
| help |
| Supports all Nvidia GPUs. |
| |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST |
| bool "Gallium panfrost driver" |
| depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| help |
| Mesa driver for ARM Mali Midgard and Bifrost GPUs. |
| |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R300 |
| bool "Gallium Radeon R300 driver" |
| depends on BR2_i386 || BR2_x86_64 |
| # lbdrm's radeon option depends on LIBDRM_HAS_ATOMIC. Propagating |
| # that dependency here causes a circular dependency that Kconfig |
| # can't see is just spurious. However, that dependency is about |
| # the toolchain having sync4 primitives, which is always a given |
| # for x86. |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| select BR2_PACKAGE_LIBDRM_RADEON |
| help |
| Driver for ATI/AMD Radeon R300/R400/R500 GPUs. |
| |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 |
| bool "Gallium Radeon R600 driver" |
| depends on BR2_i386 || BR2_x86_64 |
| depends on !BR2_PACKAGE_MESA3D_LLVM || \ |
| (BR2_PACKAGE_MESA3D_LLVM && (BR2_TOOLCHAIN_USES_UCLIBC || \ |
| BR2_TOOLCHAIN_USES_GLIBC)) # elfutils |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| select BR2_PACKAGE_LIBDRM_RADEON |
| select BR2_PACKAGE_LLVM_AMDGPU if BR2_PACKAGE_MESA3D_LLVM |
| select BR2_PACKAGE_ELFUTILS if BR2_PACKAGE_MESA3D_LLVM |
| select BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS if BR2_PACKAGE_MESA3D_LLVM |
| help |
| Driver for ATI/AMD Radeon R600/R700/HD5000/HD6000 GPUs. |
| |
| # R600 needs libelf when Mesa3D is built with LLVM support |
| # musl is not currently compatible with elfutils |
| comment "R600 driver needs a uClibc or glibc toolchain when llvm is enabled" |
| depends on BR2_PACKAGE_MESA3D_LLVM |
| depends on !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC) |
| |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI |
| bool "Gallium Radeon SI driver" |
| depends on BR2_USE_MMU # libdrm |
| depends on BR2_i386 || BR2_x86_64 |
| depends on BR2_PACKAGE_MESA3D_LLVM |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| select BR2_PACKAGE_LIBDRM_AMDGPU |
| select BR2_PACKAGE_LIBDRM_RADEON |
| select BR2_PACKAGE_LLVM_AMDGPU |
| select BR2_PACKAGE_ELFUTILS |
| select BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS |
| help |
| Driver for ATI/AMD Radeon HD7000/HD8000/Rx200 GPUs. |
| |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA |
| bool "Gallium vmware svga driver" |
| depends on BR2_i386 || BR2_x86_64 |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| select BR2_PACKAGE_LIBDRM_VMWGFX |
| select BR2_PACKAGE_MESA3D_NEEDS_XA |
| help |
| This is a virtual GPU driver for VMWare virtual machines. |
| |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST |
| bool "Gallium swrast driver" |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| help |
| This is a software opengl implementation using the Gallium3D |
| infrastructure. |
| |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_TEGRA |
| bool "Gallium tegra driver" |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU |
| select BR2_PACKAGE_LIBDRM_NOUVEAU |
| select BR2_PACKAGE_MESA3D_NEEDS_XA |
| help |
| Adds support for Nvidia Tegra GPUs, requires nouveau. |
| |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D |
| bool "Gallium v3d driver" |
| depends on (BR2_arm && BR2_ARM_CPU_HAS_NEON) || BR2_aarch64 |
| depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4 # runtime |
| select BR2_PACKAGE_MESA3D_OPENGL_EGL |
| help |
| Driver for Broadcom VC6 (rpi4) GPUs (needs vc4). |
| |
| It requires a kernel 4.18+ with DRM V3D support enabled: |
| |
| - CONFIG_DRM_V3D |
| - CONFIG_DRM_VC4 |
| |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4 |
| bool "Gallium vc4 driver" |
| depends on (BR2_arm && BR2_ARM_CPU_HAS_NEON) || BR2_aarch64 |
| depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| select BR2_PACKAGE_LIBDRM_VC4 |
| select BR2_PACKAGE_MESA3D_OPENGL_EGL |
| help |
| Driver for Broadcom VC4 (rpi2/3) GPUs. |
| It requires a vanilla 4.5+ kernel with drm vc4 (open) support. |
| |
| config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL |
| bool "Gallium virgl driver" |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| select BR2_PACKAGE_MESA3D_OPENGL_EGL |
| help |
| virgl is the 3D acceleration backend for the virtio-gpu |
| shipping with qemu. |
| |
| config BR2_PACKAGE_MESA3D_VDPAU |
| bool "Gallium VDPAU state tracker" |
| depends on BR2_PACKAGE_XORG7 |
| depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU \ |
| || BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 \ |
| || BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI |
| select BR2_PACKAGE_MESA3D_NEEDS_X11 |
| select BR2_PACKAGE_LIBVDPAU |
| help |
| VDPAU state tracker (needs r300, r600, radeonsi or nouveau |
| gallium drivers). |
| |
| comment "Gallium VDPAU state tracker needs X.org and gallium drivers r600, radeonsi or nouveau" |
| depends on !BR2_PACKAGE_XORG7 || \ |
| !(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU \ |
| || BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 \ |
| || BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI) |
| |
| comment "Vulkan drivers" |
| |
| config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_BROADCOM |
| bool "Vulkan broadcom driver" |
| depends on BR2_arm || BR2_aarch64 |
| depends on BR2_TOOLCHAIN_HAS_SYNC_4 # dri3/libxshmfence |
| select BR2_PACKAGE_MESA3D_VULKAN_DRIVER |
| help |
| Vulkan broadcom driver. |
| |
| config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL |
| bool "Vulkan Intel driver" |
| depends on BR2_i386 || BR2_x86_64 |
| depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence |
| depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h |
| depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert |
| select BR2_PACKAGE_MESA3D_VULKAN_DRIVER |
| help |
| Vulkan driver for Intel hardware from Ivy Bridge onward. |
| |
| comment "intel vulkan needs a glibc toolchain w/ headers >= 3.17" |
| depends on BR2_i386 || BR2_x86_64 |
| depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 |
| depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 || \ |
| !BR2_TOOLCHAIN_USES_GLIBC |
| |
| config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_SWRAST |
| bool "Vulkan swrast driver" |
| depends on BR2_PACKAGE_MESA3D_LLVM |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST |
| select BR2_PACKAGE_MESA3D_VULKAN_DRIVER |
| help |
| Vulkan swrast driver. |
| |
| comment "Off-screen Rendering" |
| |
| config BR2_PACKAGE_MESA3D_OSMESA_GALLIUM |
| bool "OSMesa (Gallium) library" |
| select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST |
| help |
| The OSMesa API provides functions for off-screen rendering. |
| |
| if BR2_PACKAGE_MESA3D_DRIVER |
| |
| comment "OpenGL API Support" |
| |
| config BR2_PACKAGE_MESA3D_GBM |
| bool "gbm" |
| depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER && \ |
| BR2_PACKAGE_MESA3D_OPENGL_EGL |
| select BR2_PACKAGE_HAS_LIBGBM |
| select BR2_PACKAGE_LIBGBM_HAS_FEATURE_FORMAT_MODIFIER_PLANE_COUNT |
| select BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF |
| help |
| Enable Generic Buffer Management (gbm) |
| |
| comment "gbm support needs a gallium driver w/ EGL support." |
| depends on !(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER && BR2_PACKAGE_MESA3D_OPENGL_EGL) |
| |
| config BR2_PACKAGE_MESA3D_OPENGL_GLX |
| bool "OpenGL GLX" |
| depends on BR2_PACKAGE_XORG7 |
| select BR2_PACKAGE_HAS_LIBGL if !BR2_PACKAGE_LIBGLVND |
| select BR2_PACKAGE_LIBGLVND_DISPATCH_GL if BR2_PACKAGE_LIBGLVND |
| select BR2_PACKAGE_MESA3D_NEEDS_X11 |
| help |
| Enable GLX graphic acceleration (OpenGL + X11). |
| |
| comment "OpenGL GLX support needs X11" |
| depends on !BR2_PACKAGE_XORG7 |
| |
| config BR2_PACKAGE_MESA3D_OPENGL_EGL |
| bool "OpenGL EGL" |
| depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER |
| select BR2_PACKAGE_HAS_LIBEGL if !BR2_PACKAGE_LIBGLVND |
| select BR2_PACKAGE_LIBGLVND_DISPATCH_EGL if BR2_PACKAGE_LIBGLVND |
| select BR2_PACKAGE_HAS_LIBEGL_WAYLAND |
| select BR2_PACKAGE_MESA3D_GBM |
| help |
| Use the Khronos EGL APIs. EGL is a window manager for OpenGL |
| applications similar to GLX, for X, and WGL, for Windows. |
| |
| config BR2_PACKAGE_MESA3D_OPENGL_ES |
| bool "OpenGL ES" |
| select BR2_PACKAGE_HAS_LIBGLES if !BR2_PACKAGE_LIBGLVND |
| select BR2_PACKAGE_LIBGLVND_DISPATCH_GLES if BR2_PACKAGE_LIBGLVND |
| help |
| Use the Khronos OpenGL ES APIs. This is commonly used on |
| embedded systems and represents a subset of the OpenGL API. |
| |
| endif # BR2_PACKAGE_MESA3D_DRIVER |
| |
| config BR2_PACKAGE_PROVIDES_LIBGBM |
| default "mesa3d" if BR2_PACKAGE_MESA3D_GBM |
| |
| config BR2_PACKAGE_PROVIDES_LIBGL |
| default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_GLX && !BR2_PACKAGE_LIBGLVND |
| |
| config BR2_PACKAGE_PROVIDES_LIBEGL |
| default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_EGL && !BR2_PACKAGE_LIBGLVND |
| |
| config BR2_PACKAGE_PROVIDES_LIBGLES |
| default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_ES && !BR2_PACKAGE_LIBGLVND |
| |
| config BR2_PACKAGE_PROVIDES_LIBOPENCL |
| default "mesa3d" if BR2_PACKAGE_MESA3D_OPENCL |
| |
| endif # BR2_PACKAGE_MESA3D |
| |
| comment "mesa3d needs a toolchain w/ gcc >=8, C++, NPTL, dynamic library" |
| depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ |
| BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_8 |
| depends on BR2_TOOLCHAIN_HAS_SYNC_1 |