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 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_4_8 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 select BR2_PACKAGE_LLVM comment "llvm support needs a toolchain w/ wchar, threads, C++, gcc >= 4.8, dynamic library" depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \ || BR2_STATIC_LIBS || !BR2_USE_WCHAR 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 or vulkan driver selection config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER bool select BR2_PACKAGE_MESA3D_DRIVER config BR2_PACKAGE_MESA3D_DRI_DRIVER bool select BR2_PACKAGE_MESA3D_DRIVER select BR2_PACKAGE_MESA3D_GBM if \ !BR2_PACKAGE_MESA3D_OPENGL_GLX && \ !BR2_PACKAGE_MESA3D_OPENGL_EGL select BR2_PACKAGE_XLIB_LIBXSHMFENCE if \ (BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4 && \ !BR2_RISCV_32) 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_ETNAVIV bool "Gallium Etnaviv driver" 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 depends on !BR2_PACKAGE_MESA3D_DRI_DRIVER_I915 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER select BR2_PACKAGE_LIBDRM_INTEL help Support for i915-based Intel GPUs. comment "Gallium i915: Only one i915 provider can be built" depends on BR2_i386 || BR2_x86_64 depends on BR2_PACKAGE_MESA3D_DRI_DRIVER_I915 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" 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" 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 depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils 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. # Radeon SI needs libelf # musl is not currently compatible with elfutils comment "Radeon SI driver needs a uClibc or glibc toolchain" depends on BR2_USE_MMU depends on BR2_PACKAGE_MESA3D_LLVM depends on !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC) 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 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER select BR2_PACKAGE_LIBDRM_VC4 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_aarch64 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_R300 \ || 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 r300, r600, radeonsi or nouveau" depends on !BR2_PACKAGE_XORG7 || \ !(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU \ || BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R300 \ || BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 \ || BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI) config BR2_PACKAGE_MESA3D_XVMC bool "Gallium XvMC state tracker" depends on BR2_i386 || BR2_x86_64 depends on BR2_PACKAGE_XORG7 depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU \ || BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 select BR2_PACKAGE_MESA3D_NEEDS_X11 select BR2_PACKAGE_XLIB_LIBXV select BR2_PACKAGE_XLIB_LIBXVMC help XvMC state tracker (needs r600 or nouveau gallium drivers). comment "Gallium XvMC state tracker needs X.org and gallium drivers r600 or nouveau" depends on BR2_i386 || BR2_x86_64 depends on !BR2_PACKAGE_XORG7 || \ !(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU \ || BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600) comment "DRI drivers" config BR2_PACKAGE_MESA3D_DRI_DRIVER_I915 bool "DRI i915 driver" depends on BR2_i386 || BR2_x86_64 select BR2_PACKAGE_MESA3D_DRI_DRIVER select BR2_PACKAGE_LIBDRM_INTEL help Support for i915-based Intel GPUs. config BR2_PACKAGE_MESA3D_DRI_DRIVER_I965 bool "DRI i965 driver" depends on BR2_i386 || BR2_x86_64 depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h select BR2_PACKAGE_MESA3D_DRI_DRIVER select BR2_PACKAGE_LIBDRM_INTEL help Support for i965-based Intel GPUs. comment "DRI i965 driver needs a toolchain w/ headers >= 3.17" depends on BR2_i386 || BR2_x86_64 depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 config BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU bool "DRI nouveau driver" select BR2_PACKAGE_MESA3D_DRI_DRIVER select BR2_PACKAGE_LIBDRM_NOUVEAU help Support for Nvidia-based GPUs. config BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON bool "DRI radeon r100 driver" depends on BR2_i386 || BR2_x86_64 # libdrm'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 i386 and x86_64. select BR2_PACKAGE_MESA3D_DRI_DRIVER select BR2_PACKAGE_LIBDRM_RADEON help Legacy Radeon driver for R100 series GPUs. comment "Vulkan drivers" 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 # libxshmfence depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert depends on BR2_PACKAGE_XORG7 # xorgproto select BR2_PACKAGE_MESA3D_VULKAN_DRIVER select BR2_PACKAGE_XORGPROTO select BR2_PACKAGE_XLIB_LIBXSHMFENCE help Vulkan driver for Intel hardware from Ivy Bridge onward. comment "intel vulkan depends on X.org and needs a glibc toolchain w/ headers >= 3.17" depends on BR2_i386 || BR2_x86_64 depends on BR2_TOOLCHAIN_HAS_SYNC_4 depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 || \ !BR2_TOOLCHAIN_USES_GLIBC || !BR2_PACKAGE_XORG7 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_DRI_DRIVER \ || (BR2_PACKAGE_MESA3D_GALLIUM_DRIVER && BR2_PACKAGE_MESA3D_OPENGL_EGL) help Enable Generic Buffer Management (gbm) comment "gbm support needs a dri driver or a gallium driver w/ EGL support." depends on !BR2_PACKAGE_MESA3D_DRI_DRIVER \ && !(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 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" select BR2_PACKAGE_HAS_LIBEGL 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 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_LIBGL default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_GLX config BR2_PACKAGE_PROVIDES_LIBEGL default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_EGL config BR2_PACKAGE_PROVIDES_LIBGLES default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_ES config BR2_PACKAGE_PROVIDES_LIBOPENCL default "mesa3d" if BR2_PACKAGE_MESA3D_OPENCL endif # BR2_PACKAGE_MESA3D comment "mesa3d needs a toolchain w/ C++, NPTL, dynamic library" depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ BR2_STATIC_LIBS depends on BR2_TOOLCHAIN_HAS_SYNC_1