Ultimamente vejo muitos usuários reclamando do desempenho 3D dos drivers de vídeo, e em particular do da o Intel. Muitas dessas "reclamações" podem não ser culpa do driver, mas sim um erro induzido pelo tipo de testes utilizado para tal constatação. Claro que há os bugs conhecidos, mas gostaria de alertar para os testes feitos com o comando
glxgears.
Há algum tempo eu venho desconfiando desse teste, por isso fiz uma pequena pesquisa na internet e cheguei a conclusão que o comando glxgears não deve ser usado para teste de desempenho da placa de vídeo ou de drivers de vídeo.
GLX (OpenGL Extensions to the X Window System) é uma interface que proporciona a conexão entre a biblioteca OpenGL e o X Window System. Ele permite que programas utilizem o OpenGL junto com as janelas do X Window System.
GLX consiste de três partes:
- Uma API que proporciona funcionalidades para uma aplicação X Window System.
- Uma extensão do protocolo X, que permite ao cliente (a aplicação OpenGL) enviar comandos de renderização para o servidor X (o software responsável pela exibição). O cliente e o servidor podem rodar em computadores diferentes.
- Uma extensão do protocolo X que recebe o comandos de renderização do cliente e os repassa para a biblioteca OpenGL instalada (se a aceleração por hardware não está disponível normalmente é utilizada a biblioteca Mesa 3D, que emula este comportamento em software).
O GLX por sua vez traz um utilitário chamado "glxgears", uma demonstração que traz 3 engrenagens e fornecendo uma estimativa grosseira da velocidade da configuração de renderização em 3D e relatórios de FPS (frames por segundo). Entretanto ele é muito limitado:
- Tem um vértice extremamente baixo / contagem de polígonos;
- Não faz nenhuma texturização;
- Apenas um simples sombreamento plano é usado;
- Todos os dados do vértice é armazenado em uma lista de exibição, assim quase nada passa entre o host da CPU, e o processamento da placa de vídeo é iniciado. Isto implica principalmente numa limitação da taxa de preenchimento da placa de vídeo na tela;
- O tamanho da tela padrão é de 300x300, portanto, não é mesmo um bom teste para taxa de preenchimento em tela;
- Todos os passos de renderização OpenGL consiste em apenas 21 funções de chamadas, das quais apenas 6 são únicas. Não sendo um bom teste de stress OpenGL API.
Para uma simples confirmação do pesquisei repare o retorno do comando glxgears no "terminal" do openSUSE 11.2:
glxgears
*** NOTE: Don't use glxgears as a benchmark.
OpenGL implementations are not optimized for frame rates >> 60fps, thus these numbers are meaningless when compared between vendors.
Algo como:
*** NOTA: Não utilize glxgears como referência.
Implementações OpenGL não são otimizados para taxas de quadros>> 60fps, Assim, estes números são insignificantes quando comparados entre os fornecedores.
Outra constatação que fiz é que, mesmo tendo um desempenho baixo mostrado no comando glxgears, consigo rodar normalmente todos os aplicativos que necessitam de aceleração sem travamentos ou lentidão, incluindo o composite nativo do kde 4 e jogos 3D.
Por isso o comando pode mostrar um valor baixo mesmo tendo um desempenho normal e vice-versa. Embora o comando glxgears muitas vezes seja utilizado para teste de desempenho, não é uma ferramenta de benchmark. Entretanto ele pode ser utilizado para verificar se o hardware possui bibliotecas de aceleração e se elas estão instaladas corretamente.
Como dica eu deixo o site
http://www.phoronix-test-suite.com/?k=downloads, que tem uma ferramenta adequada para testes de desempenho de vídeo.
Referências:
Um abraço e boas festas à toda comunidade!
Ronnie Peterson
sim, o glxgears tem resultados não reprodutíveis exatamente, e é muito dependente da resolução, de qunatas coisas que usam 3D que estão rodando e até da regulagem dos parâmetros nvidia....
por ex. se a pessoa usa a regulagem Vsync do nvidia-settings, que é default no nvidia-settings instalado, vão baixar sempre os valores.
Ele realmente não é um teste rigoroso, serve mais pra mostrar que sua aceleração 3D e composite estão funcionando.