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, dri, dri3 or vulkan driver selection config BR2_PACKAGE_MESA3D_DRI3 bool select BR2_PACKAGE_XLIB_LIBXSHMFENCE 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 # 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_RISCV_32) || !BR2_PACKAGE_XORG7 # libxshmfence select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7 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_DRI3 if BR2_PACKAGE_XORG7 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_RISCV_32) || !BR2_PACKAGE_XORG7 # libxshmfence select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7 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_RISCV_32) || !BR2_PACKAGE_XORG7 # libxshmfence select BR2_PACKAGE_MESA3D_DRI3 if BR2_PACKAGE_XORG7 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_DRI3 if BR2_PACKAGE_XORG7 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_DRI3 if BR2_PACKAGE_XORG7 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_DRI3 if BR2_PACKAGE_XORG7 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_DRI3 if BR2_PACKAGE_XORG7 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