
Tarjetas de videcon aceleracion de hardware
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* lee el documento MTRR tambien!

  "Aceleracion de Hardware" normalmente significa: conversion YUV, escalado,
  filtrado bilinear. Bajo Linux existen diversas formas de acceder:

I.   La extension Xv (XVideo)de XFree86-4.0.2
II.  Drivers OpenGL con soporte para glTexSubImage() (actualmente los de Utah-GLX)
III. Dispositivos nativos especificos a tarjeta, usando habilidades especiales de
     algunas tarjetas,
IV.  DGA - Direct Draphic Access. (Acceso Directo a Graficos)
     Sin yuv ni escalado, pero mas rapido que X11
V.   Realmente no es aceleracion, pero...

Ahora veamos los en detalle:

Pero antes de leer esto, lee DOCS/MTRR , y comprueba tu /proc/mtrr .
Creeme, vale la pena! Acelera las cosas unas 5 veces en  P3!!!

I. Bajo XFree86 v4.0.x, usando la extension XVideo:
   Esto es la opcion '-no xv'.

Para hacer que esto funciona comprueba lo siguiente:

1. Usas XFree86 4.0.2 o superiores (versiones previas no disponen de XVideo)

2. Tu tarjeta soporta aceleracion por hardware (las tarjetas modernas lo hacen)

3. X carga la extension XVideo; es algo como:
   (II) Loading extension XVideo
   en /var/log/XFree86.0.log
   NOTA : Esto unicamente carga el soporte de XFree86. En una correcta instalacion
          siempre esta cargado, esto no significa que el soporte XVideo de la tarjeta
          este cargado!

4. Tu tarjeta tiene soporte XV bajo linux. Para comprovarlo prueba 'xvinfo'.
   (este comando forma parte de la distribucion de XFree86), deberia mostrar algo como:

	X-Video Extension version 2.2
	screen #0
	  Adaptor #0: "Savage Streams Engine"
	    number of ports: 1
	    port base: 43
	    operations supported: PutImage 
	    supported visuals:
	      depth 16, visualID 0x22
	      depth 16, visualID 0x23
	    number of attributes: 5
	(...etc...)

   Debe soportar los formatos "YUY2 packed", y, "YV12 planar pixel" para poder usarse
   con MPlayer.

   Si xvinfo no muestra esto, pero XVideo esta cargado y estas seguro de que tu tarjeta
   puede hacer conversion YUV,
   - Usuarios de 3dfx vodoo3/basnsee descargad una nueva version de DRI de
      http://dri.sourceforge.net
   - Usuarios de S3 Savage4 descargad el driver Xv beta de
      ftp://thot.banki.hu
   - Usuarios de nVidia vended la tarjeta... o descargad el driver nVidia de la web de nVidia

5. Asegurate de que MPlayer esta compilado con soporte para "Xv". './configure' debe 
   decir: 
	Checking for Xv ... yes

6. Todo bien, prueba con la opcion '-vo xv'. Deberia funcionar. (Si no envianos un 
   informe de bug, mira el BUGREPORTS sobre como hacerlo.)

II. Dispositivos OpenGL con glTexSubImage() funcionano, y veloz.
   Actualmente solo el viejo dispositivo para la Utah-GLX (para X 3.3.6) lo tiene
   mira: http://utah-glx.sourceforge.net para detalles sobre como instalarlo.

   El nuevo X4/DRI y los dispositivos binarios nVidia no funcionan :(

III. Dispositivos nativos de tarjetas.

Actualmente hay 3 dispositivos nativos para Linux.
1. Matrox G200/G400/G450 BES (Back-End Scaler) support -> mga_vid (en el kernel).
  Este esta activamente desarroyado por mi (A'rpi), y tiene soporte VSYNC
  (via hardware) con bufereado tribble. Funciona tanto en framebuffer de consola
  y bajo las X.
 
  Para usarlo simplemente compila el mga_vid.o del directorio drivers/ (ejecuta: make)  
  Y cargalo con insmod mga_vid. Deberias verificar el tamaao de la memoria usando
  el comando dmesg. Si esta mal usa la opcion mga_ram_size (rmmod mga_vid antes!)
	insmod mga_vid.o mga_ram_size=16
  Para hacer que se cargue/descargue automaticamente al ser necesario, inserta la
  siguiente linea al final de /etc/modules.conf:
     	alias char-major-178 mga_vid
  Despues ejecuta
	depmod -a
  Para usarlo desde MPlayer: (deberias recompilarcon soporte para mga_vid)

  Usa el dispositivo de salida 'mga' para el framebuffer de consola (matroxfb): -vo mga 
  o xmga para X 3.3.x: -vo xmga

  Nota: Tambien funciona bajo X 4.0.2, pero tiene conflictos con el dispositivo
  Xv, asi que intenta no usar ambos a la vez. Normalmente es necesario reiniciar
  las X, o la maquina, para que Xv vuelva a funcionar.

  Si tienes una dual-head G400, y una TV o un segundo monitor conectado a head2
  entonces puedes ver peliculas en este: lee DOCS/TVout-G400 para detalles (gran
  hackeo)

2. SiS 6326 YUV Framebuffer driver -> dispositivo de kernel: sis_vid 
  Esta interfaz deberia ser compatible con mga_vid, pero el dispositvo no fue
  actualizado despues de los cambios del mga_vid. Se necesitan voluntarios para
  probarlo y actualizar el codigo.

3. 3dfx (cuales?) soporte YUV y escalar, usando /dev/3dfx (driver tdfx.o?)
   El dispositivo de kernel /dev/3dfx existe solo para los kernels 2.2.x,
   para uso con los portados de Glide 2.x para Linux. No esta probado con MPlayer,
   y ya no esta soportado. Se requieren voluntarios para probarlo.

IV. Si tu tarjeta falla en la aceleracion de hardware, todavia puedes probar
    de acelerar el fps usando el dispositivo DGA.

1. Asegurate de que las X cargan la extension DGA.
	(II) Loading extension XFree86-DGA
   (como puedes ver, XFree86 4.0.x esta MUY RECOMENDADO!)
2. El dispositivo DGA es detectado en ./configure, o puedes forzarlo con: --enable-dga
3. Si el driver no puede cambiar a una resolucion menor, prueba con la opcion -vm
   (solo con X 3.3.x), -fs, -bpp, -zoom para encontrar un modo de video en el que
   quepa la pelicula. Por ahora no hay ningun conversor.. :(

4. Hazte ROOT. DGa necesita permisos de root para poder escribir directamente en la
   memoria de video, si quieres ejecutarlo como un usuario installa MPlayer SUID root:
   'chown root /usr/local/bin/mplayer'
   'chown 750 /usr/local/bin/mplayer'
   'chmod +s /usr/local/bin/mplayer'
   Ahora funciona como un usuario normal tambien.
   !!!! PERO VIGILA !!!!
   Este es un gran riesgo de seguridad! nunca hagas esto en un servidor o en
   un ordenador que puede ser accedido por mas gente ya que podrian conseguir
   privilegios de root mediante mplayer suid root.
   !!!! ESTAS AVISADO !!!!

5. Usa la opcion '-vo dga', y ya esta! (eso espero :) 
6. Intenta si las opciones '-vo sdl -sdl dga' funcionan para ti! !s mucho mas rapido!!!
Si tienes una buena CPU (P3 800, por ejemplo) puedes probar con fsdga, para reproduccion
a pantalla completa de mpeg (usando escalado YUV->RGB por software)
mplayer -vo fsdga ...

V. No es realmente aceleracion, pero...

  a, Si no tienes X...
    ...usa la salida SVGAlib! Asegurate de no usar la opcion -fs, ya que esta
    activa el uso del escalado por software, y esto es LENTOOO ahora, a no ser 
    que tengas una CPU realmente rapida (y/o MTRR?). :(

    Obviamente tendras que instalar svgalib y su paquete de desarroyo para
    que MPlayer pueda compilar su driver SVGAlib (autodetecado, pero se puede
    forzar), y no olvides editar /etc/vga/libvga.conf para tu tarjeta & monitor.

    Prueba la salida aalib ('-vo sdl -sdl aalib'),  es genial! :)

  b, Si quieres usar framebuffer...
    ... Usa la opcion --enable-fbdev de ./configure y la salida FBdev sera compilada
    (no olvides hacer 'make distclean' primero!). Otro 'no olvides': lee la documentacion
    del framebuffer de las fuentes del kernel (Documentation/fb/*) !

    ... pero si tu tarjeta no soporta el estandar VBE 2.0 (tarjetas ISA/PCI viejas,
    como la S3 Trio64) , solo VBE 1.2 (o mas viejo?):
    Bien, VESAfb todavia esta disponible, pero necesitas cargar el "SciTech
    Display Doctor" (formalmente UniVBE) antes de arrancar Linux. Usa un disco
    de arranque de DOS o alguna otra cosa. Y no olvides registar tu UniVBE ;))

	Gabucino & A'rpi

