Free and open-source graphics device driver
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
|
A free and open-source graphics device driver is a
Drivers without freely (and legally) -available source code are commonly known as binary drivers. Binary drivers used in the context of operating systems that are prone to ongoing development and change (such as Linux) create problems for end users and
In rare cases, a manufacturer's driver source code is available on the Internet without a free license. This means that the code can be studied and altered for personal use, but the altered (and usually the original) source code cannot be freely distributed. Solutions to bugs in the driver cannot be easily shared in the form of modified versions of the driver. Therefore, the utility of such drivers is significantly reduced in comparison to free and open-source drivers.
Problems with proprietary drivers
Software developer's view
There are objections to binary-only drivers based on copyright, security, reliability and development concerns. As part of a wider campaign against
Binary drivers often do not work with current versions of open-source software, and rarely support development snapshots of open-source software; it is usually not directly possible for a developer to use Nvidia's or ATI's proprietary drivers with a development snapshot of an X server or a development snapshot of the Linux kernel. Features like
In the Linux kernel development community, Linus Torvalds has made strong statements on the issue of binary-only modules: "I refuse to even consider tying my hands over some binary-only module ... I want people to know that when they use binary-only modules, it's their problem".[5] Another kernel developer, Greg Kroah-Hartman, has said that a binary-only kernel module does not comply with the kernel's license (the GNU General Public License); it "just violates the GPL due to fun things like derivative works and linking and other stuff."[6] Writer and computer scientist Peter Gutmann has expressed concern that the digital rights management scheme in Microsoft's Windows Vista operating system may limit the availability of the documentation required to write open drivers, since it "requires that the operational details of the device be kept confidential."[7]
In the case of binary drivers, there are objections due to
"Closed source Linux kernel modules are illegal. That's it, it is very simple. I've had the misfortune of talking to a lot of different IP lawyers over the years about this topic, and every one that I've talked to all agree that there is no way that anyone can create a Linux kernel module, today, that can be closed source. It just violates the
derivative works and linking." [9]
The Linux kernel has never maintained a stable in-kernel application binary interface.[10] There are also concerns that proprietary drivers may contain backdoors, like the one found in Samsung Galaxy-series modem drivers.[11]
Hardware developer's view
When applications such as a 3D
The desktop computer market was long dominated by PC hardware using the x86/x86-64 instruction set and GPUs available for the PC. With three major competitors (Nvidia, AMD and Intel). The main competing factor was the price of hardware and raw performance in 3D computer games, which is greatly affected by the efficient translation of API calls into GPU opcodes. The display driver and the video decoder are inherent parts of the graphics card: hardware designed to assist in the calculations necessary for the decoding of video streams. As the market for PC hardware has dwindled, it seems unlikely that new competitors will enter this market and it is unclear how much more knowledge one company could gain by seeing the source code of other companies' drivers.
The mobile sector presents a different situation. The functional blocks (the
During the second quarter of 2013 79.3 percent of
Software architecture
Free and open-source drivers are primarily developed on and for
- A Linux kernel component DRM
- A Linux kernel component display controllerdriver)
- A libDRM user-space component (a wrapper library for DRM system calls, which should only be used by Mesa 3D)
- A has Direct3D version 9. Another Wine component translates Direct3D calls into OpenGL calls, working with OpenGL.
- Device Dependent X (DDX), another 2D graphics device driver for X.Org Server
The DRM is kernel-specific. A VESA driver is generally available for any operating system. The VESA driver supports most graphics cards without acceleration and at display resolutions limited to a set programmed in the Video BIOS by the manufacturer.[15]
History
The Linux graphics stack has evolved, detoured by the X Window System core protocol.
-
2D drivers in theX server
-
All access goes through the Direct Rendering Manager
-
In Linux kernel 3.12, render nodes are merged andWayland implements direct rendering over EGL.
Free and open-source drivers
ATI and AMD
Radeon
The FOSS drivers for ATI-AMD GPUs are being developed under the name Radeon (xf86-video-ati or xserver-xorg-video-radeon). They still must load proprietary microcode into the GPU to enable hardware acceleration.[16][failed verification]
Radeon 3D code is split into six drivers, according to GPU technology: the radeon, r200 and r300 classic drivers and r300g, r600g and radeonsi
- Radeon supports the R100series.
- R200 supports the R200series.
- R300g supports pre-R500.
- R600g supports all .
- Radeonsi supports all Rx 200(Southern Islands, Sea Islands and Volcanic Islands).
An up-to-date feature matrix is available,[17] and there is support for Video Coding Engine[18] and Unified Video Decoder.[19][20] The free and open-source Radeon graphics device drivers are not reverse-engineered, but are based on documentation released by AMD without the requirement to sign a non-disclosure agreement (NDA).[21][22][23] Documentation began to be gradually released in 2007.[24][25][26]
In addition to providing the necessary documentation, AMD employees contribute code to support their hardware and features.[18]
All components of the Radeon graphics device driver are developed by core contributors and interested parties worldwide. In 2011, the r300g outperformed Catalyst in some cases.
AMDGPU
At the 2014 Game Developers Conference, AMD announced that they were exploring a strategy change to re-base the user-space part of Catalyst on a free and open-source DRM kernel module instead of their proprietary kernel blob.[27]
The release of the new AMDGPU kernel module and stack was announced on the dri-devel mailing list in April 2015.[28] Although AMDGPU only officially supports GCN 1.2 and later graphics cards,[29] experimental support for GCN 1.0 and 1.1 graphics cards (which are only officially supported by the Radeon driver) may be enabled via a kernel parameter.[30][31] A separate libdrm, libdrm-amdgpu, has been included since libdrm 2.4.63.[32]
The radeonsi 3D code mentioned in the previous Radeon paragraph is also used with amdgpu; the 3D driver has back ends for both radeon and amdgpu.
Nvidia
Nvidia's free and open-source driver is named nv.[35] It is limited (supporting only 2D acceleration), and Matthew Garrett, Dirk Hohndel and others have called its source code confusing.[36][37][38] Nvidia decided to deprecate nv, not adding support for Fermi or later GPUs and DisplayPort, in March 2010.[39]
In December 2009, Nvidia announced they would not support free graphics initiatives.[40] On 23 September 2013, the company announced that they would release some documentation of their GPUs.[41]
Nouveau is based almost entirely on information gained through
Nvidia distributes proprietary device drivers for Tegra through OEMs and as part of its Linux for Tegra (formerly L4T) development kit.[49] Nvidia and a partner, Avionic Design, were working on submitting Grate (free and open-source drivers for Tegra) upstream of the mainline Linux kernel in April 2012.[50][51] The company's co-founder and CEO laid out the Tegra processor roadmap with Ubuntu Unity at the 2013
Nvidia's Unified Memory driver (nvidia-uvm.ko), which implements memory management for Pascal and Volta GPUs on Linux, is MIT licensed. The source code is available in the Nvidia Linux driver downloads on systems that support nvidia-uvm.ko.
In May 2022 Nvidia Announced a new initiative and policy to open source its
Intel
Intel has a history of producing (or commissioning) open-source drivers for its graphics chips, with the exception of their PowerVR-based chips.[54] Their 2D X.Org driver is called xf86-video-intel. The kernel mode-setting driver in the Linux kernel does not use the video BIOS for switching video modes; since some BIOSes have a limited range of modes, this provides more reliable access to those supported by Intel video adapters.
The company worked on optimizing their free Linux drivers for performance approaching their Windows counterparts, especially on Sandy Bridge and newer hardware where performance optimizations have allowed the Intel driver to outperform their proprietary Windows drivers in certain tasks, in 2011.[55][56][57] Some of the performance enhancements may also benefit users of older hardware.[58]
Support for Intel's LLC (Last Level Cache, L4-Cache,
Matrox
Matrox develops and manufactures the Matrox Mystique, Parhelia, G200, G400 and G550. Although the company provides free and open-source drivers for their chipsets which are older than the G550; chipsets newer than the G550 are supported by a closed-source driver.
S3 Graphics
S3 Graphics develops the S3 Trio, ViRGE, Savage and Chrome, supported by OpenChrome.[62]
Arm Ltd
Panfrost is a reverse-engineered driver effort for Mali Txxx (Midgard) and Gxx (Bifrost) GPUs. Introducing Panfrost talk was presented at X.Org Developer's Conference 2018. As of May 2019, the Panfrost driver is part of the mainline Linux kernel.[68]
ARM has indicated no intention of providing support for their graphics acceleration hardware licensed under a free and open-source license. However, ARM employees sent patches for the Linux kernel to support their ARM HDLCD
Imagination Technologies
Vivante
Vivante Corporation is a fabless semiconductor company which licenses semiconductor intellectual property cores and develops the GCxxxx series of GPUs. A Vivante proprietary, closed-source Linux driver consists of kernel- and user-space parts. Although the kernel component is open-source (GPL), the user-space components—consisting of the GLES(2) implementations and a HAL library—are not; these contain the bulk of the driver logic.
Wladimir J. van der Laan found and documented the state bits, command stream and shader ISA by studying how the blobs work, examining and manipulating command-stream dumps. The Etnaviv Gallium3D driver is being written based on this documentation. Van der Laan's work was inspired by the Lima driver, and the project has produced a functional-but-unoptimized Gallium3D LLVM driver. The Etnaviv driver has performed better than Vivante's proprietary code in some benchmarks, and it supports Vivante's GC400, GC800, GC1000, GC2000, GC3000 and GC7000 series.[73] In January 2017, Etnaviv was added to Mesa with both OpenGL ES 2.0 and Desktop OpenGL 2.1 support.[74]
Qualcomm
In August 2013, the kernel component of freedreno (MSM driver) was accepted into mainline and is available in Linux kernel 3.12 and later.
Broadcom
On February 28, 2014 (the Raspberry Pi's second anniversary), Broadcom and the Raspberry Pi Foundation announced the release of full documentation for the VideoCore IV graphics core and a complete source release of the graphics stack under a
Other vendors
Although Silicon Integrated Systems and VIA Technologies have expressed limited interest in open-source drivers, both have released source code which has been integrated into X.Org by FOSS developers.[38] In July 2008, VIA opened documentation of their products to improve its image in the Linux and open-source communities.[97] The company has failed to work with the open-source community to provide documentation and a working DRM driver, leaving expectations of Linux support unfulfilled.[98] On January 6, 2011, it was announced that VIA was no longer interested in supporting free graphics initiatives.[99]
DisplayLink announced an open-source project, Libdlo,[100] with the goal of bringing support for their USB graphics technology to Linux and other platforms. Its code is available under the LGPL license,[101] but it has not been integrated into an X.Org driver. DisplayLink graphics support is available through the kernel udlfb driver (with fbdev) in mainline and udl/drm driver, which in March 2012 was only available in the drm-next tree.
Non-hardware-related vendors may also assist free graphics initiatives.
Open hardware projects
Project VGA aims to create a low-budget, open-source VGA-compatible video card.[104] The
The Nyuzi,
If a project uses FPGAs, it generally has a partially (or completely) closed-source toolchain. There are currently a couple of open-source toolchains available, however, for Lattice-based FPGAs (notably for iCE40 and ECP5 boards) which utilize Project IceStorm,[110] and Trellis,[111] respectively. There is also a larger, ongoing effort to create the "GCC of FPGAs" called SymbiFlow[112] which includes the aforementioned FPGA toolchains as well as an early-stage open-source toolchain for Xilinx-based FPGAs.
See also
- 3D computer graphics
- Cell (processor)
- Direct Rendering Infrastructure (DRI)
- Intel GMA
- Open Graphics Project
References
- ^ Theo de Raadt (2006-12-03). "Open Documentation for Hardware". Presentation slides from OpenCON 2006. Retrieved 2007-02-01.
- ^ "What does "binary" means in device driver?". Retrieved November 14, 2017.
- ^ "3.9: "Blob!"". OpenBSD. Retrieved 2007-02-12.
- ^ "Linux - How does the Rapid7 Advisory R7-0025 affect the NVIDIA Unix driver?".
- ^ "a/lt-binary".
- ^ Kroah-Hartman, Greg. "Myths, Lies, and Truths about the Linux kernel". linux kernel monkey log.
- ^ Peter Gutmann (2006-12-26). "A Cost Analysis of Windows Vista Content Protection". Retrieved 2007-01-28.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ Linux Weekly News, Aug 14, 2006: X.org, distributors, and proprietary modules
- ^ Greg Kroah-Hartman (2006). "Myths, Lies, and Truths about the Linux kernel". Linux Symposium.
- ^ "The Linux Kernel Driver Interface". Archived from the original on 2013-11-04. Retrieved 2014-03-04.
- ^ "SamsungGalaxyBackdoor". 2014-02-04.
- ^ "Android Nears 80% Market Share In Global Smartphone Shipments, As iOS And BlackBerry Share Slides, Per IDC". 7 August 2013.
- ^ "Atomic Display Framework".
- ^ "Direct3D 9 state tracker". 16 July 2013. Archived from the original on 20 July 2013. Retrieved 15 November 2017.
- ^ "Index of /doc/Documentation/fb/". Retrieved 15 November 2017.
- ^ Details of Debian package firmware-linux-nonfree in Stable Debian.org
- ^ "Radeon Feature". Retrieved 15 November 2017.
- ^ a b "initial VCE support in Linux kernel and in the Mesa driver". 4 February 2014.
- ^ "drm-next-3.15 Feb 18". 18 February 2014.
- ^ "drm-next-3.15 Mar 04". 4 March 2014.
- ^ "AMD Developer Guides". Archived from the original on 2013-07-16.
- ^ "Documentation provided by AMD".
- ^ "AMD 3D Documentation list". Archived from the original on 2013-10-07.
- ^ "AMD to open up graphics specs". LWN.net. 2007-09-05. Retrieved 2014-07-15.
- ^ "AMD: GPU Specifications Without NDAs!". 2007-09-10. Retrieved 2014-07-15.
- ^ David Airlie (2007-09-13). "AMD hand me specs on a CD". Archived from the original on 2012-10-22. Retrieved 2014-07-15.
- ^ "AMD exploring new Linux driver Strategy". 2014-03-22. Retrieved 2014-03-23.
- ^ "Initial AMDGPU driver release". 2015-04-20. Retrieved 2016-04-26.
- ^ "AMD Moves Forward With Unified Linux Driver Strategy, New Kernel Driver". Phoronix.
- ^ "AMDGPU driver documentation". Freedesktop.org.
- ^ "AMD Unleashes Initial AMDGPU Driver Support For GCN 1.0 / Southern Islands GPUs". Phoronix.
- ^ "libdrm 2.4.63". 2015-08-14.
- ^ "Support for EGL on 32-bit platforms". 2013-10-04. Retrieved 2014-07-15.
- ^ "lib32-nvidia-utils 340.24-1 File List". 2014-07-15.
- ^ "X.org nv driver page". 2013-05-20.
- ^ "Patch by Dirk Hohndel". 1998-11-18. Archived from the original on 2014-02-01. Retrieved 2014-07-15.
... opposed to such obfuscated code. We do not regard this as free software according to our standards
- ^ "Nouveau – The community & past, current and future developments" (PDF). 2011-09-13. Retrieved 2014-07-15.
- ^ a b David M. Airlie (2006-07-19). "Open Source Graphic Drivers—They Don't Kill Kittens" (PDF). Proceedings of the Linux Symposium Volume One. Ottawa, Ontario, Canada. Archived from the original (PDF) on 2007-02-08. Retrieved 2007-01-28.
- Phoronix. 2010-03-26.
- Phoronix. 2009-12-14.
- ^ "Nvidia offers to release public documentation on certain aspects of their GPUs". 2013-09-23. Retrieved 2013-09-24.
- ^ "Nouveau: Accelerated Open Source driver for nVidia cards". Archived from the original on 2014-07-23. Retrieved 2006-08-10.
- ^ "The Nouveau driver graduates from staging". LWN.net. 2012-03-23.
- ^ "Engineering names for Nvidia".
- ^ "drm/nouveau: initial support for GK20A (Tegra K1)". 2014-01-31.
- Phoronix. 2014-06-12.
- ^ "Nouveau Driver Feature Matrix". Retrieved 16 November 2017.
- ^ "Tegra-re". GitHub. Retrieved 16 November 2017.
- ^ "Linux For Tegra Archive". 30 January 2014. Retrieved 16 November 2017.
- ^ Mayo, Jon (2012-04-20). "[RFC 0/4] Add NVIDIA Tegra DRM support". dri-devel (Mailing list). Retrieved 2012-08-21.
- ^ Larabel, Michael (2012-04-11). "A NVIDIA Tegra 2 DRM/KMS Driver Tips Up". Phoronix Media. Retrieved 2012-08-21.
- ^ "GTC 2013: NVIDIA's Tegra Roadmap (6 of 11)". YouTube. Archived from the original on 2021-12-21. Retrieved 2013-07-10.
- ^ "NVIDIA Releases Open-Source GPU Kernel Modules". 2022-05-19. Retrieved 2022-06-07.
- ^ An overview of graphic card manufacturers and how well they work with Ubuntu Ubuntu Gamer, January 10, 2011 (Article by Luke Benstead); (copy of the article)
- Phoronix. 2011-03-22. Retrieved 2011-03-23.
- Phoronix. 2011-03-31. Retrieved 2011-03-31.
- Phoronix. 2011-05-23. Retrieved 2011-05-23.
- Phoronix. 2011-05-25. Retrieved 2011-05-25.
- ^ "drm/i915: Use eLLC/LLC by default when available".
- ^ "drm/i915: Use Write-Through cacheing for the display plane on Iris".
- ^ "Intel Has 20~30 Full-Time Linux Graphics Developers". 2013-02-02.
- ^ "OpenChrome". Retrieved 16 November 2017.
- ^ phoronix (6 February 2012). "Phoronix.com - FOSDEM 2012 - Open-Source ARM Mali". Archived from the original on 2021-12-21 – via YouTube.
- ^ Phoronix, Jan 21 2012: An Open-Source, Reverse-Engineered Mali GPU Driver
- ^ "Quake 3 Arena timedemo on top of the lima driver!". Archived from the original on 2013-02-09.
- ^ "Lima DRM driver [LWN.net]". lwn.net.
- ^ drm/lima: driver for ARM Mali4xx GPUs}
- ^ drm/panfrost: Add initial panfrost driver
- ^ "drm: Add support for the ARM HDLCD display controller". Linux kernel mailing list. 2015-12-11.
- ^ "Initial support for ARM Mali Display Controller". Linux kernel mailing list. 2016-04-01.
- ^ Free Software Foundation, Apr 25, 2005: High Priority Free Software Projects
- ^ "Imagination Tech Publishes Open-Source PowerVR Vulkan Driver For Mesa". www.phoronix.com. Retrieved 2022-04-19.
- ^ "laanwj/etna_viv". GitHub.
- ^ "etnaviv: gallium driver for Vivante GPUs".
- ^ Michael Larabel (14 April 2012). "An Open-Source Graphics Driver For Snapdragon". Phoronix. Retrieved 15 April 2012.
- ^ Soulskill (14 April 2012). "Open-Source Qualcomm GPU Driver Published". Slashdot. Retrieved 15 April 2012.
- ^ Rob Clark (14 April 2012). "Fighting back against binary blobs!". Linaro. Retrieved 15 April 2012.
- ^ Freedreno, 15 April 2012 Archived 24 October 2012 at the Wayback Machine
- ^ "Mesa/Gallium3D Gets Its First ARM SoC GPU Driver - Phoronix".
- ^ "Mesa (master): r600g: add Richland APU pci ids". 15 March 2013.
- ^ Rob Clark (29 July 2012). "freedreno update: first renders shader assembler!". Retrieved 16 August 2012.
- ^ Rob Clark (5 August 2012). "textured cube (fullscreen!)". Retrieved 16 August 2012.
- ^ Rob Clark (15 August 2012). "Open Source lolscat!". Retrieved 16 August 2012.
- ^ "Open ARM GPU drivers – Freedreno". FOSDEM. 2013-02-02. Retrieved 2014-07-15.
- ^ "Merge the MSM driver from Rob Clark". kernel.org. 2013-08-28. Retrieved 2014-06-04.
- ^ "xf86-video-freedreno 1.2.0". freedesktop.org. 2014-07-14.
- ^ "Add support for adreno 430". Retrieved 15 November 2017.
- ^ "Index Mesa-Mesa". Retrieved 15 November 2017.
- ^ Anholt, Eric (2014-06-17). "New Job at Broadcom". Archived from the original on 2015-04-07.
- ^ "Phoronix on the Raspberry Pi GPU".
- ^ "Open Source ARM userland - Raspberry Pi". 24 October 2012.
- ^ "Open Source ARM userland - Raspberry Pi". 24 October 2012. Archived from the original on 30 October 2012. Retrieved 1 November 2012.
- ^ "hermanhermitage/videocoreiv". GitHub.
- ^ "Raspberry Pi marks 2nd birthday with plan for open source graphics driver". 28 February 2014.
- ^ Upton, Eben (28 February 2014). "A birthday present from Broadcom - Raspberry Pi". Raspberry Pi Foundation. Retrieved 8 July 2019.
- ^ "vc4: Initial skeleton driver import". The Mesa 3D Graphics Library. 2014-08-09.
- Michael Larabel (2008-07-26). "VIA Publishes Three Programming Guides". Phoronix. Retrieved 2008-08-04.
- Michael Larabel (2009-11-21). "VIA's Linux TODO List... Maybe Look Forward To 2011?". Phoronix. Retrieved 2009-12-30.
- Michael Larabel)
- ^ "Libdlo". Retrieved 16 November 2017.
- ^ "DisplayLink Releases Linux Source Code for its USB Graphics Processors" (Press release). DisplayLink. 2009-05-15. Retrieved 2009-05-15.
- Michael Larabel)
- Michael Larabel)
- ^ "Home of Project VGA, the low budget, open source, VGA compatible video card". 090503 wacco.mveas.com
- ^ "Linux Fund: OGD1". Open Graphics Project. 2010-09-23. Retrieved 2011-11-04.
- ^ Bourdeauducq, Sebastien (June 2010). "A performance-driven SoC architecture for video synthesis" (PDF). Archived from the original (PDF) on 2011-07-27. Retrieved 2010-11-05.
- ^ "Nyuzi is an experimental GPGPU processor". GitHub. June 2021.
- ^ "SOC Test Environment". GitHub.
- ^ "Running on Terasic DE2-115 FPGA board". GitHub.
- ^ "Project IceStorm Homepage". 21 January 2022.
- ^ "Project Trellis Repository". GitHub. 30 May 2021.
- ^ "SymbiFlow Homepage".
External links
- Linux graphics drivers from Intel
- Best Graphics Card For Linux
- NVIDIA's Unix drivers portal page
- Project VGA
- Direct3D 9 state tracker on Gallium3D
- d3d1x: add new Direct3D 10/11 COM state tracker for Gallium
- Freedreno homepage
- Freedreno/Gallium update
- Phoronix Test Suite
- Status updates for three graphics drivers (Nouveau, amdgpu and Etnaviv) LWN.net 2015