Biblioteca / Conteúdo preservado

Linux 3D

Menu da área de Textos
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