Direct Rendering Infrastructure
# Direct Rendering Infrastructure

En informática, Direct Rendering Infrastructure (abreviado como DRI, Infraestructura de Renderizado Directo) es una interfaz usada en el sistema de ventanas X (X Window System), para que las aplicaciones de usuario puedan acceder de manera segura al hardware de video sin tener que pasar los datos por el servidor X, cosa que degrada el rendimiento. La aplicación principal es proveer de aceleración por hardware a la biblioteca Mesa, que es una implementación libre de OpenGL. DRI también ha sido adaptado para proveer aceleración OpenGL al framebuffer de Linux, sin ejecución de un servidor X.

El proyecto fue iniciado por Jens Owen, de Precision Insight. La primera versión ampliamente distribuida fue como parte de XFree86 4.0, y en la actualidad está integrado dentro de X.Org. En la actualidad su mantenimiento corre a cargo de Tungsten Graphics y muchos otros desarrolladores de software libre.

El soporte OpenGL de DRI se realiza mediante la unión de varios componentes. El primero de ellos es Direct Rendering Manager (DRM). DRM es una combinación de dos módulos del kernel, uno con el código principal de DRM, y otro específico del chip gráfico que provee API para acceder a las clases diferentes de hardware gráfico (como pueden ser ATI o NVidia). El segundo componente es un driver para el espacio de usuario, el cual contiene un driver OpenGL que típicamente realiza la labor de preparar buffers de comandos para ser enviados al hardware gráfico vía DRM, e interactúa con el sistema de ventanas para sincronizar el acceso al hardware de vídeo. El tercer componente es un servidor gráfico. En el entorno de ventanas X, es la biblioteca libdri.so y un driver DRI DDX para 2D. En la implementación para framebuffer es miniglx, el cual inicializa DRM y provee algunas de las API de X al driver de espacio de usuario a pesar de la ausencia del servidor X completo.

Se han escrito varios drivers DRI de código libre para diferente hardware gráfico, incluyendo ATI Mach64, ATI Rage128, ATI Radeon, 3dfx Voodoo3 hasta Voodoo5, Matrox G200 hasta G400, la serie 300 de SiS, Intel i810 hasta i965, S3 Savage, y VIA. Algunos fabricantes de tarjetas gráficas han escrito drivers para DRI de código cerrado, incluyendo ATI y Kyro. DRI es soportado en Linux, FreeBSD y ha sido portado a NetBSD en el pasado.

## DRI2

Desde el 2007, en el X Developers' Summit, el desarrollo de una versión sucesora de DRI empezó. La nueva infraestructura para renderizado arregla muchas limitaciones del antiguo diseño, en particular en combinación de DRI con AIGLX. A principios de 2008 comenzó el desarrollo del primer driver de gráficos DRI2 en el árbol de desarrollo del servidor X.Org.

Los componentes necesarios de la infraestructura DRI2 están actualmente incluidos en X.Org Server 1.6, Linux 2.6.28 y en Mesa 3D 7.4.

* 2D drivers inside of the X server
* Indirect rendering over GLX, using Utah GLX
* early Direct Rendering Infrastructure
* Finally all access goes through the Direct Rendering Manager
* In Linux kernel 3.12 render nodes were merged and the KMS was split of. Wayland implements direct rendering over EGL
