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