The Direct Rendering Manager was created to allow multiple programs to use video hardware resources cooperatively. The DRM gets exclusive access to the GPU and is responsible for initializing and maintaining the command queue, memory, and any other hardware resource. Programs wishing to use the GPU send requests to DRM, which acts as an arbitrator and takes care to avoid possible conflicts.
The scope of DRM has been expanded over the years to cover more functionality previously handled by user-space programs, such as framebuffer managing and mode setting, memory-sharing objects and memory synchronization. Some of these expansions were given specific names, such as Graphics Execution Manager (GEM) or kernel mode-setting (KMS), and the terminology prevails when the functionality they provide is specifically alluded. But they are really parts of the whole kernel DRM subsystem.
The trend to include two GPUs in a computer—a discrete GPU and an integrated one—led to new problems such as GPU switching that also needed to be solved at the DRM layer. In order to match the Nvidia Optimus technology, DRM was provided with GPU offloading abilities, called PRIME.
DRM consists of two parts: a generic "DRM core" and a specific one ("DRM driver") for each type of supported hardware. DRM core provides the basic framework where different DRM drivers can register and also provides to user space a minimal set of ioctls with common, hardware-independent functionality. A DRM driver, on the other hand, implements the hardware-dependent part of the API, specific to the type of GPU it supports; it should provide the implementation of the remaining ioctls not covered by DRM core, but it may also extend the API, offering additional ioctls with extra functionality only available on such hardware. When a specific DRM driver provides an enhanced API, user-space libdrm is also extended by an extra library libdrm-driver that can be used by user space to interface with the additional ioctls.
The DRM core exports several interfaces to user-space applications, generally intended to be used through corresponding libdrm wrapper functions. In addition, drivers export device-specific interfaces for use by user-space drivers and device-aware applications through ioctls and sysfs files. External interfaces include: memory mapping, context management, DMA operations, AGP management, vblank control, fence management, memory management, and output management.
There are several operations (ioctls) in the DRM API that either for security purposes or for concurrency issues must be restricted to be used by a single user-space process per device. To implement this restriction, DRM limits such ioctls to be only invoked by the process considered the "master" of a DRM device, usually called DRM-Master. Only one of all processes that have the device node /dev/dri/cardX opened will have its file handle marked as master, specifically the first calling the SET_MASTER ioctl. Any attempt to use one of these restricted ioctls without being the DRM-Master will return an error. A process can also give up its master role—and let another process acquire it—by calling the DROP_MASTER ioctl.
For the remaining user-space processes there is another way to gain the privilege to invoke some restricted operations on the DRM device called DRM-Auth. It is basically a method of authentication against the DRM device, in order to prove to it that the process has the DRM-Master's approval to get such privileges. The procedure consists of:: 13
Unfortunately, the use of GEM names to share buffers is not secure.: 16 A malicious third-party process accessing the same DRM device could try to guess the GEM name of a buffer shared by two other processes, simply by probing 32-bit integers. Once a GEM name is found, its contents can be accessed and modified, violating the confidentiality and integrity of the information of the buffer. This drawback was overcome later by the introduction of DMA-BUF support into DRM, as DMA-BUF represents buffers in userspace as file descriptors, which may be shared securely.
Another important task for any video-memory management system besides managing the video-memory space is handling the memory synchronization between the GPU and the CPU. Current memory architectures are very complex and usually involve various levels of caches for the system memory and sometimes for the video memory too. Therefore, video-memory managers should also handle the cache coherence to ensure the data shared between CPU and GPU is consistent. This means that often video-memory management internals are highly dependent on hardware details of the GPU and memory architecture, and thus driver-specific.
The GEM API also provides ioctls for control of the execution flow (command buffers), but they are Intel-specific, to be used with Intel i915 and later GPUs. No other DRM driver has attempted to implement any part of the GEM API beyond the memory-management specific ioctls.
The main concept of TTM are the "buffer objects", regions of video memory that at some point must be addressable by the GPU. When a user-space graphics application wants access to a certain buffer object (usually to fill it with content), TTM may require relocating it to a type of memory addressable by the CPU. Further relocations—or GART mapping operations—could happen when the GPU needs access to a buffer object but it isn't in the GPU's address space yet. Each of these relocation operations must handle any related data and cache-coherency issues.
The fact that TTM tried to manage all kind of memory architectures, including those with and without a dedicated VRAM, in a suitable way, and to provide every conceivable feature in a memory manager for use with any type of hardware, led to an overly complex solution with an API far larger than needed. Some DRM developers thought that it wouldn't fit well with any specific driver, especially the API. When GEM emerged as a simpler memory manager, its API was preferred over the TTM one. But some driver developers considered that the approach taken by TTM was more suitable for discrete video cards with dedicated video memory and IOMMUs, so they decided to use TTM internally, while exposing their buffer objects as GEM objects and thus supporting the GEM API. Examples of current drivers using TTM as an internal memory manager but providing a GEM API are the radeon driver for AMD video cards and the nouveau driver for NVIDIA video cards.
This feature was exploited for the first time in DRM to implement PRIME, a solution for GPU offloading that uses DMA-BUF to share the resulting framebuffers between the DRM drivers of the discrete and the integrated GPU.: 13 An important feature of DMA-BUF is that a shared buffer is presented to user space as a file descriptor.: 17 For the development of PRIME two new ioctls were added to the DRM API, one to convert a local GEM handle to a DMA-BUF file descriptor and another for the exact opposite operation.
These two new ioctls were later reused as a way to fix the inherent unsafety of GEM buffer sharing.: 17 Unlike GEM names, file descriptors can not be guessed (they are not a global namespace), and Unix operating systems provide a safe way to pass them through a Unix domain socket using the SCM_RIGHTS semantics.: 11 A process that wants to share a GEM object with another process can convert its local GEM handle to a DMA-BUF file descriptor and pass it to the recipient, which in turn can get its own GEM handle from the received file descriptor.: 16 This method is used by DRI3 to share buffers between the client and the X Server and also by Wayland.
In early days, the user space programs that wanted to use the graphical framebuffer were also responsible for providing the mode-setting operations, and therefore they needed to run with privileged access to the video hardware. In Unix-type operating systems, the X Server was the most prominent example, and its mode-setting implementation lived in the DDX driver for each specific type of video card. This approach, later referred to as User space Mode-Setting or UMS, poses several issues. It not only breaks the isolation that operating systems should provide between programs and hardware, raising both stability and security concerns, but also could leave the graphics hardware in an inconsistent state if two or more user space programs try to do the mode-setting at the same time. To avoid these conflicts, the X Server became in practice the only user space program that performed mode-setting operations; the remainder user space programs relied on the X Server to set the appropriate mode and to handle any other operation involving mode-setting. Initially the mode-setting was performed exclusively during the X Server startup process, but later the X Server gained the ability to do it while running. The XFree86-VidModeExtension extension was introduced in XFree86 3.1.2 to let any X client request modeline (resolution) changes to the X Server. VidMode extension was later superseded by the more generic XRandR extension.
To address these problems, the mode-setting code was moved to a single place inside the kernel, specifically to the existing DRM module. Then, every process—including the X Server—should be able to command the kernel to perform mode-setting operations, and the kernel would ensure that concurrent operations don't result in an inconsistent state. The new kernel API and code added to the DRM module to perform these mode-setting operations was called Kernel Mode-Setting (KMS).
Kernel Mode-Setting provides several benefits. The most immediate is of course the removal of duplicate mode-setting code, from both the kernel (Linux console, fbdev) and user space (X Server DDX drivers). KMS also makes it easier to write alternative graphics systems, which now don't need to implement their own mode-setting code. By providing centralized mode management, KMS solves the flickering issues while changing between console and X, and also between different instances of X (fast user switching). Since it is available in the kernel, it can also be used at the beginning of the boot process, saving flickering due to mode changes in these early stages.
The fact that KMS is part of the kernel allows it to use resources only available at kernel space such as interrupts. For example, the mode recovery after a suspend/resume process simplifies a lot by being managed by the kernel itself, and incidentally improves security (no more user space tools requiring root permissions). The kernel also allows the hotplug of new display devices easily, solving a longstanding problem. Mode-setting is also closely related to memory management—since framebuffers are basically memory buffers—so a tight integration with the graphics memory manager is highly recommended. That's the main reason why the kernel mode-setting code was incorporated into DRM and not as a separate subsystem.
To avoid breaking backwards compatibility of the DRM API, Kernel Mode-Setting is provided as an additional driver feature of certain DRM drivers. Any DRM driver can choose to provide the DRIVER_MODESET flag when it registers with the DRM core to indicate that supports the KMS API. Those drivers that implement Kernel Mode-Setting are often called KMS drivers as a way to differentiate them from the legacy—without KMS—DRM drivers.
KMS has been adopted to such an extent that certain drivers which lack 3D acceleration (or for which the hardware vendor doesn't want to expose or implement it) nevertheless implement the KMS API without the rest of the DRM API, allowing display servers (like Wayland) to run with ease.
KMS models and manages the output devices as a series of abstract hardware blocks commonly found on the display output pipeline of a display controller. These blocks are:
The new atomic API is built upon the old KMS API. It uses the same model and objects (CRTCs, encoders, connectors, planes, ...), but with an increasing number of object properties that can be modified. The atomic procedure is based on changing the relevant properties to build the state that we want to test or commit. The properties we want to modify depend on whether we want to do a mode-setting (mostly CRTCs, encoders and connectors properties) or page flipping (usually planes properties). The ioctl is the same for both cases, the difference being the list of properties passed with each one.
The "render nodes" concept tries to solve these scenarios by splitting the DRM user space API into two interfaces – one privileged and one non-privileged – and using separate device files (or "nodes") for each one. For every GPU found, its corresponding DRM driver—if it supports the render nodes feature—creates a device file /dev/dri/renderDX, called the render node, in addition to the primary node /dev/dri/cardX. Clients that use a direct rendering model and applications that want to take advantage of the computing facilities of a GPU, can do it without requiring additional privileges by simply opening any existing render node and dispatching GPU operations using the limited subset of the DRM API supported by those nodes—provided they have file system permissions to open the device file. Display servers, compositors and any other program that requires the modeset API or any other privileged operation must open the standard primary node that grants access to the full DRM API and use it as usual. Render nodes explicitly disallow the GEM flink operation to prevent buffer sharing using insecure GEM global names; only PRIME (DMA-BUF) file descriptors can be used to share buffers with another client, including the graphics server.
There is also a number of drivers for old, obsolete hardware detailed in the next table for historical purposes.
Historic DRM driversFor historical reasons, the source code of the libdrm library is maintained under the umbrella of the Mesa project.
The idea of putting all the video mode setting code in one place inside the kernel had been acknowledged for years, but the graphics card manufacturers had argued that the only way to do the mode-setting was to use the routines provided by themselves and contained in the Video BIOS of each graphics card. Such code had to be executed using x86 real mode, which prevented it from being invoked by a kernel running in protected mode. The situation changed when Luc Verhaegen and other developers found a way to do the mode-setting natively instead of BIOS-based, showing that it was possible to do it using normal kernel code and laying the groundwork for what would become Kernel Mode Setting. In May 2007 Jesse Barnes (Intel) published the first proposal for a drm-modesetting API and a working native implementation of mode-setting for Intel GPUs within the i915 DRM driver. In December 2007 Jerome Glisse started to add the native mode-setting code for ATI cards to the radeon DRM driver. Work on both the API and drivers continued during 2008, but got delayed by the necessity of a memory manager also in kernel space to handle the framebuffers.
The increasing complexity of video memory management led to several approaches to solving this issue. The first attempt was the Translation Table Maps (TTM) memory manager, developed by Thomas Hellstrom (Tungsten Graphics) in collaboration with Emma Anholt (Intel) and Dave Airlie (Red Hat). TTM was proposed for inclusion into mainline kernel 2.6.25 in November 2007, and again in May 2008, but was ditched in favor of a new approach called Graphics Execution Manager (GEM). GEM was first developed by Keith Packard and Emma Anholt from Intel as a simpler solution for memory management for their i915 driver. GEM was well received and merged into the Linux kernel version 2.6.28 released in December 2008. Meanwhile, TTM had to wait until September 2009 to be finally merged into Linux 2.6.31 as a requirement of the new Radeon KMS DRM driver.
With memory management in place to handle buffer objects, DRM developers could finally add to the kernel the already finished API and code to do mode setting. This expanded API is what is called Kernel Mode-setting (KMS) and the drivers which implement it are often referred to as KMS drivers. In March 2009, KMS was merged into the Linux kernel version 2.6.29, along with KMS support for the i915 driver. The KMS API has been exposed to user space programs since libdrm 2.4.3. The userspace X.Org DDX driver for Intel graphics cards was also the first to use the new GEM and KMS APIs. KMS support for the radeon DRM driver was added to Linux 2.6.31 release of September 2009. The new radeon KMS driver used the TTM memory manager but exposed GEM-compatible interfaces and ioctls instead of TTM ones.
The new KMS API—including the GEM API—was a big milestone in the development of DRM, but it didn't stop the API from being enhanced in the following years. KMS gained support for page flips in conjunction with asynchronous VBLANK notifications in Linux 2.6.33—only for the i915 driver, radeon and nouveau added it later during Linux 2.6.38 release. The new page flip interface was added to libdrm 2.4.17. In early 2011, during the Linux 2.6.39 release cycle, the so-called dumb buffers—a hardware-independent non-accelerated way to handle simple buffers suitable for use as framebuffers—were added to the KMS API. The goal was to reduce the complexity of applications such as Plymouth that don't need to use special accelerated operations provided by driver-specific ioctls. The feature was exposed by libdrm from version 2.4.25 onwards. Later that year it also gained a new main type of objects, called planes. Planes were developed to represent hardware overlays supported by the scanout engine. Plane support was merged into Linux 3.3. and libdrm 2.4.30. Another concept added to the API—during Linux 3.5 and libdrm 2.4.36 releases—were generic object properties, a method to add generic values to any KMS object. Properties are specially useful to set special behaviour or features to objects such as CRTCs and planes.
An early proof of concept to provide GPU offloading between DRM drivers was developed by Dave Airlie in 2010. Since Airlie was trying to mimic the NVIDIA Optimus technology, he decided to name it "PRIME". Airlie resumed his work on PRIME in late 2011, but based on the new DMA-BUF buffer sharing mechanism introduced by Linux kernel 3.3. The basic DMA-BUF PRIME infrastructure was finished in March 2012 and merged into the Linux 3.4 release, as well as into libdrm 2.4.34. Later during the Linux 3.5 release, several DRM drivers implemented PRIME support, including i915 for Intel cards, radeon for AMD cards and nouveau for NVIDIA cards.
In recent years, the DRM API has incrementally expanded with new and improved features. In 2013, as part of GSoC, David Herrmann developed the multiple render nodes feature. His code was added to the Linux kernel version 3.12 as an experimental feature supported by i915, radeon and nouveau drivers, and enabled by default since Linux 3.17. In 2014 Matt Roper (Intel) developed the universal planes (or unified planes) concept by which framebuffers (primary planes), overlays (secondary planes) and cursors (cursor planes) are all treated as a single type of object with an unified API. Universal planes support provides a more consistent DRM API with fewer, more generic ioctls. In order to maintain the API backwards compatible, the feature is exposed by DRM core as an additional capability that a DRM driver can provide. Universal plane support debuted in Linux 3.15 and libdrm 2.4.55. Several drivers, such as the Intel i915, have already implemented it.
The Direct Rendering Manager kernel subsystem was initially developed to be used with the new Direct Rendering Infrastructure of the XFree86 4.0 display server, later inherited by its successor, the X.Org Server. Therefore, the main users of DRM were DRI clients that link to the hardware-accelerated OpenGL implementation that lives in the Mesa 3D library, as well as the X Server itself. Nowadays DRM is also used by several Wayland compositors, including Weston reference compositor. kmscon is a virtual console implementation that runs in user space using DRM KMS facilities.
"Linux kernel/drivers/gpu/drm/README.drm". kernel.org. Archived from the original on 2014-02-26. Retrieved 2014-02-26. https://archive.today/20140226185421/https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/README.drm
Uytterhoeven, Geert. "The Frame Buffer Device". Kernel.org. Retrieved 28 January 2015. https://www.kernel.org/doc/Documentation/fb/framebuffer.txt
White, Thomas. "How DRI and DRM Work". Retrieved 22 July 2014. http://www.bitwiz.org.uk/s/how-dri-and-drm-work.html
White, Thomas. "How DRI and DRM Work". Retrieved 22 July 2014. http://www.bitwiz.org.uk/s/how-dri-and-drm-work.html
Faith, Rickard E. (11 May 1999). "The Direct Rendering Manager: Kernel Support for the Direct Rendering Infrastructure". Archived from the original on 24 May 2016. Retrieved 12 May 2016. https://web.archive.org/web/20160524202114/http://dri.sourceforge.net/doc/drm_low_level.html
Corbet, Jonathan (6 November 2007). "Memory management for graphics processors". LWN.net. Retrieved 23 July 2014. https://lwn.net/Articles/257417/
Packard, Keith; Anholt, Eric (13 May 2008). "GEM - the Graphics Execution Manager". dri-devel mailing list. Retrieved 23 July 2014. https://lwn.net/Articles/283798/
Airlie, Dave (12 March 2010). "GPU offloading - PRIME - proof of concept". Archived from the original on 10 February 2015. Retrieved 10 February 2015. https://web.archive.org/web/20150210173401/http://airlied.livejournal.com/71734.html
Kitching, Simon. "DRM and KMS kernel modules". Retrieved 13 May 2016. http://moi.vonos.net/linux/drm-and-kms/
Herrmann, David (1 September 2013). "Splitting DRM and KMS device nodes". Retrieved 23 July 2014. http://dvdhrm.wordpress.com/2013/09/01/splitting-drm-and-kms-device-nodes/
"README.rst - mesa/drm - Direct Rendering Manager headers and kernel modules". 2020-03-21. Archived from the original on 2020-03-21. https://archive.today/20200321143932/https://cgit.freedesktop.org/mesa/drm/tree/README.rst
Airlie, Dave (4 September 2004). "New proposed DRM interface design". dri-devel (Mailing list). https://lwn.net/Articles/100839/
Kitching, Simon. "DRM and KMS kernel modules". Retrieved 13 May 2016. http://moi.vonos.net/linux/drm-and-kms/
Kitching, Simon. "DRM and KMS kernel modules". Retrieved 13 May 2016. http://moi.vonos.net/linux/drm-and-kms/
Kitching, Simon. "DRM and KMS kernel modules". Retrieved 13 May 2016. http://moi.vonos.net/linux/drm-and-kms/
Peres, Martin; Ravier, Timothée (2 February 2013). "DRI-next/DRM2: A walkthrough the Linux Graphics stack and its security" (PDF). Retrieved 13 May 2016. http://phd.mupuf.org/files/fosdem2013_drinext_drm2.pdf
Høgsberg, Kristian (4 September 2008). "The DRI2 Extension - Version 2.0". X.Org. Retrieved 23 May 2016. http://www.x.org/releases/X11R7.5/doc/dri2proto/dri2proto.txt
Packard, Keith; Anholt, Eric (13 May 2008). "GEM - the Graphics Execution Manager". dri-devel mailing list. Retrieved 23 July 2014. https://lwn.net/Articles/283798/
Packard, Keith; Anholt, Eric (13 May 2008). "GEM - the Graphics Execution Manager". dri-devel mailing list. Retrieved 23 July 2014. https://lwn.net/Articles/283798/
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - Memory management". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-mm.html
Vetter, Daniel. "i915/GEM Crashcourse by Daniel Vetter". Intel Open Source Technology Center. Retrieved 31 January 2015. GEM essentially deals with graphics buffer objects (which can contain textures, renderbuffers, shaders, or all kinds of other state objects and data used by the gpu) https://01.org/linuxgraphics/blogs/vivijim/2012/i915/gem-crashcourse-daniel-vetter
Packard, Keith; Anholt, Eric (13 May 2008). "GEM - the Graphics Execution Manager". dri-devel mailing list. Retrieved 23 July 2014. https://lwn.net/Articles/283798/
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - Memory management". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-mm.html
Vetter, Daniel (4 May 2011). "GEM Overview". Retrieved 13 February 2015. http://blog.ffwll.ch/2011/05/gem-overview.html
Vetter, Daniel (4 May 2011). "GEM Overview". Retrieved 13 February 2015. http://blog.ffwll.ch/2011/05/gem-overview.html
Vetter, Daniel (4 May 2011). "GEM Overview". Retrieved 13 February 2015. http://blog.ffwll.ch/2011/05/gem-overview.html
Peres, Martin; Ravier, Timothée (2 February 2013). "DRI-next/DRM2: A walkthrough the Linux Graphics stack and its security" (PDF). Retrieved 13 May 2016. http://phd.mupuf.org/files/fosdem2013_drinext_drm2.pdf
Peres, Martin; Ravier, Timothée (2 February 2013). "DRI-next/DRM2: A walkthrough the Linux Graphics stack and its security" (PDF). Retrieved 13 May 2016. http://phd.mupuf.org/files/fosdem2013_drinext_drm2.pdf
Peres, Martin; Ravier, Timothée (2 February 2013). "DRI-next/DRM2: A walkthrough the Linux Graphics stack and its security" (PDF). Retrieved 13 May 2016. http://phd.mupuf.org/files/fosdem2013_drinext_drm2.pdf
Packard, Keith (28 September 2012). "Thoughts about DRI.Next". Retrieved 26 May 2016. GEM flink has lots of issues. The flink names are global, allowing anyone with access to the device to access the flink data contents. http://keithp.com/blogs/DRI-Next/
Herrmann, David (2 July 2013). "DRM Security". The 2013 X.Org Developer's Conference (XDC2013) Proceedings. Retrieved 13 February 2015. gem-flink doesn't provide any private namespaces to applications and servers. Instead, only one global namespace is provided per DRM node. Malicious authenticated applications can attack other clients via brute-force "name-guessing" of gem buffers http://www.x.org/wiki/Events/XDC2013/XDC2013DavidHerrmannDRMSecurity/DRM_SECURITY
Kerrisk, Michael (25 September 2012). "XDC2012: Graphics stack security". LWN.net. Retrieved 25 November 2015. https://lwn.net/Articles/517375/
Herrmann, David (2 July 2013). "DRM Security". The 2013 X.Org Developer's Conference (XDC2013) Proceedings. Retrieved 13 February 2015. gem-flink doesn't provide any private namespaces to applications and servers. Instead, only one global namespace is provided per DRM node. Malicious authenticated applications can attack other clients via brute-force "name-guessing" of gem buffers http://www.x.org/wiki/Events/XDC2013/XDC2013DavidHerrmannDRMSecurity/DRM_SECURITY
Packard, Keith (4 July 2008). "gem update". Retrieved 25 April 2016. http://keithp.com/blogs/gem_update/
"drm-memory man page". Ubuntu manuals. Retrieved 29 January 2015. Many modern high-end GPUs come with their own memory managers. They even include several different caches that need to be synchronized during access. [...] . Therefore, memory management on GPUs is highly driver- and hardware-dependent. http://manpages.ubuntu.com/manpages/trusty/man7/drm-memory.7.html
Packard, Keith (4 July 2008). "gem update". Retrieved 25 April 2016. http://keithp.com/blogs/gem_update/
"Intel Graphics Media Accelerator Developer's Guide". Intel Corporation. Retrieved 24 November 2015. https://software.intel.com/sites/default/files/ae/4e/15732
Packard, Keith; Anholt, Eric (13 May 2008). "GEM - the Graphics Execution Manager". dri-devel mailing list. Retrieved 23 July 2014. https://lwn.net/Articles/283798/
Larabel, Michael (26 August 2008). "A GEM-ified TTM Manager For Radeon". Phoronix. Retrieved 24 April 2016. https://www.phoronix.com/scan.php?page=news_item&px=NjY3Ng
Packard, Keith; Anholt, Eric (13 May 2008). "GEM - the Graphics Execution Manager". dri-devel mailing list. Retrieved 23 July 2014. https://lwn.net/Articles/283798/
Corbet, Jonathan (6 November 2007). "Memory management for graphics processors". LWN.net. Retrieved 23 July 2014. https://lwn.net/Articles/257417/
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - Memory management". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-mm.html
Corbet, Jonathan (6 November 2007). "Memory management for graphics processors". LWN.net. Retrieved 23 July 2014. https://lwn.net/Articles/257417/
Corbet, Jonathan (6 November 2007). "Memory management for graphics processors". LWN.net. Retrieved 23 July 2014. https://lwn.net/Articles/257417/
Corbet, Jonathan (6 November 2007). "Memory management for graphics processors". LWN.net. Retrieved 23 July 2014. https://lwn.net/Articles/257417/
Corbet, Jonathan (28 May 2008). "GEM v. TTM". LWN.net. Retrieved 10 February 2015. https://lwn.net/Articles/283793/
Corbet, Jonathan (6 November 2007). "Memory management for graphics processors". LWN.net. Retrieved 23 July 2014. https://lwn.net/Articles/257417/
Corbet, Jonathan (28 May 2008). "GEM v. TTM". LWN.net. Retrieved 10 February 2015. https://lwn.net/Articles/283793/
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - Memory management". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-mm.html
Larabel, Michael (26 August 2008). "A GEM-ified TTM Manager For Radeon". Phoronix. Retrieved 24 April 2016. https://www.phoronix.com/scan.php?page=news_item&px=NjY3Ng
Corbet, Jonathan (11 January 2012). "DMA buffer sharing in 3.3". LWN.net. Retrieved 14 May 2016. https://lwn.net/Articles/474819/
Clark, Rob; Semwal, Sumit. "DMA Buffer Sharing Framework: An Introduction" (PDF). Retrieved 14 May 2016. http://elinux.org/images/a/a8/DMA_Buffer_Sharing-_An_Introduction.pdf
Peres, Martin (26 September 2014). "The Linux graphics stack, Optimus and the Nouveau driver" (PDF). Retrieved 14 May 2016. http://phd.mupuf.org/files/kr2014.pdf
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - Memory management". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-mm.html
Peres, Martin; Ravier, Timothée (2 February 2013). "DRI-next/DRM2: A walkthrough the Linux Graphics stack and its security" (PDF). Retrieved 13 May 2016. http://phd.mupuf.org/files/fosdem2013_drinext_drm2.pdf
Peres, Martin; Ravier, Timothée (2 February 2013). "DRI-next/DRM2: A walkthrough the Linux Graphics stack and its security" (PDF). Retrieved 13 May 2016. http://phd.mupuf.org/files/fosdem2013_drinext_drm2.pdf
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - Memory management". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-mm.html
Pinchart, Laurent (20 February 2013). "Anatomy of an Embedded KMS Driver" (PDF). Retrieved 27 June 2016. http://elinux.org/images/0/0f/Elc2013_Pinchart.pdf
Peres, Martin; Ravier, Timothée (2 February 2013). "DRI-next/DRM2: A walkthrough the Linux Graphics stack and its security" (PDF). Retrieved 13 May 2016. http://phd.mupuf.org/files/fosdem2013_drinext_drm2.pdf
Edge, Jake (9 October 2013). "DRI3 and Present". LWN.net. Retrieved 28 May 2016. https://lwn.net/Articles/569701/
"Linux 2.6.29 - Kernel Modesetting". Linux Kernel Newbies. Retrieved 19 November 2015. http://kernelnewbies.org/Linux_2_6_29#head-e1bab8dc862e3b477cc38d87e8ddc779a66509d1
"VGA Hardware". OSDev.org. Retrieved 23 November 2015. http://wiki.osdev.org/VGA_Hardware
Rathmann, B. (15 February 2008). "The state of Nouveau, part I". LWN.net. Retrieved 23 November 2015. Graphics cards are programmed in numerous ways, but most initialization and mode setting is done via memory-mapped IO. This is just a set of registers accessible to the CPU via its standard memory address space. The registers in this address space are split up into ranges dealing with various features of the graphics card such as mode setup, output control, or clock configuration. https://lwn.net/Articles/269558/
White, Thomas. "How DRI and DRM Work". Retrieved 22 July 2014. http://www.bitwiz.org.uk/s/how-dri-and-drm-work.html
Paalanen, Pekka (5 June 2014). "From pre-history to beyond the global thermonuclear war". Retrieved 29 July 2014. http://ppaalanen.blogspot.de/2014/06/from-pre-history-to-beyond-global.html
"drm-kms man page". Ubuntu manuals. Retrieved 19 November 2015. http://manpages.ubuntu.com/manpages/trusty/man7/drm-kms.7.html
Corbet, Jonathan (13 January 2010). "The end of user-space mode setting?". LWN.net. Retrieved 20 November 2015. https://lwn.net/Articles/369706/
"Mode Setting Design Discussion". X.Org Wiki. Retrieved 19 November 2015. http://www.x.org/wiki/ModeSetting/
"Linux 2.6.29 - Kernel Modesetting". Linux Kernel Newbies. Retrieved 19 November 2015. http://kernelnewbies.org/Linux_2_6_29#head-e1bab8dc862e3b477cc38d87e8ddc779a66509d1
Corbet, Jonathan (22 January 2007). "LCA: Updates on the X Window System". LWN.net. Retrieved 23 November 2015. https://lwn.net/Articles/218380/
"XF86VIDMODE manual page". X.Org. Retrieved 23 April 2016. http://www.x.org/releases/X11R7.7/doc/man/man3/XF86VM.3.xhtml
"X11R6.1 Release Notes". X.Org. 14 March 1996. Retrieved 23 April 2016. http://www.x.org/wiki/X11R6.1/
Corbet, Jonathan (20 July 2004). "Kernel Summit: Video Drivers". LWN.net. Retrieved 23 November 2015. https://lwn.net/Articles/94202/
Uytterhoeven, Geert. "The Frame Buffer Device". Kernel.org. Retrieved 28 January 2015. https://www.kernel.org/doc/Documentation/fb/framebuffer.txt
"Fedora - Features/KernelModeSetting". Fedora Project. Retrieved 20 November 2015. Historically, the X server was responsible for saving output state when it started up, and then restoring it when it switched back to text mode. Fast user switching was accomplished with a VT switch, so switching away from the first user's X server would blink once to go to text mode, then immediately blink again to go to the second user's session. https://fedoraproject.org/wiki/Features/KernelModesetting
Barnes, Jesse (17 May 2007). "[RFC] enhancing the kernel's graphics subsystem". linux-kernel (Mailing list). https://lwn.net/Articles/235120/
"DrmModesetting - Enhancing kernel graphics". DRI Wiki. Retrieved 23 November 2015. http://dri.freedesktop.org/wiki/DrmModesetting/
Barnes, Jesse (17 May 2007). "[RFC] enhancing the kernel's graphics subsystem". linux-kernel (Mailing list). https://lwn.net/Articles/235120/
"Mode Setting Design Discussion". X.Org Wiki. Retrieved 19 November 2015. http://www.x.org/wiki/ModeSetting/
Corbet, Jonathan (22 January 2007). "LCA: Updates on the X Window System". LWN.net. Retrieved 23 November 2015. https://lwn.net/Articles/218380/
Packard, Keith (16 September 2007). "kernel-mode-drivers". Retrieved 30 April 2016. http://keithp.com/blogs/kernel-mode-drivers/
Barnes, Jesse (17 May 2007). "[RFC] enhancing the kernel's graphics subsystem". linux-kernel (Mailing list). https://lwn.net/Articles/235120/
"DrmModesetting - Enhancing kernel graphics". DRI Wiki. Retrieved 23 November 2015. http://dri.freedesktop.org/wiki/DrmModesetting/
"Linux 2.6.29 - Kernel Modesetting". Linux Kernel Newbies. Retrieved 19 November 2015. http://kernelnewbies.org/Linux_2_6_29#head-e1bab8dc862e3b477cc38d87e8ddc779a66509d1
Barnes, Jesse (17 May 2007). "[RFC] enhancing the kernel's graphics subsystem". linux-kernel (Mailing list). https://lwn.net/Articles/235120/
"DrmModesetting - Enhancing kernel graphics". DRI Wiki. Retrieved 23 November 2015. http://dri.freedesktop.org/wiki/DrmModesetting/
"Fedora - Features/KernelModeSetting". Fedora Project. Retrieved 20 November 2015. Historically, the X server was responsible for saving output state when it started up, and then restoring it when it switched back to text mode. Fast user switching was accomplished with a VT switch, so switching away from the first user's X server would blink once to go to text mode, then immediately blink again to go to the second user's session. https://fedoraproject.org/wiki/Features/KernelModesetting
Packard, Keith (16 September 2007). "kernel-mode-drivers". Retrieved 30 April 2016. http://keithp.com/blogs/kernel-mode-drivers/
Packard, Keith (24 April 2000). "Sharpening the Intel Driver Focus". Retrieved 23 May 2016. A more subtle limitation is that the driver couldn't handle interrupts, so there wasn't any hot-plug monitor support. http://keithp.com/blogs/Sharpening_the_Intel_Driver_Focus/
Packard, Keith (24 April 2000). "Sharpening the Intel Driver Focus". Retrieved 23 May 2016. A more subtle limitation is that the driver couldn't handle interrupts, so there wasn't any hot-plug monitor support. http://keithp.com/blogs/Sharpening_the_Intel_Driver_Focus/
Packard, Keith (16 September 2007). "kernel-mode-drivers". Retrieved 30 April 2016. http://keithp.com/blogs/kernel-mode-drivers/
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - Driver Initialization". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-internals.html#driver-features
Kitching, Simon. "DRM and KMS kernel modules". Retrieved 13 May 2016. http://moi.vonos.net/linux/drm-and-kms/
"q3k (@q3k@hackerspace.pl)". Warsaw Hackerspace Social Club. 2023-01-31. Retrieved 2023-02-13. DRM/KMS driver fully working now, although still without DMA. Oh, and it's written in Rust, although it's mostly just full of raw unsafe blocks. https://social.hackerspace.pl/@q3k/109783347119397449
"q3k (@q3k@hackerspace.pl)". Warsaw Hackerspace Social Club. 2023-01-31. Retrieved 2023-02-13. Cool thing is, since we have a 'normal' DRM/KMS driver (and help from @emersion@hackerspace.pl) we can just do things like... run Wayland! Weston on an iPod Nano 5G. https://social.hackerspace.pl/@q3k/109785149255867298
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - KMS Initialization and Cleanup". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-kms.html#kms-initialization-and-cleanup
"Video Cards". X.Org Wiki. Retrieved 11 April 2016. http://xorg.freedesktop.org/wiki/Development/Documentation/HowVideoCardsWork/
Paalanen, Pekka (5 June 2014). "From pre-history to beyond the global thermonuclear war". Retrieved 29 July 2014. http://ppaalanen.blogspot.de/2014/06/from-pre-history-to-beyond-global.html
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - KMS Initialization and Cleanup". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-kms.html#kms-initialization-and-cleanup
Deucher, Alex (15 April 2010). "Notes about radeon display hardware". Archived from the original on 5 April 2016. Retrieved 8 April 2016. https://web.archive.org/web/20160405145025/http://www.botchco.com/agd5f/?p=51
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - KMS Initialization and Cleanup". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-kms.html#kms-initialization-and-cleanup
Deucher, Alex (15 April 2010). "Notes about radeon display hardware". Archived from the original on 5 April 2016. Retrieved 8 April 2016. https://web.archive.org/web/20160405145025/http://www.botchco.com/agd5f/?p=51
"Video Cards". X.Org Wiki. Retrieved 11 April 2016. http://xorg.freedesktop.org/wiki/Development/Documentation/HowVideoCardsWork/
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - KMS Initialization and Cleanup". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-kms.html#kms-initialization-and-cleanup
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - KMS Initialization and Cleanup". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-kms.html#kms-initialization-and-cleanup
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - KMS Initialization and Cleanup". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-kms.html#kms-initialization-and-cleanup
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - KMS Initialization and Cleanup". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-kms.html#kms-initialization-and-cleanup
Paalanen, Pekka (5 June 2014). "From pre-history to beyond the global thermonuclear war". Retrieved 29 July 2014. http://ppaalanen.blogspot.de/2014/06/from-pre-history-to-beyond-global.html
Paalanen, Pekka (5 June 2014). "From pre-history to beyond the global thermonuclear war". Retrieved 29 July 2014. http://ppaalanen.blogspot.de/2014/06/from-pre-history-to-beyond-global.html
Vetter, Daniel (5 August 2015). "Atomic mode setting design overview, part 1". LWN.net. Retrieved 7 May 2016. https://lwn.net/Articles/653071/
Vetter, Daniel (5 August 2015). "Atomic mode setting design overview, part 1". LWN.net. Retrieved 7 May 2016. https://lwn.net/Articles/653071/
Reding, Thierry (1 February 2015). "Atomic Mode-Setting" (PDF). FOSDEM Archives. Retrieved 7 May 2016. https://archive.fosdem.org/2015/schedule/event/kms_atomic/attachments/slides/740/export/events/attachments/kms_atomic/slides/740/atomic_modesetting.pdf
Vetter, Daniel (5 August 2015). "Atomic mode setting design overview, part 1". LWN.net. Retrieved 7 May 2016. https://lwn.net/Articles/653071/
Reding, Thierry (1 February 2015). "Atomic Mode-Setting" (PDF). FOSDEM Archives. Retrieved 7 May 2016. https://archive.fosdem.org/2015/schedule/event/kms_atomic/attachments/slides/740/export/events/attachments/kms_atomic/slides/740/atomic_modesetting.pdf
Vetter, Daniel (5 August 2015). "Atomic mode setting design overview, part 1". LWN.net. Retrieved 7 May 2016. https://lwn.net/Articles/653071/
Vetter, Daniel (5 August 2015). "Atomic mode setting design overview, part 1". LWN.net. Retrieved 7 May 2016. https://lwn.net/Articles/653071/
Vetter, Daniel (12 August 2015). "Atomic mode setting design overview, part 2". LWN.net. Retrieved 7 May 2016. https://lwn.net/Articles/653466/
Herrmann, David (1 September 2013). "Splitting DRM and KMS device nodes". Retrieved 23 July 2014. http://dvdhrm.wordpress.com/2013/09/01/splitting-drm-and-kms-device-nodes/
Herrmann, David (29 May 2013). "DRM Render- and Modeset-Nodes". Retrieved 21 July 2014. http://dvdhrm.wordpress.com/2013/05/29/drm-render-and-modeset-nodes/
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - Render nodes". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-uapi.html#render-nodes
Herrmann, David (29 May 2013). "DRM Render- and Modeset-Nodes". Retrieved 21 July 2014. http://dvdhrm.wordpress.com/2013/05/29/drm-render-and-modeset-nodes/
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - Render nodes". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-uapi.html#render-nodes
Herrmann, David (1 September 2013). "Splitting DRM and KMS device nodes". Retrieved 23 July 2014. http://dvdhrm.wordpress.com/2013/09/01/splitting-drm-and-kms-device-nodes/
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - Render nodes". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-uapi.html#render-nodes
Herrmann, David (1 September 2013). "Splitting DRM and KMS device nodes". Retrieved 23 July 2014. http://dvdhrm.wordpress.com/2013/09/01/splitting-drm-and-kms-device-nodes/
Herrmann, David (1 September 2013). "Splitting DRM and KMS device nodes". Retrieved 23 July 2014. http://dvdhrm.wordpress.com/2013/09/01/splitting-drm-and-kms-device-nodes/
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - Render nodes". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-uapi.html#render-nodes
"Linux 2.6.33 - Nouveau, a driver for Nvidia graphic cards". Linux Kernel Newbies. Retrieved 26 April 2016. http://kernelnewbies.org/Linux_2_6_33#head-ef4ca9ac1fa7bdec15f40718c2cf216b4f3c9472
"drm/nouveau: Add DRM driver for NVIDIA GPUs". Kernel.org. Retrieved 27 January 2015. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=6ee738610f41b59733f63718f0bdbcba7d3a3f12
"DRM: add DRM Driver for Samsung SoC EXYNOS4210". Kernel.org. Retrieved 3 March 2016. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1c248b7d2960faec3e1b8f3f9c5d9d0df28e0a3c
"vmwgfx: Take the driver out of staging". Kernel.org. Retrieved 3 March 2016. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=5a7b74beca675968f612ad6188808ed67ac58e36
"Linux 3.3 - DriverArch - Graphics". Linux Kernel Newbies. Retrieved 3 March 2016. http://kernelnewbies.org/Linux_3.3_DriverArch#head-55c126b70d6e61f4496629a7f19a3be36d1ea84a
Larabel, Michael (10 January 2012). "The Linux 3.3 DRM Pull Is Heavy On Enhancements". Phoronix. Retrieved 3 March 2016. https://www.phoronix.com/scan.php?page=news_item&px=MTA0MDk
"drm: Initial KMS driver for AST (ASpeed Technologies) 2000 series (v2)". Kernel.org. Retrieved 3 March 2016. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=312fec1405dd546ddb3fa6387d54e78f604dd8f8
Airlie, Dave (17 May 2012). "mgag200: initial g200se driver (v2)". Retrieved 24 January 2018. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=414c453106255b11df77ed6b08eedb6d2369c338
"drm: Renesas SH Mobile DRM driver". Kernel.org. Retrieved 3 March 2016. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=51c1327876f35d61c8bdd81fc96e1b501c9380ee
"drm: Add NVIDIA Tegra20 support". Kernel.org. Retrieved 3 March 2016. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d8f4a9eda006788d8054b8500d9eb5b6efcd8755
"drm/omap: move out of staging". Kernel.org. Retrieved 3 March 2016. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8bb0daffb0b8e45188066255b4203446eae181f1
"drm: Renesas R-Car Display Unit DRM driver". Kernel.org. Retrieved 3 March 2016. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4bf8e1962f91eed5dbee168d2348983dda0a518f
"drm/msm: basic KMS driver for snapdragon". Kernel.org. Retrieved 3 March 2016. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c8afe684c95cd17cf4f273d81af369a0fdfa5a74
Larabel, Michael (28 August 2013). "Snapdragon DRM/KMS Driver Merged For Linux 3.12". Phoronix. Retrieved 26 January 2015. https://www.phoronix.com/scan.php?page=news_item&px=MTQ0NzQ
Edge, Jake (8 April 2015). "An update on the freedreno graphics driver". LWN.net. Retrieved 23 April 2015. https://lwn.net/Articles/638908/
King, Russell (18 October 2013). "[GIT PULL] Armada DRM support". dri-devel (Mailing list). http://lists.freedesktop.org/archives/dri-devel/2013-October/047640.html
"DRM: Armada: Add Armada DRM driver". Kernel.org. Retrieved 3 March 2016. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=96f60e37dc66091bde8d5de136ff6fda09f2d799
"drm/bochs: new driver". Kernel.org. Retrieved 3 March 2016. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0a6659bdc5e8221da99eebb176fd9591435e38de
Larabel, Michael (8 August 2014). "Linux 3.17 DRM Pull Brings New Graphics Driver". Phoronix. Retrieved 3 March 2016. https://www.phoronix.com/scan.php?page=news_item&px=MTc1NzY
Corbet, Jonathan (13 August 2014). "3.17 merge window, part 2". LWN.net. Retrieved 7 October 2014. https://lwn.net/Articles/608434/
Corbet, Jonathan (17 December 2014). "3.19 Merge window part 2". LWN.net. Retrieved 9 February 2015. https://lwn.net/Articles/626150/
"drm: imx: Move imx-drm driver out of staging". Kernel.org. Retrieved 9 February 2015. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=6556f7f82b9c401950d703072c0d8137b6f9f516
Corbet, Jonathan (17 December 2014). "3.19 Merge window part 2". LWN.net. Retrieved 9 February 2015. https://lwn.net/Articles/626150/
"drm: rockchip: Add basic drm driver". Kernel.org. Retrieved 3 March 2016. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=2048e3286f347db5667708e47448176b5329e8d8#diff-ed4f42f4bcd152f16e2ba81c4c5fda03
Deucher, Alex (20 April 2015). "Initial amdgpu driver release". dri-devel (Mailing list). http://lists.freedesktop.org/archives/dri-devel/2015-April/081501.html
Larabel, Michael (25 June 2015). "Linux 4.2 DRM Updates: Lots Of AMD Attention, No Nouveau Driver Changes". Phoronix. Retrieved 31 August 2015. https://www.phoronix.com/scan.php?page=news_item&px=Linux-4.2-Kernel-DRM
Corbet, Jonathan (1 July 2015). "4.2 Merge window part 2". LWN.net. Retrieved 31 August 2015. https://lwn.net/Articles/649652/
Deucher, Alex (3 August 2015). "[PATCH 00/11] Add Fiji Support". dri-devel (Mailing list). http://lists.freedesktop.org/archives/dri-devel/2015-August/087587.html
"Add virtio gpu driver". Kernel.org. Retrieved 3 March 2016. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dc5698e80cf724770283e10414054662bdf6ccfa
Corbet, Jonathan (11 November 2015). "4.4 Merge window, part 1". LWN.net. Retrieved 11 January 2016. https://lwn.net/Articles/663742/
Larabel, Michael (15 November 2015). "A Look At The New Features Of The Linux 4.4 Kernel". Phoronix. Retrieved 11 January 2016. https://www.phoronix.com/scan.php?page=article&item=linux-44-features&num=1
"drm/vc4: Add KMS support for Raspberry Pi". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c8b75bca92cbf064b9fa125fc74a85994452e935
"Linux 4.5-DriversArch - Graphics". Linux Kernel Newbies. Retrieved 14 March 2016. http://kernelnewbies.org/Linux_4.5-DriversArch#head-bf8f7e938057931a7faa7e22547a108c01aba222
Larabel, Michael (24 January 2016). "The Many New Features & Improvements Of The Linux 4.5 Kernel". Phoronix. Retrieved 14 March 2016. https://www.phoronix.com/scan.php?page=article&item=linux-45-features&num=1
Corbet, Jonathan (20 January 2016). "4.5 merge window part 2". LWN.Net. Retrieved 14 March 2016. https://lwn.net/Articles/672344/
"Merge tag 'sun4i-drm-for-4.7'". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d3a8f6784a9cb47c344073624491e571ff1616ec
Airlie, Dave (23 May 2016). "[git pull] drm for v4.7". dri-devel (Mailing list). https://lists.freedesktop.org/archives/dri-devel/2016-May/108049.html
"Merge tag 'drm-hisilicon-next-2016-04-29'". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4946dd2e14d252cd04e188ed6a4b794541d1c3ce
Airlie, Dave (23 May 2016). "[git pull] drm for v4.7". dri-devel (Mailing list). https://lists.freedesktop.org/archives/dri-devel/2016-May/108049.html
"Merge tag 'mediatek-drm-2016-05-09'". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=2e726dc4b4e2dd3ae3fe675f9d3af88a2d593ee1
Airlie, Dave (23 May 2016). "[git pull] drm for v4.7". dri-devel (Mailing list). https://lists.freedesktop.org/archives/dri-devel/2016-May/108049.html
Larabel, Michael (22 November 2016). "Hisilicon Hibmc DRM Driver Being Added For Linux 4.10". Phoronix. Retrieved 24 January 2018. https://www.phoronix.com/scan.php?page=news_item&px=Hisilicon-Hibmc-DRM-Linux-4.10
"Huawei FusionServer RH5885 V3 Technical White Paper". 18 November 2016. Archived from the original on 2018-01-25. uses an onboard display chip that is integrated into the management chip Hi1710 and uses the IP core of the SM750 https://web.archive.org/web/20180125015931/http://e-file.huawei.com/en/material/MaterialDownload?materialid=77d7cd3156c646abbcbaaa20cd4f0358
"drm/vkms: Introduce basic VKMS driver". git.kernel.org. Retrieved 2022-07-20. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1c7c5fd916a0ff66501467f1e8e79d3ff8eca112
Larabel, Michael (15 August 2018). "Virtual Kernel Mode-Setting Driver Being Added To Linux 4.19". Phoronix. Retrieved 20 July 2022. https://www.phoronix.com/scan.php?page=news_item&px=Virtual-KMS-VKMS-Linux-4.19
"kernel/git/torvalds/linux.git - Linux kernel source tree". git.kernel.org. Retrieved 2019-11-28. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/gpu/drm/lima?id=a1d2a6339961efc078208dc3b2f006e9e9a8e119
Larabel, Michael (9 May 2019). "Linux 5.2 DRM Makes Icelake Production-Ready, Adds Lima & Panfrost Drivers". Phoronix. Retrieved 20 July 2022. https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.2-DRM-Update
"kernel/git/torvalds/linux.git - Linux kernel source tree". git.kernel.org. Retrieved 2019-11-28. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/gpu/drm/panfrost?id=f3ba91228e8e917e5bd6c4b72bfe846933d17370
Larabel, Michael (9 May 2019). "Linux 5.2 DRM Makes Icelake Production-Ready, Adds Lima & Panfrost Drivers". Phoronix. Retrieved 20 July 2022. https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.2-DRM-Update
"drm/vboxvideo: Move the vboxvideo driver out of staging". git.kernel.org. Retrieved 2022-07-20. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=131abc56e1bacef23cb7b340519d36e2f5adb2a9
Larabel, Michael (9 May 2019). "Linux 5.2 DRM Makes Icelake Production-Ready, Adds Lima & Panfrost Drivers". Phoronix. Retrieved 20 July 2022. https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.2-DRM-Update
"drm/hyperv: Add DRM driver for hyperv synthetic video device". git.kernel.org. Retrieved 2021-08-30. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=76c56a5affeba1e163b66b9d8cc192e6154466f0
Larabel, Michael (9 June 2021). "Microsoft's Hyper-V DRM Display Driver Will Land For Linux 5.14". Phoronix. Retrieved 30 August 2021. https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.14-Hyper-V-Display
"drm: Add simpledrm driver". git.kernel.org. Retrieved 2021-08-30. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=11e8f5fd223bd4d33fa10527bad3fe48469a15df
Larabel, Michael (13 May 2021). "Linux 5.14 To Bring SimpleDRM Driver, VC4 HDR, Marks More AGP Code As Legacy". Phoronix. Retrieved 30 August 2021. https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.14-Initial-DRM-Misc
"drm/ofdrm: Add ofdrm for Open Firmware framebuffers". git.kernel.org. Retrieved 21 February 2023. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c8a17756c42581ba1a567d1dd3b69e8f5619a7d8
Larabel, Michael (20 October 2022). "Open Firmware DRM Driver "OFDRM" Queuing For Linux 6.2". Phoronix. Retrieved 21 February 2023. https://www.phoronix.com/news/Linux-6.2-OFDRM
"drm: Add kms driver for loongson display controller". git.kernel.org. Retrieved 23 February 2024. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f39db26c54281da6a785259498ca74b5e470476f
Larabel, Michael (13 July 2023). "Open-Source Graphics Driver Updates Begin Queuing For Linux 6.6". Phoronix. Retrieved 23 February 2024. https://www.phoronix.com/news/Linux-6.6-Initial-DRM-Misc-Next
"drm/imagination: Add skeleton PowerVR driver". git.kernel.org. Retrieved 27 May 2024. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4babef0708656c54e67ee0ee3994ee98898f51d1
Larabel, Michael (23 November 2023). "Imagination PowerVR Open-Source GPU Driver To Be Introduced In Linux 6.8". Phoronix. Retrieved 27 May 2024. https://www.phoronix.com/news/Imagination-PVR-Linux-6.8-DRM
"drm/xe: Introduce a new DRM driver for Intel GPUs". git.kernel.org. Retrieved 27 May 2024. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dd08ebf6c3525a7ea2186e636df064ea47281987
Larabel, Michael (15 December 2023). "Intel's New "Xe" Kernel Graphics Driver Submitted Ahead Of Linux 6.8". Phoronix. Retrieved 27 May 2024. https://www.phoronix.com/news/Intel-Xe-Submission-Linux-6.8
"drm: remove the gamma driver". Kernel.org. Retrieved 27 January 2015. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1fad99499afdd2730adb1d53413b91580b1f0662
"[DRM]: Delete sparc64 FFB driver code that never gets built". Kernel.org. Retrieved 27 January 2015. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b82f87f6d40f944a591d8d36c0fed2d4374efcb7
"drm: Remove the obsolete driver-tdfx". Kernel.org. Retrieved 23 February 2024. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cfc8860eacec5da2ee2880c502b10daf196c6cbb
"drm: Remove the obsolete driver-mga". Kernel.org. Retrieved 23 February 2024. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=96ed7db55bef1db201aaaef2761416c4e64e1245
"drm: Remove the obsolete driver-r128". Kernel.org. Retrieved 23 February 2024. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28483b8666bfe7d0ec34cfc492d77e64f97f6de1
"drm: Remove the obsolete driver-i810". Kernel.org. Retrieved 23 February 2024. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cab18866feade5ffa0cadc5e632528b2050e8e28
"drm: Remove the obsolete driver-sis". Kernel.org. Retrieved 23 February 2024. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=20efabc2e80be1df79510b8be9ca004d3ce9be11
"drm: remove i830 driver". Kernel.org. Retrieved 27 January 2015. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7f50684717511d30bba180902105c4cd4efca732
"drm: Add via unichrome support". Kernel.org. Retrieved 27 January 2015. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=22f579c621e2f264e6d093b07d75f99bc97d5df2
"drm: Remove the obsolete driver-via". Kernel.org. Retrieved 23 February 2024. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8391e000065d4fac88548e071fc43c3e07cb7047
"drm: add savage driver". Kernel.org. Retrieved 27 January 2015. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=282a16749ba63256bcdce2766817f46aaac4dc20
"drm: Remove the obsolete driver-savage". Kernel.org. Retrieved 23 February 2024. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7872bc2cb13e4dd83d193d50a835e179f449ab07
"List of maintainers of the linux kernel". Kernel.org. Retrieved 14 July 2014. https://www.kernel.org/doc/linux/MAINTAINERS
"libdrm git repository". Retrieved 23 July 2014. http://cgit.freedesktop.org/mesa/drm/
"First DRI release of 3dfx driver". Mesa 3D. Retrieved 15 July 2014. http://cgit.freedesktop.org/mesa/drm/commit/?id=b6a28bfe98f2c89cfb91079bd3c7b63fb0144eb1
"Import 2.3.18pre1". The History of Linux in GIT Repository Format 1992-2010 (2010). Retrieved 15 July 2014. http://repo.or.cz/w/davej-history.git/commit/9af6f6e4860e86507da2d470dd6a3bee34bf58c2
Torvalds, Linus. "Linux 2.4.0 source code". Kernel.org. Retrieved 29 July 2014. https://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.0.tar.gz
Airlie, Dave (4 September 2004). "New proposed DRM interface design". dri-devel (Mailing list). https://lwn.net/Articles/100839/
Airlie, Dave (30 December 2004). "[bk pull] drm core/personality split". linux-kernel (Mailing list). https://lwn.net/Articles/117419/
Torvalds, Linus (11 January 2005). "Linux 2.6.11-rc1". linux-kernel (Mailing list). /wiki/Linus_Torvalds
Gettys, James; Packard, Keith (15 June 2004). "The (Re)Architecture of the X Window System". Retrieved 30 April 2016. http://keithp.com/~keithp/talks/xarch_ols2004/xarch-ols2004-html/
Smirl, Jon (30 August 2005). "The State of Linux Graphics". Retrieved 30 April 2016. I believe the best solution to this problem is for the kernel to provide a single, comprehensive device driver for each piece of video hardware. This means that conflicting drivers like fbdev and DRM must be merged into a cooperating system. It also means that poking hardware from user space while a kernel based device driver is loaded should be prevented. https://sites.google.com/site/jonsmirl/graphics
Packard, Keith (16 September 2007). "kernel-mode-drivers". Retrieved 30 April 2016. http://keithp.com/blogs/kernel-mode-drivers/
Verhaegen, Luc (2 March 2006). "X and Modesetting: Atrophy illustrated" (PDF). Retrieved 30 April 2016. https://people.freedesktop.org/~libv/X_and_Modesetting_-_Atrophy_illustrated_%28paper%29.pdf
Packard, Keith (16 September 2007). "kernel-mode-drivers". Retrieved 30 April 2016. http://keithp.com/blogs/kernel-mode-drivers/
Barnes, Jesse (17 May 2007). "[RFC] enhancing the kernel's graphics subsystem". linux-kernel (Mailing list). https://lwn.net/Articles/235120/
Glisse, Jerome (4 December 2007). "Radeon kernel modesetting". Retrieved 30 April 2016. http://jglisse.livejournal.com/852.html
Larabel, Michael (1 October 2008). "The State of Kernel Mode-Setting". Phoronix. Retrieved 30 April 2016. https://www.phoronix.com/scan.php?page=article&item=xorg_kms_2008&num=1
Packard, Keith (21 July 2008). "X output status july 2008". Retrieved 1 May 2016. http://keithp.com/blogs/X_output_status_july_2008/
"drm: reorganise drm tree to be more future proof". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c0e09200dc0813972442e550a5905a132768e56c
Corbet, Jonathan (6 November 2007). "Memory management for graphics processors". LWN.net. Retrieved 23 July 2014. https://lwn.net/Articles/257417/
Corbet, Jonathan (6 November 2007). "Memory management for graphics processors". LWN.net. Retrieved 23 July 2014. https://lwn.net/Articles/257417/
Corbet, Jonathan (28 May 2008). "GEM v. TTM". LWN.net. Retrieved 10 February 2015. https://lwn.net/Articles/283793/
Packard, Keith; Anholt, Eric (13 May 2008). "GEM - the Graphics Execution Manager". dri-devel mailing list. Retrieved 23 July 2014. https://lwn.net/Articles/283798/
"Linux 2.6.28 - The GEM Memory Manager for GPU memory". Linux Kernel Newbies. Retrieved 23 July 2014. http://kernelnewbies.org/Linux_2_6_28#head-b957b19f6139b6bbbfabaf790bf643b1746985d6
"drm: Add the TTM GPU memory manager subsystem". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ba4e7d973dd09b66912ac4c0856add8b0703a997
"Linux 2.6.29 - Kernel Modesetting". Linux Kernel Newbies. Retrieved 19 November 2015. http://kernelnewbies.org/Linux_2_6_29#head-e1bab8dc862e3b477cc38d87e8ddc779a66509d1
"DRM: add mode setting support". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f453ba0460742ad027ae0c4c7d61e62817b3e7ef
"DRM: i915: add mode setting support". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=79e539453b34e35f39299a899d263b0a1f1670bd
Anholt, Eric (22 December 2008). "[ANNOUNCE] libdrm-2.4.3". dri-devel (Mailing list). https://lists.x.org/archives/xorg-announce/2008-December/000735.html
Barnes, Jesse (20 October 2008). "[ANNOUNCE] xf86-video-intel 2.5.0". xorg-announce (Mailing list). https://lists.freedesktop.org/archives/xorg-announce/2008-October/000677.html
"Linux 2.6.31 - ATI Radeon Kernel Mode Setting support". Linux Kernel Newbies. Archived from the original on 5 November 2015. Retrieved 28 April 2016. https://web.archive.org/web/20151105025721/http://kernelnewbies.org/Linux_2_6_31#head-78158343fc06e5e289f2ccaf51d6a30090a46524
Torvalds, Linus (9 September 2009). "Linux 2.6.31". linux-kernel (Mailing list). /wiki/Linus_Torvalds
"drm/radeon: introduce kernel modesetting for radeon hardware". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=771fe6b912fca54f03e8a72eb63058b582775362
Larabel, Michael (26 August 2008). "A GEM-ified TTM Manager For Radeon". Phoronix. Retrieved 24 April 2016. https://www.phoronix.com/scan.php?page=news_item&px=NjY3Ng
"Linux 2.6.33 - Nouveau, a driver for Nvidia graphic cards". Linux Kernel Newbies. Retrieved 26 April 2016. http://kernelnewbies.org/Linux_2_6_33#head-ef4ca9ac1fa7bdec15f40718c2cf216b4f3c9472
"drm/nouveau: Add DRM driver for NVIDIA GPUs". Kernel.org. Retrieved 27 January 2015. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=6ee738610f41b59733f63718f0bdbcba7d3a3f12
"The irregular Nouveau Development Companion #40". Nouveau project. Retrieved 3 May 2016. https://nouveau.freedesktop.org/wiki/Nouveau_Companion_40/
"Linux 2.6.33 - Graphic improvements". Linux Kernel Newbies. Retrieved 28 April 2016. http://kernelnewbies.org/Linux_2_6_33#head-7b9aa9665c31092b57f38ae4ee0c3627172cdf1b
"drm/kms: add page flipping ioctl". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d91d8a3f88059d93e34ac70d059153ec69a9ffc7
"Linux 2.6.38 - Graphics". Linux Kernel Newbies. Retrieved 28 April 2016. http://kernelnewbies.org/Linux_2_6_38-DriversArch#head-647f92e38d919f452ea858999f3ece9ccc6f46df
Airlie, Dave (21 December 2009). "[ANNOUNCE] libdrm 2.4.17". dri-devel (Mailing list). https://marc.info/?l=dri-devel&m=126137228704400
"drm: dumb scanout create/mmap for intel/radeon (v3)". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ff72145badb834e8051719ea66e024784d000cb4
"Linux 2 6 39-DriversArch". Linux Kernel Newbies. Retrieved 19 April 2016. http://kernelnewbies.org/Linux_2_6_39-DriversArch#head-94ecdcc82ca5e98eb1d56c20c0ef1a1274737078
Barnes, Jesse; Pinchart, Laurent; Vetter, Daniel; Wunner, Lukas. "Linux GPU Driver Developer's Guide - Dumb Buffer Objects". Retrieved 31 August 2016. https://dri.freedesktop.org/docs/drm/gpu/drm-kms.html#dumb-buffer-objects
Wilson, Chris (11 April 2011). "[ANNOUNCE] libdrm 2.4.25". dri-devel (Mailing list). https://lists.freedesktop.org/archives/dri-devel/2011-April/010031.html
Barnes, Jesse (25 April 2011). "[RFC] drm: add overlays as first class KMS objects". dri-devel (Mailing list). https://lists.freedesktop.org/archives/dri-devel/2011-April/010559.html
Barnes, Jesse (13 May 2011). "[RFC] drm: add overlays as first class KMS objects". dri-devel (Mailing list). https://lists.freedesktop.org/archives/dri-devel/2011-May/011178.html
"drm: add plane support v3". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8cf5c9177151537e73ff1816540e4ba24b174391
"drm: add generic ioctls to get/set properties on any object". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c543188afb7a83e66161c026dc6fd5eb38dc0b63
Widawsky, Ben (27 June 2012). "[ANNOUNCE] libdrm 2.4.36". xorg-announce (Mailing list). https://lists.x.org/archives/xorg-announce/2012-June/001984.html
Airlie, Dave (12 March 2010). "GPU offloading - PRIME - proof of concept". Archived from the original on 10 February 2015. Retrieved 10 February 2015. https://web.archive.org/web/20150210173401/http://airlied.livejournal.com/71734.html
Larabel, Michael. "Proof Of Concept: Open-Source Multi-GPU Rendering!". Phoronix. Retrieved 14 April 2016. https://www.phoronix.com/scan.php?page=news_item&px=ODA1OQ
Airlie, Dave (12 March 2010). "GPU offloading - PRIME - proof of concept". Archived from the original on 10 February 2015. Retrieved 10 February 2015. https://web.archive.org/web/20150210173401/http://airlied.livejournal.com/71734.html
Larabel, Michael (23 February 2012). "DRM Base PRIME Support Part Of VGEM Work". Phoronix. Retrieved 14 April 2016. https://www.phoronix.com/scan.php?page=news_item&px=MTA2MTM
Airlie, Dave (27 March 2012). "[PATCH] drm: base prime/dma-buf support (v5)". dri-devel (Mailing list). https://lists.freedesktop.org/archives/dri-devel/2012-March/020611.html
Larabel, Michael (30 March 2012). "Last Minute For Linux 3.4: DMA-BUF PRIME Support". Phoronix. Retrieved 15 April 2016. https://www.phoronix.com/scan.php?page=news_item&px=MTA3OTQ
"drm: base prime/dma-buf support (v5)". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3248877ea1796915419fba7c89315fdbf00cb56a
"Linux 3.4 DriverArch". Linux Kernel Newbies. Retrieved 15 April 2016. http://kernelnewbies.org/Linux_3.4_DriverArch
Anholt, Eric (10 May 2012). "[ANNOUNCE] libdrm 2.4.34". dri-devel (Mailing list). https://lists.freedesktop.org/archives/xorg-announce/2012-May/001948.html
Larabel, Michael (12 May 2012). "DMA-BUF PRIME Coming Together For Linux 3.5". Phoronix. Retrieved 15 April 2016. https://www.phoronix.com/scan.php?page=news_item&px=MTEwMjA
"Linux 3.5 DriverArch". Linux Kernel Newbies. Retrieved 15 April 2016. http://kernelnewbies.org/Linux_3.5_DriverArch
Herrmann, David (29 May 2013). "DRM Render- and Modeset-Nodes". Retrieved 21 July 2014. http://dvdhrm.wordpress.com/2013/05/29/drm-render-and-modeset-nodes/
Corbet, Jonathan (11 September 2013). "3.12 merge window, part 2". LWN.net. Retrieved 21 July 2014. https://lwn.net/Articles/566122/
"drm: implement experimental render nodes". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1793126fcebd7c18834f95d43b55e387a8803aa8
"drm/i915: Support render nodes". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=10ba50129ab0bdbc0ee712e50913d1c8db88c5f0
"drm/radeon: Support render nodes". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f33bcab9e816c5bf56b74c3007790f2a256910eb
"drm/nouveau: Support render nodes". Kernel.org. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7d7612582c15af8772c2fb2473d5fc7eebfefae2
Corbet, Jonathan (13 August 2014). "3.17 merge window, part 2". LWN.net. Retrieved 7 October 2014. https://lwn.net/Articles/608434/
Roper, Matt (7 March 2014). "[RFCv2 00/10] Universal plane support". dri-devel (Mailing list). http://lists.freedesktop.org/archives/dri-devel/2014-March/055222.html
Paalanen, Pekka (5 June 2014). "From pre-history to beyond the global thermonuclear war". Retrieved 29 July 2014. http://ppaalanen.blogspot.de/2014/06/from-pre-history-to-beyond-global.html
Larabel, Michael (2 April 2014). "Universal Plane Support Set For Linux 3.15". Phoronix. Retrieved 14 April 2016. https://www.phoronix.com/scan.php?page=news_item&px=MTY1MTg
Lankhorst, Maarten (25 July 2014). "[ANNOUNCE] libdrm 2.4.55". dri-devel (Mailing list). https://lists.freedesktop.org/archives/dri-devel/2014-July/064703.html
Vetter, Daniel (7 August 2014). "Neat stuff for 3.17". Retrieved 14 April 2016. http://blog.ffwll.ch/2014/08/neat-stuff-for-317.html
Barnes, Jesse (15 February 2012). "[RFC] drm: atomic mode set API". dri-devel (Mailing list). https://lists.freedesktop.org/archives/dri-devel/2012-February/019165.html
Syrjälä, Ville (24 May 2012). "[RFC][PATCH 0/6] WIP: drm: Atomic mode setting idea". dri-devel (Mailing list). https://lists.freedesktop.org/archives/dri-devel/2012-May/023398.html
Clark, Rob (9 September 2012). "[RFC 0/9] nuclear pageflip". dri-devel (Mailing list). https://lists.freedesktop.org/archives/dri-devel/2012-September/027506.html
Clark, Rob (6 October 2013). "[RFCv1 00/12] Atomic/nuclear modeset/pageflip". dri-devel (Mailing list). https://lists.freedesktop.org/archives/dri-devel/2013-October/046618.html
Vetter, Daniel (7 August 2014). "Neat stuff for 3.17". Retrieved 14 April 2016. http://blog.ffwll.ch/2014/08/neat-stuff-for-317.html
Vetter, Daniel (3 February 2016). "Embrace the Atomic Display Age" (PDF). Retrieved 4 May 2016. https://people.freedesktop.org/~danvet/presentations/lca-2016.pdf
Vetter, Daniel (2 November 2014). "Atomic Modeset Support for KMS Drivers". Retrieved 4 May 2016. http://blog.ffwll.ch/2014/11/atomic-modeset-support-for-kms-drivers.html
Airlie, Dave (14 December 2014). "[git pull] drm for 3.19-rc1". dri-devel (Mailing list). https://lists.freedesktop.org/archives/dri-devel/2014-December/073956.html
Vetter, Daniel (28 January 2015). "Update for Atomic Display Updates". Retrieved 4 May 2016. http://blog.ffwll.ch/2015/01/update-for-atomic-display-updates.html
Airlie, Dave (15 February 2015). "[git pull] drm pull for 3.20-rc1". dri-devel (Mailing list). https://lists.freedesktop.org/archives/dri-devel/2015-February/077595.html
"Linux 4.0 - DriverArch - Graphics". Linux Kernel Newbies. Retrieved 3 May 2016. http://kernelnewbies.org/Linux_4.0-DriversArch#head-bd65a3376f9359d60c2230cfc06625a9849139bb
"Linux 4.2 - Atomic modesetting API enabled by default". Linux Kernel Newbies. Retrieved 3 May 2016. http://kernelnewbies.org/Linux_4.2#head-a3780edb904ea47c235cd6a4b226539228d50e17
Velikov, Emil (29 June 2015). "[ANNOUNCE] libdrm 2.4.62". dri-devel (Mailing list). https://lists.freedesktop.org/archives/dri-devel/2015-June/085375.html
Vetter, Daniel (6 June 2016). "Awesome Atomic Advances". Retrieved 7 June 2016. right now there's 17 drivers supporting atomic modesetting merged into the DRM subsystem http://blog.ffwll.ch/2016/06/awesome-atomic-advances.html
Stone, Daniel (20 March 2018). "A new era for Linux's low-level graphics - Part 1". Retrieved 5 May 2018. https://www.collabora.com/news-and-blog/blog/2018/03/20/a-new-era-for-linux-low-level-graphics-part-1/
Herrmann, David (10 December 2012). "KMSCON Introduction". Retrieved 22 November 2015. http://dvdhrm.wordpress.com/2012/12/10/kmscon-introduction/
"Linux, Solaris, and FreeBSD driver 358.09 (beta)". 2015-12-10. https://devtalk.nvidia.com/default/topic/884727/linux-solaris-and-freebsd-driver-358-09-beta-/?offset=1