# Direct Rendering Infrastructure

Direct Rendering Infrastructure (abreviado como DRI, Infraestrutura de Renderização Direta em inglês) é um framework para permitir acesso direto ao hardware gráfico no sistema de janelas X de maneira segura e eficiente. O principal uso do DRI é fornecer aceleração de hardware para a implementação do OpenGL no Mesa. O DRI também foi adaptado para fornecer aceleração OpenGL em um console framebuffer sem um servidor de exibição em execução.$^[$
A implementação do DRI está espalhada pelo servidor X e suas bibliotecas clientes associadas, o Mesa 3D e o subsistema de kernel Direct Rendering Manager. Todo o seu código fonte é software livre.

## Visão geral

Na arquitetura clássica do sistema de janelas X, o servidor X é o único processo com acesso exclusivo ao hardware gráfico e, portanto, aquele que faz a renderização real no framebuffer. Tudo o que os clientes X fazem é se comunicar com o servidor X para despachar comandos de renderização. Esses comandos são independentes do hardware, o que significa que o protocolo X11 fornece uma API que abstrai o dispositivo gráfico para que os clientes X não precisem saber ou se preocupar com as especificidades do hardware subjacente. Qualquer código específico de hardware reside dentro do Device Dependent X (DDX), a parte do servidor X que gerencia cada tipo de placa de vídeo ou adaptador gráfico e que também é chamada de driver de vídeo ou driver de gráficos.
A ascensão da renderização em 3D mostrou os limites dessa arquitetura. Os aplicativos gráficos 3D tendem a produzir grandes quantidades de comandos e dados, todos os quais devem ser despachados para o servidor X para renderização. Como a quantidade de comunicação entre processos (IPC) entre o cliente X e o servidor X aumentou, o desempenho de renderização 3D sofreu ao ponto de os desenvolvedores de drivers X concluírem que, para aproveitar as capacidades de hardware 3D das mais recentes placas gráficas, um nova arquitetura sem IPC era necessária. Os clientes X devem ter acesso direto ao hardware gráfico, em vez de depender de um processo de terceiros para fazer isso, salvando toda a sobrecarga do IPC. Essa abordagem é chamada de "renderização direta", em oposição à "renderização indireta" fornecida pela arquitetura X clássica. A Infraestrutura de Renderização Direta foi desenvolvida inicialmente para permitir que qualquer cliente X execute a renderização 3D usando essa abordagem de "renderização direta".
Nada impede que o DRI seja usado para implementar a renderização direta em 2D acelerada em um cliente X. Simplesmente ninguém teve a necessidade de fazê-lo porque o desempenho de renderização indireta 2D foi bom o suficiente.

## Adoção

Diversos drivers em código aberto que usam o DRI foram escritos, incluindo aqueles para ATI Mach64, ATI Rage128, ATI Radeon, 3dfx Voodoo3 a Voodoo5, Matrox G200 a G400, SiS série 300, Intel i810 a i965, S3 Savage, chipsets gráficos VIA UniChrome e nouveau para Nvidia. Alguns fornecedores de gráficos escreveram drivers em código fechado que usam o DRI, incluindo a ATI e Kyro.
As várias versões do DRI foram implementadas por vários sistemas operacionais, entre outras pelo núcleo Linux, FreeBSD, NetBSD, OpenBSD e OpenSolaris.