Problemas con VDPAU

Si tiene una gráfica NVIDIA Geforce 8800, o superior, puede activar el soporte VDPAU (Video Decode and Presentation API for Unix). VDPAU ofrece decodificación, post-procesado, composición y visualización de videos comprimidos a través de la GPU, liberando de trabajo a la CPU. Si usa el driver privativo de NVIDIA con una versión anterior a 260.19.21, es posible que tenga problemas al finalizar la reproducción de un vídeo usando VDPAU. En este tutorial veremos como solucionar este problema.

Si solo está interesado en solucionar su problema, pulse aquí [+/-] para contraer todas las explicaciones y así llegar directamente a la solución. En caso contrario siga leyendo para obtener información al respecto y finalmente la solución.

Si revisa el log de Xorg, independientemente de la versión del driver de NVIDIA que este usando, observará el siguiente error:
agd-desktop # nano /var/log/Xorg.0.log[    16.375] (II) Loading sub module "dri2"
[    16.375] (II) LoadModule: "dri2"
[    16.375] (WW) Warning, couldn't open module dri2
[    16.375] (II) UnloadModule: "dri2"
[    16.375] (EE) NVIDIA: Failed to load module "dri2" (module does not exist, 0)
[    16.375] (II) NVIDIA(0): The X server will not be able to send the VDPAU driver name to
[    16.375] (II) NVIDIA(0):     libvdpau.

Tal y como indica el log, no es posible cargar el módulo dri2 lo que provoca un problema con el driver VDPAU. Pero, ¿que es dri?

Direct Rendering Infraestructure (dri) es una interfaz que permite a las aplicaciones acceder al hardware de vídeo sin pasar por el sistema de ventanas X (X Window System), es decir, permite usar las capacidades de aceleración por hardware de la tarjetas de vídeo actuales.

A partir del 2007 se comenzó a desarrollar una versión mejorada denominada dri2. Esta nueva versión destaca por combinar dri con AIGLX (Accelerated Indirect GLX), el cual permite un renderizado completamente por hardware.

¿Qué relación existe entre dri2 y VDPAU? VDPAU es una API y biblioteca de código abierto (libvdpau) que se encuentra en los drivers privativos de NVIDIA e implementada en el propio Xorg como una extensión del submódulo dri2.

De acuerdo al programador principal de libvdpau, AaronP, un error al cargar libvdpau no debería afectar en nada (incluida la decodificación vía VDPAU) ya que el valor predeterminado de los drivers privativos de NVIDIA es 'nvidia' en caso de no poder contactar con el submódulo dri2. Sin embargo parece que esto no es del todo correcto, puesto que al menos con mplayer al finalizar la reproducción (y solo al decodificar vía VDPAU), este da el error anteriormente comentado.

Para solucionar este pequeño problema tan solo debe indicarle al servidor Xorg donde se encuentran los módulos cargables. Para ello deberá editar su /etc/X11/xorg.conf y añadir a Section "Files" lo siguiente: ModulePath "/usr/lib64/xorg/modules" y ModulePath "/usr/lib64/opengl/xorg-x11/extensions/", es decir, deberá tener una sección similar a:
agd-desktop # nano /tc/X11/xorg.confSection "Files"
ModulePath "/usr/lib64/xorg/modules"
ModulePath "/usr/lib64/opengl/xorg-x11/extensions/"
EndSection

0 comentarios:

Publicar un comentario

Recuerde que puede utilizar algunos códigos HTML como <b>para negrita</b>, <i>para cursiva</i> y <a href="URL">para enlaces</a>.