¿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.
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.
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:
Vea la página DRI para más información y documentación.
Si tiene sugerencias, preguntas, etc. escriba un correo electrónico a Donnie Berkholz.
2. Instale Xorg y configure su núcleo
Por favor, lea nuestra Guía de Configuración de Xorg para tener Xorg funcionando.
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) (La salida del comando puede que no sea igual a la suya debido a hardware distinto) |
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 (Asegúrese que /usr/src/linux apunte a su núcleo actual) # 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 --->
Graphics support --->
<M> /dev/agpgart (AGP Support) --->
(La opción agpgart no está presente en los núcleos de 64 bits; escoja el soporte para su chipset)
<M> Intel 440LX/BX/GX, I8xx and E7x05 support
(Active su chipset en lugar del de arriba)
<M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
<M> (Seleccione su tarjeta gráfica de la lista)
|
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
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"
(Reemplace radeon con el nombre del manejador.)
...
EndSection
...
Section "dri"
Mode 0666
EndSection
|
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 |
(Cambie el nombre del módulo acorde a su caso.)
intel-agp
|
Nota: Si compiló agpgart como módulo también tendrá que agregarlo al fichero /etc/modules.autoload.d/kernel-2.6. |
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 (No hay necesidad de cargar los módulos para su controlador o agpgart, si compiló agpgart como módulo) (Serán cargados automáticamente) $ glxinfo | grep rendering direct rendering: Yes (Si dice "No", no tiene aceleración 3D) $ glxgears (Pruebe sus cuadros por segundo (FPS) al tamaño predeterminado) (Debería ser significativamente mayor que antes de configurar DRM. Hágalo mientras el CPU esté lo más inactivo posible) |
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. |
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" (Ésto incrementó los FPS de 609 a 618) Option "AGPFastWrite" "True" (Ésto no tiene un efecto medible, pero puede aumentar la inestabilidad de su computadora) (También puede que necesite ajustarlo en su BIOS) Option "EnablePageFlip" "True" (Ésto mejoró los FPS de 618 a 702. También es "riesgoso" pero pocas personas han reportado problemas) ... 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.
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" |
El contenido de este documento está registrado bajo los términos de la licencia Creative Commons - Reconocimiento / Compartir Igual