Textos
Textos
3D em Linux: uma realidade em vista?

Introdução

Não, não. Você já deve estar cansado de ouvir falar do que é Linux, do que ele oferece, etc, etc, etc, portanto não vou ficar aqui repetindo tudo de novo. O que venho aqui falar é um histórico sobre aplicações 3D em Linux. Mas, peraí: isso já existia? Continuem...

O sistema de janelas mais comumente usado no Linux, o Xfree86, é baseado nas especificações do sistema X, ditadas pelo OpenGroup, e assim sendo ele contém algumas características que diferem do que normalmente é conhecido como sistema de janelas em Windows ou Macintosh. Por exemplo, há uma total transparência no sentido de uma aplicação cliente-servidor: o que você roda em sua máquina é um chamado "Servidor X", enquanto que os aplicativos são clientes que se comunicam com esse servidor. Dessa maneira, é possível rodar um programa gráfico em uma máquina e mostrar a tela desta aplicação em outra.

Na parte de aplicações 3D, o representante dos sistemas Unix é o Irix, da Silicon Graphics, criadora da API OpenGL. A SGI desenvolveu uma séria de protocolos e API's para tornar possível a integração de aplicações 3D com o conceito cliente-servidor do sistema X. O problema é que essas soluções eram (e algumas ainda são) proprietárias. Como isso chegou ao Linux?

Mesa? O que é isso?

Há um tempo atrás um projeto denominado Mesa teve início, com um objetivo: criar, a partir das especificações liberadas pela SGI, uma biblioteca compatível com a API OpenGL. Por ser um projeto não-comercial e portanto não ter pago à SGI o licenciamento da tecnologia, os desenvolvedores da Mesa não podem dizer que ela subsitui uma implementação OpenGL "oficial". No entanto, o que se vê no dia a dia é que ela se sai muito bem nesse objetivo.

O talvez maior problema da biblioteca Mesa, até sua versão 3.0 (que é a versão estável mais atual), é uma grande limitação quanto a aceleração 3D via hardware: normalmente todo o processamente é feito pela CPU, o que sabemos causa um grande declínio na performance. As funções de aceleração das placas existentes eram completamente inutilizadas. Até que alguém resolveu fazer algo...

Entra a 3dfx

Com o grande sucesso das placas baseadas nos chips Voodoo Graphics e Voodoo 2, além do maior sucesso ainda de jogos como Quake e Quake 2, a 3dfx resolveu que não poderia ignorar os usuários do Linux. Entrou em contato com um desenvolvedor, que sob NDA ("non-disclosure agreement", isto é, a pessoa não pode repassar para terceiros as informações recebidas), passou a desenvolver uma biblioteca que continha as funções da API GLIDE, proprietária da 3dfx.

Não demorou muito para que alguém modificasse a biblioteca Mesa e incluísse a possibilidade de utilizar a nova biblioteca GLIDE para usar os recursos de aceleração das placas 3dfx. Com isso, foi ainda adicionado suporte a OpenGL por hardware às versões para Linux de Quake e Quake 2.

Com essas evoluções, já era possível utilizar aplicações OpenGL em Linux, tanto em tela cheia como em janelas (mesmo que a placa fosse somente 3D, por meio de uma modificação feita pelos desenvolvedores dos drivers. O processo não é o que pode ser chamado de rápido, mas é ainda melhor que usar somente software), não limitando-se somente a jogos como Quake.

No entanto, essas soluções ainda não eram o ideal, do ponto de vista do objetivo do sistema X e da filosofia Linux: primeiramente, não era possível fazer o processamento em uma máquina e a tela ser mostrada em outra utilizando aceleração de hardware desta, como em sistemas Irix. Segundo, os drivers fornecidos pela 3dfx eram proprietários: não foi disponibilizado código fonte nem informações para que pudessem haver melhoras.

GLX: a resposta

Os grandes problema de ter aplicações OpenGL aceleradas por hardware em um sistema X eram (1) poder fazer o processamento 3D no hardware de uma máquina mesmo que a aplicação estivesse rodando em outra e (2) sincronizar o acesso aos recursos da placa de vídeo pelo sistema X e pela biblioteca Mesa, já que há muitas placas que são tanto 2D como 3D (no caso das Voodoo Graphics e Voodoo 2 isso não era problema, pois o processamento 2D era feito por outra placa).

A solução para esse problema já existia, mas era proprietária. Era, pois a SGI resolveu abrir o código da GLX, uma API que tem como objetivo fazer todas essas coisas citadas acima.

Com isso, houve um verdadeiro estrondo entre os desenvolvedores de drivers para Linux. Os primeiros esforços eram para criar um módulo para o Xfree86 que integrasse o GLX, simplificando o trabalho do software que utiliza OpenGL. Esse esforço já gerou diversos resultados, como a implementação de um driver para os chips Permedia 2.

Matrox e NVIDIA: liderando a iniciativa?

Com a criação de uma estrutura básica para aceleração 3D em Linux, duas iniciativas chamaram a atenção da comunidade.

A primeira partiu da fabricante canadense Matrox: ela liberou informações para acesso de baixo nível ao chip MGA-G200, possibilitando que pessoas com acesso a essas informações desenvolvessem um driver para essas placas. As especificações não são completas ainda, mas já possibilitaram que em apenas três meses surgisse um driver bastante maduro, bem mais estável que o fornecido pela 3dfx. A página do projeto desse driver pode ser vista aqui.

Seguindo de carona, a NVIDIA surpreendeu: lançou um driver que permite que todos os chips da família RIVA (128, 128ZX, TNT, TNT2 e TNT2 Ultra) tenham aceleração 3D em Linux. Mais do que isso, foi disponibilizado o código fonte desse driver para qualquer pessoa que queira contribuir para a melhora do mesmo. O driver pode ser pego na página da própria NVIDIA.

Essas iniciativas são um ótimo começo para a popularização do uso de aplicativos 3D em Linux. Mas devido a diversos problemas, o principal deles sendo que o Xfree86 não contém uma arquitetura ideal para esse tipo de aplicação, o que vê-se é que a performance, mesmo que muito superior à renderização por software e com uma qualidade de imagem impressionante no caso de Matrox e NVIDIA, não chega nem perto da mesma placa num sistema Windows. Mas isso pode mudar...

Xfree86 4.0: a solução?

O time de desenvolvedores do Xfree86 já está amplamente envolvido na programação da próxima versão do sistema, a 4.0. E essa versão trará inúmeras novidades, sendo quase uma reformulação completa do sistema. E boa parte dessas inovações será para promover o uso de aplicações 3D em Linux.

Com a ajuda de empresas e desenvolvedores, como a Precision Insight, que forneceu as especificações de sua DRI (Direct Rendering Infrastructure) para ser utilizada na nova versão do Xfree86, o futuro é bastante promissor. A inclusão da DRI permitirá que o desempenho aumente bastante em relação aos níveis atuais, podendo ser comparado à mesma placa no Windows, e quem sabe até ultrapassar esse desempenho, e ainda aproveitando as características oferecidas pelo GLX já citadas anteriormente.

Com o amadurecimento do Xfree86 e maior suporte por parte dos fabricantes, o Linux tem tudo para ser uma ótima opção para quem busca a utilização de aplicativos 3D baseados em OpenGL, seja ele um jogo como uma aplicação profissional. E isto é só o começo.

Informações

Marcelo Vanzin



Hard&Cia - 2001
Dúvidas, sugestões e críticas gerais? Hard&Cia Mail