Infraestructura de renderització directa

marc de programari

La Direct Rendering Infrastructure (DRI) és el marc que inclou la moderna pila de gràfics de Linux que permet als programes d'espai d'usuari sense privilegis emetre ordres al maquinari gràfic sense entrar en conflicte amb altres programes.[1] L'ús principal de DRI és proporcionar acceleració de maquinari per a la implementació de Mesa d' OpenGL. DRI també s'ha adaptat per proporcionar acceleració OpenGL en una consola framebuffer sense un servidor de visualització en funcionament.[2]

Infraestructura de renderització directa

Tipusentorn de treball Modifica el valor a Wikidata
Versió inicialagost 1998 Modifica el valor a Wikidata
Llicènciallicència MIT Modifica el valor a Wikidata
Característiques tècniques
Escrit enC Modifica el valor a Wikidata
Equip
Desenvolupador(s)freedesktop.org Modifica el valor a Wikidata
Més informació
Lloc webdri.freedesktop.org… Modifica el valor a Wikidata
SourceForgedri Modifica el valor a Wikidata

Glamour simplificarà el servidor X i libGL-fglrx-glx podria utilitzar el libDRM del controlador de codi obert radeon en lloc del blob binari propietari.

La implementació de DRI està dispersa a través del servidor X i les biblioteques de clients associades, Mesa 3D i el subsistema del nucli Direct Rendering Manager.[3] Tot el seu codi font és programari lliure.

Els càlculs de renderització es subcontracten a través d'OpenGL a la GPU per fer-los en temps real. El DRI regula l'accés i la comptabilitat.

Visió general modifica

En l'arquitectura clàssica del sistema X Window, l'X Server és l'únic procés amb accés exclusiu al maquinari gràfic i, per tant, el que fa la representació real al framebuffer. Tot el que fan els clients X és comunicar-se amb el servidor X per enviar ordres de representació. Aquestes ordres són independents del maquinari, el que significa que el protocol X11 proporciona una API que abstraeix el dispositiu gràfic perquè els clients X no hagin de saber ni preocupar-se per les característiques específiques del maquinari subjacent. Qualsevol codi específic de maquinari viu dins de Device Dependent X, la part de l'X Server que gestiona cada tipus de targeta de vídeo o adaptador de gràfics i que sovint s'anomena controlador de vídeo o gràfic.

L'auge de la renderització 3D ha mostrat els límits d'aquesta arquitectura. Les aplicacions de gràfics en 3D solen produir grans quantitats d'ordres i dades, totes elles s'han d'enviar al servidor X per a la representació. A mesura que augmentava la quantitat de comunicació entre processos (IPC) entre el client X i el servidor X, el rendiment de la representació 3D es va ressentir fins al punt que els desenvolupadors de controladors X van concloure que per aprofitar les capacitats de maquinari 3D de les últimes targetes gràfiques Es necessitava una arquitectura sense IPC. Els clients X haurien de tenir accés directe al maquinari gràfic en lloc de confiar en un procés de tercers per fer-ho, estalviant tota la sobrecàrrega IPC. Aquest enfocament s'anomena "renderització directa" en oposició a la "renderització indirecta" proporcionada per l'arquitectura X clàssica. La infraestructura de renderització directa es va desenvolupar inicialment per permetre a qualsevol client X realitzar una representació 3D mitjançant aquest enfocament de "renderització directa".

Res impedeix que DRI s'utilitzi per implementar una representació directa 2D accelerada dins d'un client X. Simplement ningú ha tingut la necessitat de fer-ho perquè el rendiment de la representació indirecta en 2D era prou bo.anglès

Arquitectura del programari modifica

L'arquitectura bàsica de la infraestructura de renderització directa inclou tres components principals: [4]

  • el client DRI — per exemple, un client X que realitza "renderització directa" — necessita un "controlador" específic de maquinari capaç de gestionar la targeta de vídeo o l'adaptador de gràfics actuals per tal de representar-hi. Aquests controladors DRI es proporcionen normalment com a biblioteques compartides a les quals el client està enllaçat dinàmicament. Atès que DRI es va concebre per aprofitar el maquinari de gràfics 3D, les biblioteques normalment es presenten als clients com a implementacions accelerades per maquinari d'una API 3D com OpenGL, proporcionada pel propi proveïdor de maquinari 3D o un tercer com el programari lliure Mesa 3D.
  • el servidor X proporciona una extensió de protocol X11 — l'extensió DRI — que els clients DRI utilitzen per coordinar-se tant amb el sistema de finestres com amb el controlador DDX. Com a part del controlador DDX, és força comú que el procés del servidor X també s'enllaçi dinàmicament amb el mateix controlador DRI que els clients DRI, però per proporcionar renderització 3D accelerada per maquinari als clients X mitjançant l'extensió GLX per a la representació indirecta (per exemple, remota). Clients X que no poden utilitzar la representació directa). Per a la representació 2D, el controlador DDX també ha de tenir en compte els clients DRI que utilitzen el mateix dispositiu gràfic.
  • l'accés a la targeta de vídeo o l'adaptador gràfic està regulat per un component del nucli anomenat Direct Rendering Manager (DRM). Tant el controlador DDX del servidor X com el controlador DRI de cada client X han d'utilitzar DRM per accedir al maquinari gràfic. DRM proporciona sincronització amb els recursos compartits del maquinari gràfic — recursos com ara la cua d'ordres, els registres de la targeta, la memòria de vídeo, els motors DMA,... — assegurant que l'accés simultània de tots aquests processos d'espai d'usuari en competència no interfereixin entre si. DRM també serveix d'executor de seguretat bàsic que no permet que cap client X accedeixi al maquinari més enllà del que necessita per realitzar la representació 3D.

Història modifica

El projecte va ser iniciat per Jens Owen i Kevin E. Martin de Precision Insight (finançat per Silicon Graphics i Red Hat).[5] Primer es va fer àmpliament disponible com a part de XFree86 4.0 [6] i ara forma part del servidor X.Org. Actualment el manté la comunitat de programari lliure.

Referències modifica

  1. «Mesa 3D and Direct Rendering Infrastructure wiki» (en anglès). [Consulta: 15 juliol 2014].
  2. «DRI for Framebuffer Consoles» (en anglès). [Consulta: 4 gener 2019].
  3. «Mesa 3D and Direct Rendering Infrastructure wiki» (en anglès). [Consulta: 15 juliol 2014].
  4. Martin, Kevin E. «Direct Rendering Infrastructure, Low-Level Design Document» (en anglès), 11-05-1999. [Consulta: 18 maig 2016].
  5. Owen, Jens. «A Multipipe Direct Rendering Architecture for 3D» (en anglès), 15-09-1998. [Consulta: 16 abril 2016].
  6. «Release Notes for XFree86 4.0» (en anglès). XFree86 Project, 07-03-2000. [Consulta: 16 abril 2016].