1menuconfig BR2_PACKAGE_MESA3D 2 bool "mesa3d" 3 depends on BR2_INSTALL_LIBSTDCPP 4 depends on !BR2_STATIC_LIBS 5 depends on BR2_TOOLCHAIN_HAS_SYNC_1 6 depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL 7 depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 8 select BR2_PACKAGE_EXPAT 9 select BR2_PACKAGE_LIBDRM 10 select BR2_PACKAGE_WAYLAND_PROTOCOLS if BR2_PACKAGE_WAYLAND 11 select BR2_PACKAGE_ZLIB 12 help 13 Mesa 3D, an open-source implementation of the OpenGL 14 specification. 15 16 http://mesa3d.org 17 18if BR2_PACKAGE_MESA3D 19 20# Some Gallium driver needs libelf when built with LLVM support 21config BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS 22 bool 23 24config BR2_PACKAGE_MESA3D_LLVM 25 bool "llvm support" 26 depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS 27 depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 28 depends on BR2_TOOLCHAIN_HAS_THREADS 29 depends on BR2_INSTALL_LIBSTDCPP 30 depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future 31 depends on !BR2_STATIC_LIBS 32 depends on BR2_USE_WCHAR # std::wstring 33 depends on BR2_HOST_GCC_AT_LEAST_7 # host-llvm 34 select BR2_PACKAGE_LLVM 35 36comment "llvm support needs a toolchain w/ wchar, threads, C++, gcc >= 7, dynamic library, host gcc >= 7" 37 depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS 38 depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ 39 !BR2_TOOLCHAIN_GCC_AT_LEAST_7 \ 40 || BR2_STATIC_LIBS || !BR2_USE_WCHAR \ 41 || !BR2_HOST_GCC_AT_LEAST_7 42 43comment "llvm support needs a toolchain not affected by GCC bug 64735" 44 depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS 45 depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 46 47# clang and libclc dependencies are satisfied by 48# BR2_PACKAGE_MESA3D_LLVM 49config BR2_PACKAGE_MESA3D_OPENCL 50 bool "OpenCL support" 51 depends on BR2_PACKAGE_MESA3D_LLVM 52 depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 || \ 53 BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI 54 select BR2_PACKAGE_LLVM_RTTI 55 select BR2_PACKAGE_CLANG 56 select BR2_PACKAGE_LIBCLC 57 select BR2_PACKAGE_HAS_LIBOPENCL 58 59# inform the .mk file of gallium or vulkan driver selection 60config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 61 bool 62 select BR2_PACKAGE_MESA3D_DRIVER 63 64config BR2_PACKAGE_MESA3D_VULKAN_DRIVER 65 bool 66 select BR2_PACKAGE_MESA3D_DRIVER 67 68config BR2_PACKAGE_MESA3D_DRIVER 69 bool 70 select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7 71 72# Gallium xa state tracker. 73# Quote from mesa3d meson.build: "XA state tracker requires at least 74# one of the following gallium drivers: nouveau, freedreno, i915, svga. 75config BR2_PACKAGE_MESA3D_NEEDS_XA 76 bool 77 78# OpenGL GLX and Gallium VDPAU both needs X11 79config BR2_PACKAGE_MESA3D_NEEDS_X11 80 bool 81 depends on BR2_PACKAGE_XORG7 82 select BR2_PACKAGE_LIBXCB 83 select BR2_PACKAGE_XLIB_LIBX11 84 select BR2_PACKAGE_XLIB_LIBXDAMAGE 85 select BR2_PACKAGE_XLIB_LIBXEXT 86 select BR2_PACKAGE_XLIB_LIBXFIXES 87 select BR2_PACKAGE_XLIB_LIBXRANDR 88 select BR2_PACKAGE_XLIB_LIBXXF86VM 89 select BR2_PACKAGE_XORGPROTO 90 91comment "Gallium drivers" 92 93config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS 94 bool "Gallium crocus driver" 95 depends on BR2_i386 || BR2_x86_64 96 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 97 help 98 Mesa driver for gen4-7 Intel GPUs. 99 100config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV 101 bool "Gallium Etnaviv driver" 102 depends on (BR2_TOOLCHAIN_HAS_SYNC_4 && !BR2_RISCV_32) || !BR2_PACKAGE_XORG7 # libxshmfence 103 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 104 select BR2_PACKAGE_LIBDRM_ETNAVIV 105 help 106 Mesa driver for Vivante GPUs. 107 108config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO 109 bool "Gallium freedreno driver" 110 depends on BR2_arm || BR2_aarch64 || BR2_aarch64_be # libdrm-freedreno 111 # libdrm's freedreno option depends on LIBDRM_HAS_ATOMIC. Propagating 112 # that dependency here causes a circular dependency that Kconfig 113 # can't see is just spurious. However, that dependency is about 114 # the toolchain having sync4 primitives, which is always a given 115 # for arm/aarch64. 116 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 117 select BR2_PACKAGE_LIBDRM_FREEDRENO 118 help 119 Mesa driver for Freedreno GPUs. 120 121config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_I915 122 bool "Gallium i915 driver" 123 depends on BR2_i386 || BR2_x86_64 124 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 125 select BR2_PACKAGE_LIBDRM_INTEL 126 help 127 Support for i915-based Intel GPUs. 128 129config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS 130 bool "Gallium iris driver" 131 depends on BR2_i386 || BR2_x86_64 132 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 133 help 134 Mesa driver for iris-based Intel GPUs. 135 136config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LIMA 137 bool "Gallium lima driver" 138 depends on (BR2_TOOLCHAIN_HAS_SYNC_4 && !BR2_RISCV_32) || !BR2_PACKAGE_XORG7 # libxshmfence 139 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 140 help 141 Mesa driver for ARM Mali Utgard GPUs. 142 143config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU 144 bool "Gallium nouveau driver" 145 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 146 select BR2_PACKAGE_LIBDRM_NOUVEAU 147 select BR2_PACKAGE_MESA3D_NEEDS_XA 148 select BR2_PACKAGE_LLVM_RTTI if BR2_PACKAGE_MESA3D_LLVM 149 help 150 Supports all Nvidia GPUs. 151 152config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST 153 bool "Gallium panfrost driver" 154 depends on (BR2_TOOLCHAIN_HAS_SYNC_4 && !BR2_RISCV_32) || !BR2_PACKAGE_XORG7 # libxshmfence 155 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 156 help 157 Mesa driver for ARM Mali Midgard and Bifrost GPUs. 158 159config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R300 160 bool "Gallium Radeon R300 driver" 161 depends on BR2_i386 || BR2_x86_64 162 # lbdrm's radeon option depends on LIBDRM_HAS_ATOMIC. Propagating 163 # that dependency here causes a circular dependency that Kconfig 164 # can't see is just spurious. However, that dependency is about 165 # the toolchain having sync4 primitives, which is always a given 166 # for x86. 167 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 168 select BR2_PACKAGE_LIBDRM_RADEON 169 help 170 Driver for ATI/AMD Radeon R300/R400/R500 GPUs. 171 172config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 173 bool "Gallium Radeon R600 driver" 174 depends on BR2_i386 || BR2_x86_64 175 depends on !BR2_PACKAGE_MESA3D_LLVM || \ 176 (BR2_PACKAGE_MESA3D_LLVM && (BR2_TOOLCHAIN_USES_UCLIBC || \ 177 BR2_TOOLCHAIN_USES_GLIBC)) # elfutils 178 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 179 select BR2_PACKAGE_LIBDRM_RADEON 180 select BR2_PACKAGE_LLVM_AMDGPU if BR2_PACKAGE_MESA3D_LLVM 181 select BR2_PACKAGE_ELFUTILS if BR2_PACKAGE_MESA3D_LLVM 182 select BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS if BR2_PACKAGE_MESA3D_LLVM 183 help 184 Driver for ATI/AMD Radeon R600/R700/HD5000/HD6000 GPUs. 185 186# R600 needs libelf when Mesa3D is built with LLVM support 187# musl is not currently compatible with elfutils 188comment "R600 driver needs a uClibc or glibc toolchain when llvm is enabled" 189 depends on BR2_PACKAGE_MESA3D_LLVM 190 depends on !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC) 191 192config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI 193 bool "Gallium Radeon SI driver" 194 depends on BR2_USE_MMU # libdrm 195 depends on BR2_i386 || BR2_x86_64 196 depends on BR2_PACKAGE_MESA3D_LLVM 197 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 198 select BR2_PACKAGE_LIBDRM_AMDGPU 199 select BR2_PACKAGE_LIBDRM_RADEON 200 select BR2_PACKAGE_LLVM_AMDGPU 201 select BR2_PACKAGE_ELFUTILS 202 select BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS 203 help 204 Driver for ATI/AMD Radeon HD7000/HD8000/Rx200 GPUs. 205 206config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA 207 bool "Gallium vmware svga driver" 208 depends on BR2_i386 || BR2_x86_64 209 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 210 select BR2_PACKAGE_LIBDRM_VMWGFX 211 select BR2_PACKAGE_MESA3D_NEEDS_XA 212 help 213 This is a virtual GPU driver for VMWare virtual machines. 214 215config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST 216 bool "Gallium swrast driver" 217 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 218 help 219 This is a software opengl implementation using the Gallium3D 220 infrastructure. 221 222config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_TEGRA 223 bool "Gallium tegra driver" 224 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 225 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU 226 select BR2_PACKAGE_LIBDRM_NOUVEAU 227 select BR2_PACKAGE_MESA3D_NEEDS_XA 228 help 229 Adds support for Nvidia Tegra GPUs, requires nouveau. 230 231config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D 232 bool "Gallium v3d driver" 233 depends on (BR2_arm && BR2_ARM_CPU_HAS_NEON) || BR2_aarch64 234 depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence 235 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 236 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4 # runtime 237 select BR2_PACKAGE_MESA3D_OPENGL_EGL 238 help 239 Driver for Broadcom VC6 (rpi4) GPUs (needs vc4). 240 241 It requires a kernel 4.18+ with DRM V3D support enabled: 242 243 - CONFIG_DRM_V3D 244 - CONFIG_DRM_VC4 245 246config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4 247 bool "Gallium vc4 driver" 248 depends on (BR2_arm && BR2_ARM_CPU_HAS_NEON) || BR2_aarch64 249 depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence 250 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 251 select BR2_PACKAGE_LIBDRM_VC4 252 select BR2_PACKAGE_MESA3D_OPENGL_EGL 253 help 254 Driver for Broadcom VC4 (rpi2/3) GPUs. 255 It requires a vanilla 4.5+ kernel with drm vc4 (open) support. 256 257config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL 258 bool "Gallium virgl driver" 259 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 260 select BR2_PACKAGE_MESA3D_OPENGL_EGL 261 help 262 virgl is the 3D acceleration backend for the virtio-gpu 263 shipping with qemu. 264 265config BR2_PACKAGE_MESA3D_VDPAU 266 bool "Gallium VDPAU state tracker" 267 depends on BR2_PACKAGE_XORG7 268 depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU \ 269 || BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 \ 270 || BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI 271 select BR2_PACKAGE_MESA3D_NEEDS_X11 272 select BR2_PACKAGE_LIBVDPAU 273 help 274 VDPAU state tracker (needs r300, r600, radeonsi or nouveau 275 gallium drivers). 276 277comment "Gallium VDPAU state tracker needs X.org and gallium drivers r600, radeonsi or nouveau" 278 depends on !BR2_PACKAGE_XORG7 || \ 279 !(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU \ 280 || BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 \ 281 || BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI) 282 283comment "Vulkan drivers" 284 285config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_BROADCOM 286 bool "Vulkan broadcom driver" 287 depends on BR2_arm || BR2_aarch64 288 depends on BR2_TOOLCHAIN_HAS_SYNC_4 # dri3/libxshmfence 289 select BR2_PACKAGE_MESA3D_VULKAN_DRIVER 290 help 291 Vulkan broadcom driver. 292 293config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL 294 bool "Vulkan Intel driver" 295 depends on BR2_i386 || BR2_x86_64 296 depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence 297 depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h 298 depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert 299 select BR2_PACKAGE_MESA3D_VULKAN_DRIVER 300 help 301 Vulkan driver for Intel hardware from Ivy Bridge onward. 302 303comment "intel vulkan needs a glibc toolchain w/ headers >= 3.17" 304 depends on BR2_i386 || BR2_x86_64 305 depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 306 depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 || \ 307 !BR2_TOOLCHAIN_USES_GLIBC 308 309config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_SWRAST 310 bool "Vulkan swrast driver" 311 depends on BR2_PACKAGE_MESA3D_LLVM 312 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST 313 select BR2_PACKAGE_MESA3D_VULKAN_DRIVER 314 help 315 Vulkan swrast driver. 316 317comment "Off-screen Rendering" 318 319config BR2_PACKAGE_MESA3D_OSMESA_GALLIUM 320 bool "OSMesa (Gallium) library" 321 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST 322 help 323 The OSMesa API provides functions for off-screen rendering. 324 325if BR2_PACKAGE_MESA3D_DRIVER 326 327comment "OpenGL API Support" 328 329config BR2_PACKAGE_MESA3D_GBM 330 bool "gbm" 331 depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER && \ 332 BR2_PACKAGE_MESA3D_OPENGL_EGL 333 select BR2_PACKAGE_HAS_LIBGBM 334 select BR2_PACKAGE_LIBGBM_HAS_FEATURE_FORMAT_MODIFIER_PLANE_COUNT 335 select BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF 336 help 337 Enable Generic Buffer Management (gbm) 338 339comment "gbm support needs a gallium driver w/ EGL support." 340 depends on !(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER && BR2_PACKAGE_MESA3D_OPENGL_EGL) 341 342config BR2_PACKAGE_MESA3D_OPENGL_GLX 343 bool "OpenGL GLX" 344 depends on BR2_PACKAGE_XORG7 345 select BR2_PACKAGE_HAS_LIBGL if !BR2_PACKAGE_LIBGLVND 346 select BR2_PACKAGE_LIBGLVND_DISPATCH_GL if BR2_PACKAGE_LIBGLVND 347 select BR2_PACKAGE_MESA3D_NEEDS_X11 348 help 349 Enable GLX graphic acceleration (OpenGL + X11). 350 351comment "OpenGL GLX support needs X11" 352 depends on !BR2_PACKAGE_XORG7 353 354config BR2_PACKAGE_MESA3D_OPENGL_EGL 355 bool "OpenGL EGL" 356 depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER 357 select BR2_PACKAGE_HAS_LIBEGL if !BR2_PACKAGE_LIBGLVND 358 select BR2_PACKAGE_LIBGLVND_DISPATCH_EGL if BR2_PACKAGE_LIBGLVND 359 select BR2_PACKAGE_HAS_LIBEGL_WAYLAND 360 select BR2_PACKAGE_MESA3D_GBM 361 help 362 Use the Khronos EGL APIs. EGL is a window manager for OpenGL 363 applications similar to GLX, for X, and WGL, for Windows. 364 365config BR2_PACKAGE_MESA3D_OPENGL_ES 366 bool "OpenGL ES" 367 select BR2_PACKAGE_HAS_LIBGLES if !BR2_PACKAGE_LIBGLVND 368 select BR2_PACKAGE_LIBGLVND_DISPATCH_GLES if BR2_PACKAGE_LIBGLVND 369 help 370 Use the Khronos OpenGL ES APIs. This is commonly used on 371 embedded systems and represents a subset of the OpenGL API. 372 373endif # BR2_PACKAGE_MESA3D_DRIVER 374 375config BR2_PACKAGE_PROVIDES_LIBGBM 376 default "mesa3d" if BR2_PACKAGE_MESA3D_GBM 377 378config BR2_PACKAGE_PROVIDES_LIBGL 379 default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_GLX && !BR2_PACKAGE_LIBGLVND 380 381config BR2_PACKAGE_PROVIDES_LIBEGL 382 default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_EGL && !BR2_PACKAGE_LIBGLVND 383 384config BR2_PACKAGE_PROVIDES_LIBGLES 385 default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_ES && !BR2_PACKAGE_LIBGLVND 386 387config BR2_PACKAGE_PROVIDES_LIBOPENCL 388 default "mesa3d" if BR2_PACKAGE_MESA3D_OPENCL 389 390endif # BR2_PACKAGE_MESA3D 391 392comment "mesa3d needs a toolchain w/ gcc >=8, C++, NPTL, dynamic library" 393 depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ 394 BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_8 395 depends on BR2_TOOLCHAIN_HAS_SYNC_1 396