# Xgl

Xgl é uma arquitetura de Servidor X, desenvolvida por David Reveman, que roda sobre OpenGL via glitz. Tira proveito de placas gráficas modernas através de seus drivers OpenGL, suportando aceleração de hardware de todas as aplicações X, OpenGL e XVideo e efeitos gráficos através de um gerenciador de composição de janelas, tal como o Compiz. Em maio de 2006, o Servidor X Xgl (e componentes relacionados incluindo o gerenciador de janelas Compiz e ferramentas de configuração gráfica associadas) passou a ser suportado – instalado separadamente – por algumas das maiores distribuições Linux, como SUSE 10.1 e Ubuntu 6.06.

## Backends

O OpenGL não especifica como iniciar uma tela e manipular contextos gráficos. Essas operações são realizadas por uma API específica de um sistema de janelas nativo. Até agora há dois backends diferentes para resolver este problema de iniciação. Muito provavelmente, a maioria dos backends conterá o mesmo código e as diferenças estarão primariamente nas porções de iniciação dos servidores.

### Xglx

Xglx foi o primeiro backend implementado para esta arquitetura. É também nele que a maioria do desenvolvimento acontece até o momento. Ele precisa de um servidor X já existente para rodar e usa GLX para criar uma janela OpenGL, a qual o Xgl, então, usa, de maneira parecida ao Xnest. Este modo é pretendido somente para desenvolvimento no futuro, devido à redundância de requerer um servidor X para rodar o Xgl. Na XDevConf 2006, a nVidia fez uma apresentação argumentando que este é o caminho errado a tomar porque o servidor em camadas não abstrai características das placas de vídeo. Isto faz com que capacidades dependentes de driver, como suporte a recursos 3D e suporte a dois monitores, se tornem muito mais difíceis. No entanto, delegar a iniciação a um servidor X existente permite aos desenvolvedores se concentrarem diretamente na funcionalidade do servidor, ao invés de dedicarem tempo substancial a conexões específicas de inúmeros hardwares de vídeo. Até o momento, o Xglx não suporta múltiplos monitores!

### Xegl

Xegl é o futuro do Xgl, e uma meta de longo prazo do desenvolvimento do servidor X. O servidor Xegl compartilhará muito do código de desenho em vídeo com o servidor Xglx, a não ser que a iniciação do gerenciador de contexto e desenhos do OpenGL seja manipulado pela especificação Embedded GL, referido como API EGL. A implementação atual usa Mesa-solo para prover renderização OpenGL diretamente no framebuffer do Linux ou DRI para o hardware responsável pelos gráficos. Desde agosto de 2005, o Xegl só funciona com placas gráficas Radeon R200 e seu desenvolvimento está atualmente atrasado. É provável que continue assim até que o servidor Xglx tenha se provado eficiente e os drivers de código proprietário adicionem suporte à API EGL. Neste caso, deve se tornar um substituto transparente ao servidor Xglx aninhado.

## Justificativa

Estruturar toda a renderização em cima do OpenGL poderia potencialmente simplificar o desenvolvimento de drivers de vídeo. Removeria a separação artificial entre aceleração 2D e 3D. Isto é vantajoso, já que operações 2D são frequentemente (e contraintuitivamente, já que 3D implica 2D) desaceleradas. Também removeria todo o código dependente de hardware do servidor X e permitiria operações aceleradas de Composição e Renderização independentes de driver gráfico. Adicionalmente, gerenciadores de composição podem usar a API OpenGL para renderizar, permitindo efeitos bastante surpreendentes. Existem notícias de que afiliadas da NVidia e ATI estariam dispostas a lançar drivers binários para um servidor X baseado em OpenGL, uma vez que uma API seja estabelecida, embora na Xorg Developers Conferece de 2006 tenha sido indicado pela NVidia que eles estão muito felizes com o driver já existente. A ideia de estendê-lo está sendo trabalhada no projeto AIGLX, do Fedora Project.

## Competidores

Renderização de janelas e desktop baseados em aceleração de hardware OpenGL, limitado ao uso de OpenGL para composição de texturas, vem sendo usado no Mac OS X, em uma tecnologia chamada Quartz Extreme, desde o Mac OS X v10.2. O Quartz 2D Extreme é um avanço desta característica e é mais diretamente comparável ao Xgl. Como o Xgl, o Quartz 2D Extreme traz a aceleração OpenGL para todas as operações de desenho 2D (não apenas composição desktop) e vem com o Mac OS X v10.4, mas é desabilitado por padrão exigindo uma declaração formal para entrar em funcionamento. A pioneira neste tipo de tecnologia parece ter sido a Sun Microsystems, quando iniciou suas pesquisas em uma interface gráfica de um projeto chamado Project Looking Glass.
A Microsoft anunciou a sua intenção de prover tecnologia similar baseada em DirectX, em lugar de OpenGL, chamada Desktop Window Manager (DWM), como parte do seu próximo sistema operacional Windows Vista.

## Controvérsia

A tecnologia Xgl requer bom desempenho OpenGL, além de muitas características exclusivas de placas 3D mais recentes, as quais só podem ser acessadas usando módulos de núcleo binários (proprietários) para placas ATI e NVidia (tecnicamente, os drivers usam um componente binário em conjunto com código aberto). Existem alguns drivers de código aberto para essas placas que permitem somente gráficos 2D, ou algumas funcionalidades OpenGL 3D primitivas. Atualmente, esta é uma situação que gera um impasse, porque os fabricantes de placas gráficas declararam não ter qualquer intenção de patrocinarem drivers completamente de código aberto.

## Veja também

* X Window System