@@ -107,10 +107,6 @@ config BR2_PACKAGE_MESA3D_VULKAN_DRIVER
107107 bool
108108 select BR2_PACKAGE_MESA3D_DRIVER
109109
110- config BR2_PACKAGE_MESA3D_VIDEO_CODEC
111- bool
112- select BR2_PACKAGE_MESA3D_DRIVER
113-
114110config BR2_PACKAGE_MESA3D_DRIVER
115111 bool
116112 select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XORG7
@@ -154,6 +150,7 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO
154150 # the toolchain having sync4 primitives, which is always a given
155151 # for arm/aarch64.
156152 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
153+ select BR2_PACKAGE_MESA3D_HOST_NATIVE_CONTEXT_SUPPORTED_DRIVER
157154 select BR2_PACKAGE_LIBDRM_FREEDRENO
158155 select BR2_PACKAGE_MESA3D_OPENGL_EGL # batocera
159156 help
@@ -201,6 +198,7 @@ comment "llvmpipe driver needs llvm"
201198config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU
202199 bool "Gallium nouveau driver"
203200 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
201+ select BR2_PACKAGE_MESA3D_GALLIUM_VA_SUPPORTED_DRIVER
204202 select BR2_PACKAGE_LIBDRM_NOUVEAU
205203 select BR2_PACKAGE_LLVM_RTTI if BR2_PACKAGE_MESA3D_LLVM
206204 select BR2_PACKAGE_MESA3D_RUSTICL_SUPPORTED_DRIVER
@@ -240,6 +238,7 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600
240238 (BR2_PACKAGE_MESA3D_LLVM && (BR2_TOOLCHAIN_USES_UCLIBC || \
241239 BR2_TOOLCHAIN_USES_GLIBC)) # elfutils
242240 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
241+ select BR2_PACKAGE_MESA3D_GALLIUM_VA_SUPPORTED_DRIVER
243242 select BR2_PACKAGE_LIBDRM_RADEON
244243 select BR2_PACKAGE_LLVM_AMDGPU if BR2_PACKAGE_MESA3D_LLVM
245244 select BR2_PACKAGE_ELFUTILS if BR2_PACKAGE_MESA3D_LLVM
@@ -257,17 +256,26 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI
257256 bool "Gallium Radeon SI driver"
258257 depends on BR2_USE_MMU # libdrm
259258 depends on BR2_i386 || BR2_x86_64
260- depends on BR2_PACKAGE_MESA3D_LLVM
261259 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
260+ select BR2_PACKAGE_MESA3D_GALLIUM_VA_SUPPORTED_DRIVER
261+ select BR2_PACKAGE_MESA3D_HOST_NATIVE_CONTEXT_SUPPORTED_DRIVER
262262 select BR2_PACKAGE_LIBDRM_AMDGPU
263263 select BR2_PACKAGE_LIBDRM_RADEON
264- select BR2_PACKAGE_LLVM_AMDGPU
264+ select BR2_PACKAGE_LLVM_AMDGPU if BR2_PACKAGE_MESA3D_LLVM
265265 select BR2_PACKAGE_ELFUTILS
266266 select BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS
267267 select BR2_PACKAGE_MESA3D_RUSTICL_SUPPORTED_DRIVER
268268 help
269269 Driver for ATI/AMD Radeon HD7000/HD8000/Rx200 GPUs.
270270
271+ Since Mesa 26.0.0, the default shader compiler is ACO,
272+ even when LLVM support is enabled at build time.
273+
274+ Use the env var AMD_DEBUG=usellvm to override the
275+ default and use LLVM at runtime.
276+
277+ https://docs.mesa3d.org/envvars.html#envvar-AMD_DEBUG
278+
271279config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA
272280 bool "Gallium vmware svga driver"
273281 depends on BR2_i386 || BR2_x86_64
@@ -321,6 +329,7 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4
321329config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL
322330 bool "Gallium virgl driver"
323331 select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
332+ select BR2_PACKAGE_MESA3D_GALLIUM_VA_SUPPORTED_DRIVER
324333 select BR2_PACKAGE_MESA3D_OPENGL_EGL
325334 help
326335 virgl is the 3D acceleration backend for the virtio-gpu
@@ -343,6 +352,7 @@ config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_AMD
343352 depends on BR2_TOOLCHAIN_HAS_SYNC_4 || !BR2_PACKAGE_XORG7 # libxshmfence
344353 select BR2_PACKAGE_LIBDRM_AMDGPU
345354 select BR2_PACKAGE_LLVM_AMDGPU if BR2_PACKAGE_MESA3D_LLVM
355+ select BR2_PACKAGE_MESA3D_HOST_NATIVE_CONTEXT_SUPPORTED_DRIVER
346356 select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
347357 help
348358 RADV is a userspace driver that implements the
@@ -358,6 +368,13 @@ config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_BROADCOM
358368 help
359369 Vulkan broadcom driver.
360370
371+ config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_FREEDRENO
372+ bool "Vulkan freedreno driver (turnip)"
373+ select BR2_PACKAGE_MESA3D_HOST_NATIVE_CONTEXT_SUPPORTED_DRIVER
374+ select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
375+ help
376+ Vulkan freedreno driver.
377+
361378config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_IMAGINATION
362379 bool "Vulkan imagination driver"
363380 depends on BR2_arm || BR2_aarch64
@@ -390,13 +407,6 @@ comment "intel vulkan needs a glibc toolchain w/ headers >= 3.17"
390407 depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 || \
391408 !BR2_TOOLCHAIN_USES_GLIBC
392409
393- config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_SWRAST
394- bool "Vulkan swrast driver"
395- depends on BR2_PACKAGE_MESA3D_LLVM
396- select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SOFTPIPE
397- select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
398- help
399- Vulkan swrast driver.
400410
401411# batocera
402412config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_HASWELL
@@ -428,77 +438,48 @@ config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_PANFROST
428438comment "panfrost vulkan needs llvm"
429439 depends on !BR2_PACKAGE_MESA3D_LLVM
430440
431- # batocera
432- config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_FREEDRENO
433- bool "Freedreno (Turnip) Vulkan driver"
434- depends on BR2_arm || BR2_aarch64
435- depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libxshmfence
436- depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h
437- depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert
441+ config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_SWRAST
442+ bool "Vulkan swrast driver"
443+ depends on BR2_PACKAGE_MESA3D_LLVM
444+ select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SOFTPIPE
438445 select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
439446 help
440- Vulkan driver for freedreno supported hardware.
441-
442- comment "freedreno vulkan needs a glibc toolchain w/ headers >= 3.17"
443- depends on BR2_arm || BR2_aarch64
444- depends on BR2_TOOLCHAIN_HAS_SYNC_4
445- depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 || \
446- !BR2_TOOLCHAIN_USES_GLIBC
447+ Vulkan swrast driver.
447448
448449config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_VIRTIO
449450 bool "Vulkan VirtIO driver (Venus)"
450451 select BR2_PACKAGE_MESA3D_VULKAN_DRIVER
451452 help
452453 Vulkan VirtIO (venus) driver.
453454
454- # batocera - codecs
455- config BR2_PACKAGE_MESA3D_VIDEO_CODEC_VC1DEC
456- bool "VC1DEC video codec support"
457- select BR2_PACKAGE_MESA3D_VIDEO_CODEC
458- help
459- VC1 hardware decoding on supported hardware.
460-
461- config BR2_PACKAGE_MESA3D_VIDEO_CODEC_H264DEC
462- bool "H264DEC video codec support"
463- select BR2_PACKAGE_MESA3D_VIDEO_CODEC
464- help
465- H.264 hardware decoding on supported hardware.
466-
467- config BR2_PACKAGE_MESA3D_VIDEO_CODEC_H264ENC
468- bool "H264ENC video codec support"
469- select BR2_PACKAGE_MESA3D_VIDEO_CODEC
470- help
471- H.264 hardware encoding on supported hardware.
455+ comment "Host native context drivers"
456+ depends on BR2_PACKAGE_MESA3D_HOST_NATIVE_CONTEXT_SUPPORTED_DRIVER
472457
473- config BR2_PACKAGE_MESA3D_VIDEO_CODEC_H265DEC
474- bool "H265DEC video codec support"
475- select BR2_PACKAGE_MESA3D_VIDEO_CODEC
458+ config BR2_PACKAGE_MESA3D_HOST_NATIVE_CONTEXT_DRIVER_AMDGPU
459+ bool "amdgpu-virtio"
460+ depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI || \
461+ BR2_PACKAGE_MESA3D_VULKAN_DRIVER_AMD
476462 help
477- H.265 hardware decoding on supported hardware.
463+ Enable VirtIO support for AMDGPU native contexts
464+ used by the radeonsi (OpenGL) and RADV (Vulkan) drivers.
478465
479- config BR2_PACKAGE_MESA3D_VIDEO_CODEC_H265ENC
480- bool "H265ENC video codec support"
481- select BR2_PACKAGE_MESA3D_VIDEO_CODEC
482- help
483- H.265 hardware encoding on supported hardware.
466+ Select this when running Mesa inside a virtual machine
467+ with virtio-gpu host native context support.
484468
485- config BR2_PACKAGE_MESA3D_VIDEO_CODEC_AV1DEC
486- bool "AV1DEC video codec support"
487- select BR2_PACKAGE_MESA3D_VIDEO_CODEC
469+ config BR2_PACKAGE_MESA3D_HOST_NATIVE_CONTEXT_DRIVER_FREEDRENO
470+ bool "freedreno-virtio"
471+ depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO || \
472+ BR2_PACKAGE_MESA3D_VULKAN_DRIVER_FREEDRENO
488473 help
489- AV1 hardware decoding on supported hardware.
474+ Enable VirtIO support for freedreno native contexts
475+ used by the freedreno (OpenGL) and Turnip (Vulkan)
476+ drivers.
490477
491- config BR2_PACKAGE_MESA3D_VIDEO_CODEC_AV1ENC
492- bool "AV1ENC video codec support"
493- select BR2_PACKAGE_MESA3D_VIDEO_CODEC
494- help
495- AV1 hardware encoding on supported hardware.
478+ Select this when running Mesa inside a virtual machine
479+ with virtio-gpu host native context support.
496480
497- config BR2_PACKAGE_MESA3D_VIDEO_CODEC_VP9DEC
498- bool "VP9DEC video codec support"
499- select BR2_PACKAGE_MESA3D_VIDEO_CODEC
500- help
501- VP9 hardware decoding on supported hardware.
481+ config BR2_PACKAGE_MESA3D_HOST_NATIVE_CONTEXT_SUPPORTED_DRIVER
482+ bool
502483
503484if BR2_PACKAGE_MESA3D_DRIVER
504485
@@ -549,6 +530,36 @@ config BR2_PACKAGE_MESA3D_OPENGL_ES
549530
550531endif # BR2_PACKAGE_MESA3D_DRIVER
551532
533+ config BR2_PACKAGE_MESA3D_GALLIUM_VA_SUPPORTED_DRIVER
534+ bool
535+
536+ config BR2_PACKAGE_MESA3D_GALLIUM_VA
537+ bool "Gallium VA-API"
538+ depends on BR2_PACKAGE_MESA3D_GALLIUM_VA_SUPPORTED_DRIVER
539+ # circular dependency: mesa3d -> libva -> libgl -> mesa3d
540+ depends on !BR2_PACKAGE_MESA3D_OPENGL_GLX || BR2_PACKAGE_LIBGLVND
541+ select BR2_PACKAGE_LIBVA
542+ help
543+ Enable VA-API video acceleration support in Gallium drivers.
544+
545+ comment "Gallium VA-API needs a supported gallium driver, incompatible with GLX w/o libglvnd"
546+ depends on !BR2_PACKAGE_MESA3D_GALLIUM_VA_SUPPORTED_DRIVER || \
547+ (BR2_PACKAGE_MESA3D_OPENGL_GLX && !BR2_PACKAGE_LIBGLVND)
548+
549+ config BR2_PACKAGE_MESA3D_PATENTED_VIDEO_CODECS
550+ bool "patented video codecs (H.264, H.265)"
551+ depends on BR2_PACKAGE_MESA3D_GALLIUM_VA || BR2_PACKAGE_MESA3D_VULKAN_DRIVER
552+ help
553+ Enable patent-encumbered video codec support (H.264, H.265,
554+ VC-1 decode/encode) for Gallium VA-API and/or Vulkan video.
555+
556+ Without this, only royalty-free codecs are supported
557+ (AV1, VP9, MPEG-1/2, JPEG).
558+
559+ comment "patented video codecs need Gallium VA-API or a Vulkan driver"
560+ depends on !BR2_PACKAGE_MESA3D_GALLIUM_VA && \
561+ !BR2_PACKAGE_MESA3D_VULKAN_DRIVER
562+
552563config BR2_PACKAGE_PROVIDES_LIBGBM
553564 default "mesa3d" if BR2_PACKAGE_MESA3D_GBM
554565
0 commit comments