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 Infrastructure
(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!
== Software architecture == The basic architecture of the Direct Rendering Infrastructure involves three main components:<ref name="Martin et all 1999 DRI low level">{{cite web|last1=Martin|first1=Kevin E.|last2=Faith|first2=Rickard E.|last3=Owen|first3=Jens|last4=Akin|first4=Allen|title=Direct Rendering Infrastructure, Low-Level Design Document|url=http://dri.sourceforge.net/doc/design_low_level.html|access-date=18 May 2016|date=11 May 1999|archive-date=23 July 2016|archive-url=https://web.archive.org/web/20160723091323/http://dri.sourceforge.net/doc/design_low_level.html|url-status=dead}}</ref> * the DRI client —for example, an X client performing "direct rendering"— needs a hardware-specific "driver" able to manage the current video card or graphics adapter in order to render on it. These ''DRI drivers'' are typically provided as [[shared libraries]] to which the client is [[Dynamic linker|dynamically linked]]. Since DRI was conceived to take advantage of 3D graphics hardware, the libraries are normally presented to clients as hardware-accelerated implementations of a 3D API such as [[OpenGL]], provided by either the 3D-hardware vendor itself or a third party such as the [[Mesa 3D]] [[free software]] project. * the X Server provides an [[X Window System core protocol|X11 protocol extension]] —the DRI extension— that the DRI clients use to coordinate with both the [[windowing system]] and the DDX driver.<ref name="DRI extension">{{cite web|last1=Owen|first1=Jens|last2=Martin|first2=Kevin|title=DRI Extension for supporting Direct Rendering - Protocol Specification|url=http://dri.sourceforge.net/doc/dri_extensions_low_level.txt|access-date=18 May 2016|date=11 May 1999}}</ref> As part of the DDX driver, it's quite common that the X Server process also dynamically links to the same DRI driver that the DRI clients do, but to provide hardware-accelerated 3D rendering to the X clients using the [[GLX]] extension for indirect rendering (for example, remote X clients that can't use direct rendering). For 2D rendering, the DDX driver must also take into account the DRI clients using the same graphics device. * the access to the video card or graphics adapter is regulated by a kernel component called the [[Direct Rendering Manager]] (DRM).<ref name="Faith 1999">{{cite web|last1=Faith|first1=Rickard E.|title=The Direct Rendering Manager: Kernel Support for the Direct Rendering Infrastructure|url=https://dri.sourceforge.net/doc/drm_low_level.html|date=11 May 1999|access-date=18 May 2016|archive-date=21 May 2024|archive-url=https://web.archive.org/web/20240521055530/https://dri.sourceforge.net/doc/drm_low_level.html|url-status=dead}}</ref> Both the X Server's DDX driver and each X client's DRI driver must use DRM to access the graphics hardware. DRM provides [[Synchronization (computer science)|synchronization]] to the shared resources of the graphics hardware —resources such as the command queue, the card registers, the video memory, the DMA engines, ...— ensuring that the concurrent access of all those multiple competing user-space processes don't interfere with each other. DRM also serves as a basic security enforcer that doesn't allow any X client to access the hardware beyond what it needs to perform the 3D rendering.
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)