Free and open-source graphics device driver

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Everything is executed on the CPU. Everything? Not quite... some data is sent to the GPU, along with GPU instruction to be executed on the GPU. The rendered results are not sent back, are stored in a framebuffer. The content of a framebuffer is sent to the display controller.

A free and open-source graphics device driver is software that controls computer graphics hardware and supports graphics rendering APIs and is distributed at no cost with openly shared source code. Graphics device drivers are written for specific hardware to work within the context of a specific operating system kernel and to support a range of APIs used by applications to access the graphics hardware. They may also control output to the display, if the display driver is part of the graphics hardware. Most free and open source graphics device drivers are developed via the Mesa project.

All hardware developers provide device drivers for their products over a range of operating systems. But some developers of graphics hardware provide no free and open-source drivers for their hardware and they provide little or no technical documentation to support independent development of free and open-source device drivers for their products. The free and open source device drivers available for hardware with support for independent driver development are generally of much higher quality in terms of completeness, stability, security and performance than drivers for hardware that lack such support.

Drivers without freely (and thus legally) available source code are commonly referred to 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 to both end-users and package maintainers. These problems affect system stability, overall system security, and performance and are the main reason for the independent development of free and open-source drivers. When no technical documentation is available, an understanding of the underlying hardware is often gained by "clean room reverse engineering." Based on this understanding, device drivers may be written and legally published under any chosen software license.

There are rare and special cases, where manufacturers' driver source code is openly available in the Internet, but not under a free license. This means that the code can be studied and altered for personal usage, but the altered (and usually even the original) source code cannot be freely distributed, so problem solutions cannot be shared, significantly reducing the utility of such drivers in comparison to completely free and open-source drivers.

Problems with binary drivers[edit]

Illustration of the Linux graphics stack

Viewed from the free and open-source software developer's perspective[edit]

There are a number of objections to binary-only drivers. There are philosophical and ethical objections, with some feeling that drivers distributed without source code are against the beliefs of the free software movement. There are very pragmatic objections regarding copyright, security, reliability and development concerns. As part of a wider campaign against binary blobs, OpenBSD lead developer Theo de Raadt has pointed out that with a binary driver there is "no way to fix it when it breaks (and it will break)" and that once a product which relies on binary drivers is declared to be end-of-life by the manufacturer, it is effectively "broken forever."[1] The project has also asserted that binary drivers "hide bugs and workarounds for bugs,"[2] a comment that has been somewhat vindicated by flaws found in binary drivers, including in October 2006 an exploitable bug in Nvidia's 3D drivers discovered by Rapid7. It is speculated that this bug has existed since 2004, although Nvidia have denied this, asserting that the issue was only communicated to them in July 2006 and that the 2004 bug was a bug in X.Org, not in Nvidia's driver.[3] Another problem with binary drivers is that they often do not work with current versions of open source software, and almost never support development snapshots of open source software - e.g. 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. Furthermore features like kernel mode-setting cannot be added to binary drivers by anyone but the vendors, which prevents their inclusion if the vendor lacks capacity or interest.

In the Linux kernel development community, Linus Torvalds has made strong statements on the issue of binary-only modules, asserting: "I refuse to even consider tying my hands over some binary-only module", and continuing: "I want people to know that when they use binary-only modules, it's THEIR problem".[4] Another kernel developer, Greg Kroah-Hartman, has commented 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."[5]

Writer and computer scientist Peter Gutmann has expressed concerns 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 as it "requires that the operational details of the device be kept confidential."[6]

In the case of binary drivers there are also objections due to free software philosophy, software quality and security concerns.[7] There are also concerns that the redistribution of closed source Linux kernel modules may be illegal.[8]

By choice, the Linux kernel has never maintained a stable in-kernel Application binary interface.[9]

There are also some concerns that proprietary drivers may even contain backdoors, like one that was found in Samsung Galaxy series modem drivers.[10]

Viewed from the hardware developer's perspective[edit]

In the future libGL-fglrx-glx could use the libDRM of the radeon open-source driver instead of the proprietary binary blob, since most of the investment is in the user-space driver.

Application-specific integrated circuitry / Integrated circuitry/ microprocessors, when designed with the primary goal of efficiency, with regards to power consumption, silicon usage, and the actual acceleration of the calculations required to rasterise 3D wire-frame models, are actually pretty simple and straight forward.

When applications, such as a 3D game engine or a 3D computer graphics software shunt calculations from the CPU to the GPU, they usually use a special purpose API, like e.g. OpenGL or Direct3D, and do not address the hardware directly (see also Cell (microprocessor)). All the translation from API calls to actual GPU opcodes, is done by the device driver, hence the device driver contains a considerable amount of know-how, and is the constant object of optimization. This takes time and involves considerable financial investments. Thus alone the leakage of source code, not even published under some free license, would give the competition an advantage, by having the own know-how plus the know-how gained by looking at the accumulation of the know-how leaked. Especially potential newcomers to the business of graphic acceleration ASICs would gain a considerable amount of know-how, without bearing the very high costs involved in the development of the know-how.

In the desktop computer market, the hardware scene was long time dominated by the x86/x86-64 instruction set and the PC and by GPUs available for the PC. For a long time, there were only three major competitors: Nvidia, AMD and Intel. The main competing factor was raw performance in 3D computer games (which is not only achieved by much silicon by also by the efficient translation of API calls into GPU opcodes), price for office hardware. The display driver is an inherent part of the graphics card, and so is the video decoder, that is silicon designed to assist calculations necessary for the decoding of Video streams, like e.g. the Daala (video codec). The market for PC has also been dwindling for the last couple of years. It seems highly unlikely new competitors will enter this market, and it is hard to say, how much more know-how one company would gain, by having a glance at the source code of the drivers of the other company. Intel maintain only free and open-source driver for Linux.

The mobile sector however, presents itself as an antonym:

  • The functional blocks (i.e. the display driver ASIC, the 3D acceleration ASIC, the 2D acceleration ASIC, Video decoding and Video encoding ASIC) are separate SIP (SIP) blocks, since the hardware devices are very different from each other. Some portable media player do require a display driver and gains from Video decoding acceleration, but do not require any sort of 3D acceleration, etc.
  • The development goal is not only raw 3D performance, but also system integration, power consumption and 2D capabilities. There is also an approach to abandon the traditional method (Vsync) of updating the display and make better use of the possibilities that came with the sample and hold-technology to significantly lower power consumption.
  • There are more competitors on the market and there are newcomers (e.g. while Imagination has been around since before 2000, Vivante entered this market in 2005. Ingenic experimented with some own SIP solutions for graphics.)
  • Usually there is no distinct graphics memory, thus the CPU and the GPU share the main memory, which is considerably slower the distinct graphics memory in graphics cards for Desktop PCs. Yet, this can greatly benefit power consumption and performance when supported by the software architecture, because data does not have to be copied from the one to the other memory.

The growing mobile market, the unsatisfied requirements of mobile devices and the advantages that can be gained by the development of new techniques leaves much more room for the existing competition and for new competitors entering the market. Thus the SIP and the software supporting it (the device drivers and maybe even the software infrastructure for these device drivers, i.e. the entire graphics stack) can be considered more prone to discretion and a quick launch to market.

When looking at the fact that during the second quarter of 2013, 79.3% of smartphones sold worldwide were running some version of Android,[11] it is clear that the Linux kernel is dominant on smartphones. Thus hardware developers have a huge incentive to deliver excellent Linux drivers for their hardware, but due to the competition, no incentive what-so-ever to make these driver free and open-source.

Projects like libhybris try to combine the power of the existent Linux android drivers with different platforms than Android. Additionally there are ongoing efforts to write free and open-source drivers by independent developers.

Performance comparison[edit]

GLX gears is not a benchmark

A widely known source for performance information is the free3d.org site,[12] which collects 3D performance information—specifically glxgears frame rates—submitted by users. On the basis of what it concedes is an inadequate benchmark,[13] the site currently lists ATI's Radeon HD 4670 as recommended for "best 3D performance."

A well-known source for real-world testing is Phoronix. They routinely run benchmarks comparing involving the free driver as well. E.g.

The-SoC-GPU-driver-interview

Software architecture[edit]

Mesa /DRI and Gallium3D have different driver models. Both share a lot of free and open-source code
An example matrix for implementing the Gallium3D driver model. Through the introduction of the Gallium3D Tracker Interface and the Gallium3D WinSys Interface, only 18 instead of 36 modules are required. Each WinSys module can work with each Gallium3D device driver module and with each State Tracker module.

The framework on Unix-like operating systems for graphics device drivers has been the constant objective of developments and thus change.

Video Electronics Standards Association[edit]

In general, the vesa driver supports most graphics cards without acceleration and with display resolutions limited to a set of resolutions programmed in the video BIOS by the manufacturer.

Also see: Kernel Documentation/fb or the Phoronix Test Suite

Direct Rendering Infrastructure[edit]

Gallium3D[edit]

Gallium3D splits the user space driver into three components by introducing two additional interfaces: the Gallium3D Tracker interface and the Gallium3D WinSys Interface. This has certain advantages and also disadvantages. Drivers shares a lot of code with DRI-drivers, and for example Intel, still only writes DRI-drivers. A lot of source code is of course shared between the drivers implementing DRI or Gallium3D respectively.

Free and open-source API implementations[edit]

Mesa 3D is the only available free and open-source implementation of OpenGL, OpenGL ES, OpenVG, GLX, EGL and OpenCL.

Wine contains an implementation of the Direct3D version 9. Another Wine component used to translate Direct3D calls into OpenGL calls and it worked on top of the OpenGL implementation in Mesa 3D. Since the Gallium3D State Tracker for D3D9 is available, Wine was adapted, so that this translation is no longer taking place. The Gallium3D State Tracker for D3D9, device drivers have a direct interface to the Direct3D 9 API, increasing the performance by a factor of two and more.

Annotation: Gallium3D State Trackers are also not an implementation of a 3D API like OpenGL or Direct3D, but are a component of the device driver, and are meant as an interface to an API (an API to an API (sic!)). As of the time of this writing, there is was a fully functional State Tracker for Direct3D version 9 written in C++ and an un-maintained one for Direct3D versions 10 and 11 written in C.

History[edit]

The Linux graphics stack have been prone to a long evolution over the years, with some unnecessary detours due to the X Window System core protocol. Understanding this history should help comprehend the current design and its late arrival.

Free and open-source drivers[edit]

In general, the VESA driver supports most graphics cards without acceleration and with display resolutions limited to a set of resolutions programmed in the video BIOS by the manufacturer.

Also see: Kernel Documentation/fb or the Phoronix Test Suite

ATI/AMD[edit]

The proprietary driver by AMD is called fglrx and is distributed as part of AMD Catalyst Linux. A current version can be downloaded from the Internet and some Linux distributions contain it in their repositories.
The FOSS drivers for AMD/ATI GPUs are all being developed under the name radeon (xf86-video-ati or xserver-xorg-video-radeon). The radeon drivers provide 2D and Xv/X-Video Bitstream Acceleration acceleration, with 3D support available for almost all supported cards. However, the drivers still have to load proprietary microcode into the GPU to enable hardware acceleration.[15] Full Modesetting support is also available. There is also the RadeonProgram, which aims to have a community maintained application compatibility database similar to the Wine project's AppDB.

radeon 3D code is split into five parts: the radeon and r200 classic Mesa drivers and r300g, r600g, radeonsi Gallium3D drivers: (the letter g indicates that the driver is written conforming to Gallium3D)

On October 1, 2013, AMD released the missing documentation for their newest products.[17]

An up-to-date feature matrix is available at Freedesktop.org: radeon feature matrix

ATI released programming specifications for a number of their chipsets in 2007, 2008 and 2009.[18][19][20][21][22] AMD also does some active development and support for the radeon driver.[23] This is in direct contrast to AMD's main competitor in the graphics field Nvidia, which does offer its own proprietary driver similar to AMD Catalyst, but does not provide any support or assistance to any free graphics initiatives.[24] AMD had just two engineers working full-time on the free drivers, namely Alex Deucher and Richard Li, although they decided to work to expand their free graphics team.[25] In May 2011 they hired three more developers, with one of the developers going to be working on the desktop graphics stack and the other two on embedded open-source priorities.[26] The developers in question have now been confirmed to be veteran graphics coders Michel Dänzer (taking over from Richard) and Christian König,[27] as well as Tom Stellard.

In January 2011, work on performance optimizations has greatly enhanced the 3D performance of the radeon driver, especially for users of R300g.[28] In some select cases, the R300g driver can even outperform a legacy Catalyst driver in terms of 3D performance.[29] Various options and tweaks can also be enabled to optimize the free driver's speed and offer more competitive performance.[30]

There is support for both, Video Codec Engine[31] and Unified Video Decoder.[32][33]

Nvidia[edit]

A screenshot of REnouveau, which is a program that collects data for most of nouveau's reverse engineering work

The proprietary driver by Nvidia is called geforce. A current version can be downloaded from the Internet and some Linux distributions, e.g. Ubuntu, contain it in their repositories.
One FOSS driver for Nvidia GPUs is called nv.[34] It is 2D-only, and some people, e.g. Dirk Hohndel,[35][36] claim it is obfuscated.[37][38] It was maintained by Nvidia themselves. It features neither 3D acceleration nor motion compensation.[38][39] On March 26, 2010, Nvidia announced that it would stop supporting new technologies and GPUs in nv, stating that

  • Nvidia will continue to support the existing functionality and existing level of acceleration in the nv driver for existing GPUs, on existing, and (within reason) future, X server versions.
  • Nvidia will not support the xf86-video-nv driver on Fermi or later GPUs.
  • Nvidia will not support DisplayPort, on any GPU, in the xf86-video-nv driver.
—Andy Ritger, Message to the x.org mailing list[40][41]

NVidia in the past, provided documentation for the older RIVA TNT series chipsets.

While the proprietary Nvidia drivers support the GLX interface, e.g. libgl-nvidia-glx[42] Nvidia did not announce plans to support the EGL interface, upon which e.g. Wayland relies on. However, the proprietary Nvidia driver 331.13 BETA from 4 October 2013 supports the EGL API.[43]

Another FOSS driver for Nvidia GPUs is called nouveau. This project aims to reverse engineer Nvidia's GPUs to produce 3D acceleration for X.Org/Wayland utilizing Gallium3D. Already at an early stage of development, several Linux distributions, starting with Fedora,[44] have chosen to use nouveau as the default FOSS driver for Nvidia cards.[45][46] The nouveau driver can already manage to offer competitive 3D performance on lower end Nvidia graphics hardware, when compared to the official binary driver.[47][48] On March 26, 2012, the Nouveau driver was marked as stable and promoted from the staging area of the Linux kernel.[49]

On 23 September 2013[50] Nvidia publicly announced, that they would release some documentation about their GPUs.

An up-to-date feature matrix is available at Freedesktop.org: Nouveau Driver Feature Matrix

Nouveau supports: Tesla (microarchitecture)- and earlier, Fermi (microarchitecture)-, Kepler (microarchitecture)-, and Maxwell (microarchitecture)-based Nvidia GPUs. Volta (microarchitecture)-based are not yet released.

tegra-re github:tegra-re is the name of the project, that is working in reverse-engineering nVidia's Tegra series of GPUs for embedded devices.

Nvidia distributes proprietary device drivers for Tegra through OEMs and as part of its "Linux for Tegra" (formerly "L4T") development kit. As of April 2012, due to different "business needs" from that of their GeForce line of graphics cards, Nvidia and one of their Embedded Partners, Avionic Design GmbH from Germany, are also working on submitting free and open-source drivers for Tegra upstream to the mainline Linux kernel.[51][52] Nvidia co-founder & CEO laid out the Tegra processor roadmap using Ubuntu Unity in GPU Technology Conference 2013.[53]

Intel[edit]

Intel has a long history of producing or commissioning open source drivers for its graphics chips, with the exception of their PowerVR-based chips that severely lack documentation.[23] The driver development is outsourced to Tungsten Graphics (acquired by VMware 2008-11-26).

There are currently two versions of the Intel X.Org driver, the xorg-video-i810 driver which supports the i810 and a number of more recent chipsets[54] and the updated xorg-video-intel driver that supports the same hardware, with the recent versions 2.0 and 2.1 adding support for later chips, including the G33, Q33 and Q35.[55]

In addition, the xorg-video-intel driver (sometimes known as the "modesetting driver") does not use the video BIOS for switching video modes; as some BIOSes include only a limited range of modes, this provides more reliable access to those supported by Intel video cards.

Unlike the radeon and nouveau drivers, Intel does not intend to utilize the Gallium3D framework for its graphics drivers.[56] Intel has also recently put work into optimizing their free Linux drivers to have closer performance to their Windows counterparts, especially on Sandy Bridge hardware where various performance optimizations have now allowed the free Intel driver to be able to outperform their proprietary Windows drivers at certain tasks.[57][58][59] Some of these performance enhancements can also benefit users of older hardware.[60]

Support for Intel's LLC (Last Level Cache, L4-Cache, Crystalwell, Iris Pro) was added in Linux kernel 3.12[61][62]

Intel has more 20 to 30 full-time Linux graphics developers.[63]

Matrox[edit]

Matrox develops and manufactures these products:

Matrox provides free and open source drivers for all their chipsets older than the G550; chipsets newer than the G550 are only supported by a closed source driver.

S3 Graphics[edit]

S3 Graphics develops these products:

ARM[edit]

ARM Holdings is a fabless semiconductor company which licenses SIP cores. They are known for the licensing the ARM instruction set and CPUs based upon it but they also develop and license the Mali series of GPUs. On January 21, 2012, Phoronix reported that Luc Verhaegen was driving a reverse-engineering attempt aimed at the ARM Holdings Mali series of GPUs, specifically the Mali-200 and Mali-400 versions. The reverse-engineering project was presented at FOSDEM, February 4, 2012.[64][65] On February 2, 2013, Verhaegen demonstrated Quake III Arena in timedemo mode, running on top of the Lima driver.[66]

Imagination Technologies[edit]

Imagination Technologies is a fabless semiconductor company which licenses SIP cores. They are known for the licensing the MIPS instruction set and CPUs based upon it but probably even more for developing and licensing the PowerVR series of GPUs. There are a couple of PowerVR based-Intel GPUs but the PowerVR is widely used in mobile SoCs. Imagination Technologies do not provide a FOSS driver nor any documentation for their products. Due to its vast appearance in embedded devices, the Free Software Foundation has put reverse-engineering of the PowerVR driver on a high-priority project list.[67]

PowerVR reverse engineering project

Vivante[edit]

Vivante is a fabless semiconductor company which licenses SIP cores. They develop the GCxxxx series of GPUs. There is a proprietary and closed source Linux driver from Vivante consisting of a kernel space and a user space part. The kernel component is available as open source (GPL) however the user space components which consist of the GLES(2) implementations and a HAL library are not. These, however, contain the bulk of the driver logic.

Wladimir J. van der Laan found out and documented the state bits, command stream, and shader ISA by studying how these blobs work. He studied these by examining and manipulating command stream dumps. Based upon this documentation the Gallium3D driver etna_viv is being written. Wladimir's work was inspired by libv. Due to the simplicity of the vivante hardware, etna_viv has surpassed libv has achieved more quickly than similar projects. The project has produced a functional-but-unoptimized Gallium3D LLVM driver. etna_viv has surpassed vivante's own proprietary code in some benchmarks. It supports Vivante's product line of GC400 Series, GC800 Series, GC1000 Series, GC2000 Series, GC4000 Series, GC5000 Series and GC6000 Series.[68]

Qualcomm[edit]

Qualcomm develops and manufactures the Adreno (former ATI Imageon) GPU series, mostly as part of their Snapdragon (system on chip). In 2012, Phoronix and Slashdot reported that Rob Clark was working on reverse-engineering drivers for the Adreno GPU series.[69][70] Clark wrote in a referenced blog post that he is doing the project in his spare time, and that the Qualcomm platform was his only viable target for working on open 3D graphics since his employers (Texas Instruments and Linaro) were affiliated with the Imagination PowerVR and ARM Mali cores which would otherwise have been his primary targets, and that he already had working command streams for 2D support, and that 3D commands seemed to have the same characteristics.[71] The driver code was published on Gitorious under the name freedreno.[72] It has since been moved to Mesa.[73][74] In 2012, a working shader assembler was completed[75] and demonstration versions were developed for texture mapping[76] and phong shading[77] using the reverse-engineered shader compiler. At FOSDEM, February 2, 2013, Clark demonstrated Freedreno with support for Gallium3D running desktop compositing, the XBMC media player and Quake III Arena.[78] As of September 2013, freedreno has been adopted into mainline Linux, and will be part of Linux 3.12.[79]

Broadcom[edit]

Broadcom develops and designs the VideoCore GPU series as part of their SoCs. Due to the fact that it is used by the Raspberry Pi there has been strong interest in a FOSS driver for VideoCore.[80] and on October 24, 2012 the Raspberry Pi Foundation, in co-operation with Broadcom, announced they open sourced, "all the ARM (CPU) code that drives the GPU". Unfortunately, the code released reflects the very minimum needed to make an open-source announcement. The open-source components allow message-passing between the ARM CPU and VideoCore, but offered little insight into Videocore and little further programmability. This is because the Videocore GPU runs a RTOS that handles the real processing; all of the actual video acceleration is done using this RTOS firmware coded for its proprietary GPU, and this firmware wasn't open sourced.[81] Further, as there is neither a toolchain available that could target this proprietary GPU, nor was its Instruction set documented, so no possible advantage could be taken in case if the firmware source code was made available. The project videocoreiv[82] tries to document the VideoCore GPUs. Based upon this documentation a driver could be written.

But on February 28, 2014, on the day of the second anniversary of the Raspberry PI Broadcom, together with 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 3-clause BSD license [83][84]

Other vendors[edit]

SiS and VIA have both shown limited interest and communication regarding open source drivers; however, both have released source code which has later been integrated into X.Org by FOSS developers.[38] In July 2008, VIA opened up documentation for their products to improve its image within the Linux and open-source communities.[85] Although, so far VIA has failed to work with the open source community to provide documentation and a working DRM driver, leaving expectations for supporting the Linux operating system unfulfilled.[86] On January 6, 2011 it was announced that VIA was no longer interested in supporting free graphics initiatives.[87]

DisplayLink have announced an open source project called libdlo with the goal of bringing support for their USB graphics technology to Linux and other platforms. The code is available under the LGPL license.[88] It has not yet 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 as of March 2012 is only available in the drm-next tree.

Often other non-hardware related vendors may also lend a hand to free graphics initiatives. Red Hat has some employees working full-time on several free and open source software projects, such as two full-time employees working on the free software radeon (David Airlie and Jérôme Glisse[89]) and one full-time employee working on the free software nouveau graphic drivers.[citation needed] In addition, the Fedora Project runs a "Fedora Graphics Test Week" event before the launch of their new Linux distribution versions in order to provide rigorous testing to free graphics drivers.[90] Other companies that have provided development or support include Novell and VMware.

Open hardware projects[edit]

Project VGA assembled PCB
Open Graphics Project assembled PCB

Project VGA aims to create a low budget, open source, VGA compatible video card. All information to create one is available, but at present there seems to be no development. Some data:[91]

  • PCI bus interface (32 bit, 33/66 MHz, 3,3/5V compatible)
  • Xilinx Spartan-3 S400 FPGA (aiming for ~100 MHz)
  • 16 MB SDRAM (aiming for ~166 MHz)
  • Onboard programmer with USB interface
  • Analog (HD15) VGA output connector.

The Open Graphics Project is another aim at creating an open hardware GPU. The Open Graphics Device v1 features dual DVI-I outputs and 100-pin IDC connector. On September 2010, the first 25 OGD1 boards were made available for grant application and purchase ($750).[92]

The Milkymist system-on-chip, targeted at embedded graphics instead of desktop computers, supports a VGA output, a limited vertex shader and a 2D texturing unit.[93]

See also[edit]

References[edit]

  1. ^ Theo de Raadt (2006-12-03). "Open Documentation for Hardware". Presentation slides from OpenCON 2006. Retrieved 2007-02-01. 
  2. ^ "3.9: "Blob!"". OpenBSD. Retrieved 2007-02-12. 
  3. ^ Linux - How does the Rapid7 Advisory R7-0025 affect the Nvidia Unix driver?
  4. ^ Linus Torvalds, kernel mailing list, Feb 7, 1999.
  5. ^ Myths, Lies, and Truths about the Linux kernel by Greg Kroah-Hartman
  6. ^ Peter Gutmann (2006-12-26). A Cost Analysis of Windows Vista Content Protection. Retrieved 2007-01-28. 
  7. ^ Linux Weekly News, Aug 14, 2006: X.org, distributors, and proprietary modules
  8. ^ Greg Kroah-Hartman (2006). "Myths, Lies, and Truths about the Linux kernel". Linux Symposium. "So, here's the simple answer to this issue: 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 GPL due to fun things like derivative works and linking and other stuff. Again, it's very simple. Now no lawyer will ever come out in public and say this, as lawyer really aren't allowed to make public statements like this at all. But if you hire one, and talk to them in the client/lawyer setting, they will advise you of this issue." 
  9. ^ "The Linux Kernel Driver Interface". Retrieved 2014-03-04. 
  10. ^ "SamsungGalaxyBackdoor". 2014-02-04. 
  11. ^ "Android Nears 80% Market Share In Global Smartphone Shipments, As iOS And BlackBerry Share Slides, Per IDC". 
  12. ^ "3D Graphics hardware performance using Free Software drivers (X.Org DRI) [Free3D]".  090501 free3d.org
  13. ^ free3d.org - FAQ: "Is glxgears an accurate measure of 3D performance? No, it sucks in multiple ways."
  14. ^ "Ubuntu 14.04 outperforms OS X 10.9 on 2013 MacBook Air". Phoronix. 2014-03-19. Retrieved 2014-03-19. 
  15. ^ Details of package firmware-linux-nonfree in squeeze Debian.org
  16. ^ The Direction Of ATI Radeon Graphics In Ubuntu 11.04 Phoronix, March 08, 2011 (Article by Michael Larabel)
  17. ^ http://www.botchco.com/agd5f/?p=58
  18. ^ Michael Larabel. "AMD Releases Open-Source R600/700 3D Code". Retrieved 2009-01-01. 
  19. ^ "LWN: AMD to open up graphics specs". Retrieved 2007-09-05. 
  20. ^ Michael Larabel. AMD: GPU Specifications Without NDAs!
  21. ^ David Airlie (2007-09-12). "AMD hand me specs on a CD". Retrieved 2007-09-14. 
  22. ^ Michael Larabel (2008-02-22). "AMD Releases 3D Programming Documentation". Retrieved 2008-03-12. 
  23. ^ a b 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)
  24. ^ Nvidia's Response To Recent Nouveau Work Phoronix, December 14, 2009 (Article by Michael Larabel)
  25. ^ AMD's Hiring Open-Source Graphics Developers Still Phoronix, May 12, 2011 (Article by Michael Larabel)
  26. ^ AMD Already Adds On Two Open-Source Developers Phoronix, May 14, 2011 (Article by Michael Larabel)
  27. ^ AMD's New Open-Source Employees Phoronix, July 5, 2011 (Article by Michael Larabel)
  28. ^ Further Testing Shows More Hope For ATI Gallium3D Phoronix, January 19, 2011 (Article by Michael Larabel)
  29. ^ The Major Open-Source ATI Improvements Over Two Years Phoronix, April 11, 2011 (Article by Michael Larabel)
  30. ^ A Fresh Look At The AMD Radeon Gallium3D Performance Phoronix, June 10, 2011 (Article by Michael Larabel)
  31. ^ "initial VCE support in Linux kernel and in the Mesa driver". 
  32. ^ "drm-next-3.15 Feb 18". 
  33. ^ "drm-next-3.15 Mar 04". 
  34. ^ "X.org nv driver page". 2013-05-20. 
  35. ^ Patch by Dirk Hohndel (CVS User hohndel), 1998/11/18: [1]: "This resulted in unreadable and unmaintainable code. The XFree86 Project is strongly opposed to such obfuscated code. We do not regard this as free software according to our standards."
  36. ^ Nouveau. The community & past, current and future developments // 2011, Slide 4
  37. ^ NVIDIA Drops Their Open-Source Driver, Refers Users To VESA Driver // Phoronix, March 26, 2010: "The xf86-video-nv driver .. provides very basic 2D acceleration and a crippled set of features .. while the code has also been obfuscated to try to protect their intellectual property. However, NVIDIA has decided to deprecate this open-source driver of theirs."
  38. ^ a b c David M. Airlie (2006-07-19). "Open Source Graphic Drivers—They Don't Kill Kittens" (PDF). Proceedings of the Linux Symposium Volume One. Ottawa, Canada. Retrieved 2007-01-28. 
  39. ^ The nv(4) man page
  40. ^ Andy Ritger (2010-03-26). "[ANNOUNCE] Deprecation of xf86-video-nv". Archived from the original on 2010-04-02. Retrieved 2010-04-02. 
  41. ^ Michael Larabel (2010-03-26). "Nvidia Drops Their Open-Source Driver, Refers Users To VESA Driver". phoronix.com. Archived from the original on 2010-04-02. Retrieved 2010-04-02. 
  42. ^ http://packages.debian.org/sid/libgl1-nvidia-glx
  43. ^ "Added support for the EGL API on 32-bit platforms. Currently, the supported client APIs are OpenGL ES 1.1, 2.0 and 3.0, and the only supported window system backend is X11.". 2013-10-04. Retrieved 2013-10-05. 
  44. ^ "Testing Out The Nouveau Driver On Fedora 11". 
  45. ^ nouveau : Open Source 3D acceleration for Nvidia cards
  46. ^ Nouveau To Enter The Ubuntu 10.04 LTS Kernel Phoronix, November 23, 2009 (Article by Michael Larabel)
  47. ^ On Low-End GPUs, Nouveau Speeds Past The Nvidia Driver Phoronix, March 19, 2011 (Article by Michael Larabel)
  48. ^ Nouveau's OpenGL Performance Approaches The Nvidia Driver Phoronix, March 21, 2011 (Article by Michael Larabel)
  49. ^ Jonathan Corbet (2012-03-23). "The Nouveau driver graduates from staging". LWN.net. 
  50. ^ "Nvidia offers to release public documentation on certain aspects of their GPUs". 2013-09-23. Retrieved 2013-09-24. 
  51. ^ Mayo, Jon (2012-04-20). "[RFC 0/4] Add NVIDIA Tegra DRM support". dri-devel mailing list. http://lists.freedesktop.org/archives/dri-devel/2012-April/021833.html. Retrieved 2012-08-21.
  52. ^ Larabel, Michael (2012-04-11). "A NVIDIA Tegra 2 DRM/KMS Driver Tips Up". Phoronix Media. Retrieved 2012-08-21. 
  53. ^ "GTC 2013: NVIDIA's Tegra Roadmap (6 of 11)". YouTube. Retrieved 2013-07-10. 
  54. ^ "i810 man page". Archived from the original on 2007-02-04. Retrieved 2007-02-14. 
  55. ^ Eric Anholt. "X.Org mailing list: xf86-video-intel 2.1.0". Retrieved 2007-07-09. 
  56. ^ "Intel & The Shortcomings Of Gallium3D". Phoronix. 2010-04-13. Retrieved 2010-10-26. 
  57. ^ "More Performance Comes Out Of Intel Linux SNB". Phoronix. 2011-03-22. Retrieved 2011-03-23. 
  58. ^ "Intel Sandy Bridge Performance Goes Up Again". Phoronix. 2011-03-31. Retrieved 2011-03-31. 
  59. ^ "Intel SNB Linux Driver Can Out Run Windows Driver". Phoronix. 2011-05-23. Retrieved 2011-05-23. 
  60. ^ "A Historical Look At Intel Ironlake Graphics Performance". Phoronix. 2011-05-25. Retrieved 2011-05-25. 
  61. ^ "drm/i915: Use eLLC/LLC by default when available". 
  62. ^ "drm/i915: Use Write-Through cacheing for the display plane on Iris". 
  63. ^ "Intel Has 20~30 Full-Time Linux Graphics Developers". 2013-02-02. 
  64. ^ YouTube:FOSDEM 2012 - Open-Source ARM Mali
  65. ^ Phoronix, Jan 21 2012: An Open-Source, Reverse-Engineered Mali GPU Driver
  66. ^ Quake 3 Arena timedemo on top of the lima driver!
  67. ^ Free Software Foundation, Apr 25, 2005: High Priority Free Software Projects
  68. ^ http://www.phoronix.com/scan.php?page=news_item&px=MTI3MjU
  69. ^ Michael Larabel (14 April 2012). "An Open-Source Graphics Driver For Snapdragon". Phoronix. Retrieved 15 April 2012. 
  70. ^ Soulskill (14 April 2012). "Open-Source Qualcomm GPU Driver Published". Slashdot. Retrieved 15 April 2012. 
  71. ^ Rob Clark (14 April 2012). "Fighting back against binary blobs!". Linaro. Retrieved 15 April 2012. 
  72. ^ Freedreno, 15 April 2012
  73. ^ http://www.phoronix.com/scan.php?page=news_item&px=MTMyNTE
  74. ^ http://lists.freedesktop.org/archives/mesa-commit/2013-March/042190.html
  75. ^ Rob Clark (29 July 2012). "freedreno update: first renders shader assembler!". Retrieved 16 August 2012. 
  76. ^ Rob Clark (5 August 2012). "textured cube (fullscreen!)". Retrieved 16 August 2012. 
  77. ^ Rob Clark (15 August 2012). "Open Source lolscat!". Retrieved 16 August 2012. 
  78. ^ Michael Larabel (2 February 2013). "Freedreno Gallium3D Shows Much Promise". Retrieved 11 February 2013. 
  79. ^ Michael Larabel (14 September 2013). "Good Features For The Linux 3.12 Kernel". 
  80. ^ "Phoronix on the Raspberry Pi GPU". 
  81. ^ opening up ARM userland code for the Raspberry Pi
  82. ^ https://github.com/hermanhermitage/videocoreiv
  83. ^ http://arstechnica.com/information-technology/2014/02/raspberry-pi-marks-2nd-birthday-with-plan-for-open-source-graphics-driver/
  84. ^ http://www.raspberrypi.org/archives/6299
  85. ^ Michael Larabel (2008-07-26). "VIA Publishes Three Programming Guides". Phoronix. Retrieved 2008-08-04. 
  86. ^ Michael Larabel (2009-11-21). "VIA's Linux TODO List... Maybe Look Forward To 2011?". Phoronix. Retrieved 2009-12-30. 
  87. ^ VIA's Open Linux Graphics Driver Has Been Defenestrated Phoronix, January 06, 2011 (Article by Michael Larabel)
  88. ^ "DisplayLink Releases Linux Source Code for its USB Graphics Processors" (Press release). DisplayLink. 2009-05-15. Retrieved 2009-05-15. 
  89. ^ AMD's Hiring Another Open-Source Driver Developer Phoronix, December 11, 2010 (Article by Michael Larabel)
  90. ^ It's Fedora Graphics Test Week Phoronix, February 22, 2011 (Article by Michael Larabel)
  91. ^ "Home of Project VGA, the low budget, open source, VGA compatible video card".  090503 wacco.mveas.com
  92. ^ "Linux Fund: OGD1". Open Graphics Project. 2010-09-23. Retrieved 2011-11-04. 
  93. ^ Bourdeauducq, Sebastien (June 2010). "A performance-driven SoC architecture for video synthesis". Retrieved 2010-11-05. 

External links[edit]