Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Direct Rendering Manager
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Overview == The [[Linux kernel]] already had an [[Application programming interface|API]] called [[Linux framebuffer|fbdev]], used to manage the [[framebuffer]] of a [[graphics adapter]],{{r|fb doc}} but it couldn't be used to handle the needs of modern 3D-accelerated [[GPU]]-based video hardware. These devices usually require setting and managing a command queue in [[Video RAM|their own memory]] to dispatch commands to the GPU and also require management of buffers and free space within that memory.{{r|White}} Initially, user-space programs (such as the [[X Window System|X Server]]) directly managed these resources, but they usually acted as if they were the only ones with access to them. When two or more programs tried to control the same hardware at the same time, and set its resources each one in its own way, most times they ended catastrophically.{{r|White}} {{multiple image | footer = DRM allows multiple programs concurrent access to the 3D video card, avoiding collisions. | image1 = Access to video card without DRM.svg | alt1 = Access to video card without DRM | caption1 = Without DRM | image2 = Access to video card with DRM.svg | alt2 = Access to video card with DRM | caption2 = With DRM }} The Direct Rendering Manager was created to allow multiple programs to use video hardware resources cooperatively.{{r|Faith 1999}} 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.{{r|Corbet 2007}}{{r|Packard Anholt 2008}} 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.{{r|Airlie 2010}}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)