Guía de Aceleración 3D por Hardware
1.
Introducción
¿Qué es la aceleración 3D por hardware y por qué quiero
tenerla?
Con la aceleración 3D por hardware, el renderizado tridimensional usa
el procesador gráfico en su tarjeta de video en vez de ocupar valiosos
recursos de la CPU para dibujar imagenes 3D. También se le conoce como
"aceleración por hardware" en vez de "aceleración por software" debido
a que sin esta aceleración 3D, la CPU está obligada a dibujar todo por
sí misma usando las bibliotecas de renderizado por software de Mesa,
lo que ocupa una considerable potencia de procesamiento. Aunque Xorg
típicamente permite aceleración 2D por hardware, a menudo carece de
aceleración 3D por hardware. La aceleración tridimensional vía
hardware es valiosa en situaciones que requieran renderizado de
objetos 3D tales como juegos, CAD 3D y modelamiento.
¿Cómo obtener aceleración 3D por hardware?
En muchos casos existen controladores, tanto binarios como de código
abierto. Los controladores de código abierto son de preferencia ya que
estamos usando Linux y el código abierto es uno de sus principios
básicos. Algunas veces, los controladores binarios son la única
opción, como aquellos de las tarjetas nVidia. Los controladores
binarios incluyen x11-drivers/nvidia-drivers para las tarjetas nVidia
y media-video/ati-drivers para las tarjetas ATI.
¿Qué es DRI?
La Infraestructura de
Renderizado Directo (Direct Rendering Infrastructure), también
conocida como DRI (por sus siglas en inglés), es un marco de
referencia para permitir el acceso directo al hardware gráfico de
manera segura y eficiente. Incluye cambios al servidor X, a muchas
bibliotecas clientes y al núcleo. El uso principal de DRI es crear
implementaciones de OpenGL rápidas.
¿Qué es DRM y cómo se relaciona con el Xorg normal?
El DRM (Direct Rendering Manager, o gestor de renderizado directo) es
una mejora a Xorg que agrega aceleración 3D a las tarjetas
mediante la adición de un módulo del núcleo necesario para el
renderizado directo.
Propósito
Esta guía es para aquellas personas que no pueden hacer funcionar el
renderizado directo tan sólo usando Xorg. El DRM funciona para los
siguientes controladores:
- 3dfx
- i8x0
- matrox
- rage128
- radeon
- mach64
- sis300
- via
Vea la página DRI para
más información y documentación.
Comentarios y/o sugerencias
Si tiene sugerencias, preguntas, etc. escriba un correo electrónico a
Donnie Berkholz.
2.
Instale Xorg y configure su núcleo
Instale Xorg
Por favor, lea nuestra Guía de
Configuración de Xorg para tener Xorg funcionando.
Configure su núcleo
Investigue cuál es su chipset y active sólo ése.
Listado de Código 2.1: Chequear su chipset AGP |
# emerge pciutils; lspci | grep AGP
# 00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
|
Si su chipset no está reconocido por el núcleo, puede que tenga éxito
pasando el parámetro del núcleo agp=try_unsupported a su gestor
de arranque. Ésto usará las rutinas genéricas de Intel para el soporte
de AGP. Para agregar este parámetro, edite el archivo de configuración
de su gestor de arranque.
Casi todos los núcleos deberían tener esas opciones. Ésto fue
configurado usando el núcleo gentoo-sources
Listado de Código 2.2: Configurar el núcleo |
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 22 2007-02-14 20:12 /usr/src/linux -> linux-2.6.18-gentoo-r4
# cd /usr/src/linux
# make menuconfig
|
Listado de Código 2.3: Opciones de make menuconfig |
Processor type and features --->
<*> MTRR (Memory Type Range Register) support
Device drivers --->
Character devices --->
<M> /dev/agpgart (AGP Support)
<M> Intel 440LX/BX/GX, I8xx and E7x05 support
<M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
|
Compile e instale su núcleo
Listado de Código 2.4: Compilar e instalar el núcleo |
# make && make modules_install
|
No se olvide de configurar grub.conf o
lilo.conf y luego ejecutar /sbin/lilo si usa LILO.
3.
Configure el renderizado directo
Configurar Xorg.conf
Abra el archivo /etc/X11/xorg.conf con su editor de texto
favorito y edítelo para activar DRI y GLX.
Listado de Código 3.1: xorg.conf |
...
Section "Module"
Load "dri"
Load "glx"
...
EndSection
...
Section "Device"
Driver "radeon"
...
EndSection
...
Section "dri"
Mode 0666
EndSection
|
Cambios a modules.autoload.d
Necesitará agregar el nombre del módulo que su tarjeta usa al archivo
/etc/modules.autoload.d/kernel-2.6 para asegurarse que
este sea cargado automáticamente cuando se inicie el sistema.
Listado de Código 3.2: Editar /etc/modules.autoload.d/kernel-2.6 |
intel-agp
|
Nota:
Si compiló agpgart como módulo también tendrá que agregarlo al
fichero /etc/modules.autoload.d/kernel-2.6.
|
4.
Probar la aceleración 3D
Reinicie al nuevo núcleo
Reinicie su computadora con el nuevo núcleo e ingrese como usuario
normal. Es hora de ver si tiene el renderizado directo y cuán bueno
es. Los programas glxinfo y glxgears son parte del
paquete mesa-progs, de manera que asegúrese que esté instalado
antes de intentar ejecutarlos.
Listado de Código 4.1: Probar el renderizado |
$ startx
$ glxinfo | grep rendering
direct rendering: Yes
$ glxgears
|
Nota:
La cifra de FPS pueder estar limitada por la tasa de refrescamiento de
la pantalla, así que tenga esto en cuenta si glxgears solo
reporta unos 70-100 FPS. El juego games-fps/ut2004-demo es una
herramienta superior para comparar el desempeño, ya que demuestra
resultados del mundo real.
|
5.
Afinando su rendimiento
Obtenga el máximo del renderizado directo
Unas pocas opciones pueden incrementar el rendimiento hasta en un 30 %
(o más) por sobre la configuración predeterminada. Ajústelas en
/etc/X11/xorg.conf. Sin embargo, primero tendrá que
verificar si su placa madre y tarjeta de video soportan estan
opciones.
Primero, veamos si su tarjeta de video puede soportar escrituras
rápidas ("fast writes"). Para ello inspeccionaremos la salida del
comando lspci. Específicamente estamos buscando la información
que sale en la línea que contiene el texto "VGA compatible
controller".
Listado de Código 5.1: Chequeo de la tarjeta de video |
# lspci -vv
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY (prog-if 00 [VGA])
. . .
Capabilities: [58] AGP version 2.0
Status: RQ=48 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW+ AGP3- Rate=x1,x2,x4
|
Como puede observar se despliega bastante información, lo que buscamos
es el texto FW en la subsección "Status" de la sección
"Capabilities" de AGP. Si FW+ aparece en la línea "Status",
significa que la tarjeta soporta escrituras rápidas. Ahora podemos
chequear si la placa madre también las soporta.
Importante:
Si no ve FW+ sino que FW-, no puede activar las
escrituras rápidas en xorg.conf. Su tarjeta no ofrece
soporte para esta característica.
|
Ahora aseguremos que la placa madre también soporta las escrituras
rápidas. Esta vez observe la sección "Host bridge" de la salida de
lspci.
Listado de Código 5.2: Chequeo de la placa madre |
# lspci -vv
00:00.0 Host bridge: Intel Corporation 82830 830 Chipset Host Bridge (rev 02)
. . .
Capabilities: [a0] AGP version 2.0
Status: RQ=32 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW+ AGP3- Rate=x1,x2,x4
|
Nuevamente, examine la subsección "Status" de su sección
"Capabilities" de AGP. Busque el texto FW. Si ve FW+
entoces su placa madre soporta las escrituras rápidas.
Importante:
Recuerde, tanto la información de la tarjeta de video como la de la
placa madre deben mostrar el texto FW. Si uno de los
dispositivos muestra FW- en el "Status", entonces no puede
activar las escrituras rápidas en el xorg.conf.
|
Asumiendo que todo pasó sin contratiempos y tanto su placa madre como
su tarjeta de video soportan escrituras rápidas, activemos esta opción
en /etc/X11/xorg.conf y obtenga el mejor desempeño de su
hardware.
Listado de Código 5.3: xorg.conf |
Section "Device"
Option "AGPMode" "4"
Option "AGPFastWrite" "True"
Option "EnablePageFlip" "True"
...
EndSection
|
Aviso:
Activar AGPFastWrite en un chipset VIA causará muy
probablemente que su máquina se cuelgue. Los chipsets VIA no funcionan
bien las escrituras rápidas, así que configure esto a discreción.
|
Nota:
Recuerde, si desea que las escrituras rápidas funcionen adecuadamente,
primero tendrá que activar la opción apropiada en su BIOS.
|
Si quiere ajustar aún más características, revise la matriz de
características en el sitio Web de DRI o la lista
de características en Sourceforge.
6.
Solución de problemas
No funciona. No tengo renderizado y no sé porque.
Intente modprobe radeon (o su controlador si no es radeon)
antes de iniciar el servidor X. También, intente compilar agpgart como
parte del núcleo en vez de como módulo.
Cuando inicio startx, obtengo este error: "[drm] failed to load
kernel module agpgart"
Eso es porque compiló agpgart en el núcleo en vez de hacerlo como
módulo. Ignórelo a menos que tenga problemas.
Tengo una Radeon, y quiero que funcione la salida de TV
(TV-Out)
Los controladores desarrollados por el proyecto GATOS
han sido agregados al código de Xorg. No necesitas nada espcial para la salida de TV;
x11-drivers/xf86-video-ati trabajará bien.
No funciona. Mi tarjeta es tan increíblemente nueva y fenomenal
que no está reconocida por completo.
Pruebe con los controladores binarios. Para los ati-drivers, hay una
lista en
http://ati.amd.com/support/drivers/linux/linux-radeon.html
(para x86) y en
http://ati.amd.com/support/drivers/linux64/linux64-radeon.html
(para amd64). Si esos no la reconocen, use fbdev. Es lento, pero
funciona.
Tengo una tarjeta PCI y no funciona. ¡Ayuda!
Modifique /etc/X11/xorg.conf. En la sección de
dispositivos "Device" active ForcePCIMode.
Listado de Código 6.1: Activar ForcePCIMode |
Option "ForcePCIMode" "True"
|
7.
Agradecimientos
-
Christopher Webber por sugerir una pregunta de la sección Solución
de Problemas acerca del cambio o recompilación de núcleos.
-
Steve, por sugerir consistencia entre los casos de dri y DRI en
XF86Config
8.
Referencias
- http://forums.gentoo.org/viewtopic.php?t=46681
- http://forums.gentoo.org/viewtopic.php?t=29264
- http://dri.freedesktop.org/
- http://www.retinalburn.net/linux/dri_status.html
El contenido de este documento está registrado bajo los términos de
la licencia
Creative Commons - Reconocimiento / Compartir Igual
|