zoonoro.cl

Jugando con la tecnología

Aceleración por hardware en Flash Player 10

un comentario

1. Información general

Flash Player 10 introduce dos modos de ventana, directo y composición por GPU, que se pueden habilitar desde la configuración de publicación de la herramienta de edición de Flash. Para poder utilizar estos modos, es preciso activar la aceleración de hardware para Flash Player.

El modo directo utiliza la ruta más rápida y directa para introducir gráficos en pantalla, lo que resulta apropiado para la reproducción de gráficos y video.

La composición con GPU utiliza la unidad de procesamiento de gráficos de la tarjeta de vídeo para acelerar la composición. La composición de vídeo es el proceso de organización en capas de varias imágenes para crear una sola imagen de vídeo. Cuando la composición se acelera con la GPU, es posible mejorar el rendimiento de la conversión YUV, la corrección de color, la rotación o la escala, así como la fusión. La conversión YUV hace referencia a la conversión de color de las señales analógicas del compuesto, que se utilizan para la transmisión, en el modelo de color RGB (rojo, verde, azul) que utilizan las pantallas y las cámaras de vídeo. El uso de la GPU para acelerar la composición reduce la demanda del equipo y la memoria que se aplica a la CPU. También supone una reproducción más suavizada para el vídeo de definición estándar.

El uso de la composición con GPU puede resultar costoso en términos de recursos de CPU y memoria. Si algunas operaciones (por ejemplo, modos de fusión, recorte o enmascaramiento) no se pueden llevar a cabo en la GPU, se realizan mediante el software. Adobe recomienda la limitación a un archivo SWF por página HTML cuando se utilicen estos modos.

La definición de una velocidad de fotogramas en el archivo SWF que sea superior a 60, velocidad máxima de actualización de pantalla, no resulta útil. El establecimiento de la velocidad de fotogramas de 50 a 55 permite fotogramas eliminados, lo cual puede suceder por distintos motivos en algunas ocasiones.

Para poder utilizar el modo directo, es preciso disponer de Microsoft DirectX 9 con VRAM de 128 MB en Windows y OpenGL para Apple Macintosh, Mac OS X v10.2 o versiones posteriores. El modo de composición por GPU requiere compatibilidad con Microsoft DirectX 9 y Pixel Shader 2.0 en Windows con 128 MB de VRAM. En Mac OS X y Linux, la composición por GPU requiere OpenGL 1.5 y diversas extensiones de OpenGL (objeto framebuffer, objetos multitexture y shader, lenguaje de sombreado y sombreados de fragmentos).

Se puede activar los modos de aceleración directo y gpu por archivo SWF mediante el cuadro de diálogo de configuración de publicación de Flash, utilizando el menú de aceleración de hardware de la ficha Flash. Si selecciona Ninguno, el modo de ventana vuelve a los valores predeterminado, transparente u opaco, tal y como se especifica en la configuración del modo de ventana en la ficha HTML.

1.1 Requerimientos de hardware

Tarjetas gráficas soportadas[1]

Adobe recomienda Directx 9.0 o superior (en Windows) y Shader 3.0. Tarjetas gráficas con 512 MB de VRAM o superior y soporte para OpenGL 2.0 si la tarjeta de video detectada no aparece como soportada, los efectos para GPU y sus preferencias no serán vistos con la aplicación.

Tarjetas Gráficas compatibles testeadas

Windows

NVIDIA

GeForce 6 Series

6800 Ultra

GeForce 7 Series

7800 GTX

GeForce 8 Series

8800 GT

GeForce 9 Series

9600GT, 9800 (single GPU variant one)

Quadro FX Series

1700

Mid-Range

Quadro FX Series

4600

High

Quadro FX Series

5600

Ultra High-End

AMD/ATI

Radeon X1000 Series

1900

Radeon HD2000 Series

HD2900 XT

Radeon HD3000 Series

HD3870 X2

FireGL V-Avivo Series

V5600

Mid-Range

FireGL V-Avivo Series

V7600

High

FireGL V-Avivo Series

V8650

Ultra High-End

Macintosh

Mac Pro

First Generation

AMD/ATI

Radeon X1900

Second Generation

NVIDIA

GeForce 8800 GT

iMac

NVIDIA

GeForce 8800 GS

MacBook Pro

NVIDIA

GeForce 8800M GT

1.2 Observaciones realizadas a raiz de pruebas de código

La respuesta a las principales dudas que surgen sobre el uso de GPU en Flash son resueltas en el sitio de Tinic Uro, ingeniero de adobe y se encuentran en el siguiente enlace http://www.kaourantin.net/2008/05/what-does-gpu-acceleration-mean.html

Un resumen de ellas es el detallado a continuación:

  1. Que flash player utilice la tarjeta de video para renderizar no significa que vaya más rápido. En la mayoría de los casos el contenido irá más lento.

Contenidos han sido especificamente diseñados para trabajar bien con las funcionalidades de la GPU. El conversor de vectores a mapa de bits (rasterizar) puede optimizar muchos de los casos que la GPU no puede optimizar. Por lo que en aquellos casos en los que el trabajo que hacia la GPU debe hacerlos la CPU los equipos andarán bastante más lento de lo esperado, y debido a las restricciones del hardware es posible que esto sea en la mayoría de las visualizaciones.

  1. 2. Los requerimientos de hardware para el modo GPU son demasiado rigidos.
  2. 3. La fidelidad de los pixeles no se encuentra garantizada en el modo GPU.
  3. 4. No utilizar ciegamente la habilitación del los modos GPU o DIRECT en el contenido creado.

El autor del artículo recomienda en el caso de usar aceleración gráfica la opción direct, ya que es el más compatible de los dos y no haría que el contenido funcionara más lento en el caso que el procesamiento deba ser por CPU

2. El uso de pixel bender[2]

Pixel bender implementa algoritmos de procesamiento de imágenes (filtros y efectos) de forma independiente del hardware del equipo. La sintaxis del lenguaje se encuentra basada en XML para combinar operaciones de procesamiento de pixeles individuales (Kernels) dentro de operaciones de filtros Pixel bender más complejas.

Permite ejecutar eficiententement el mismo filtro en diferentes arquitecturas a través de GPU y CPU, incluyendo sistemas multi-core y multiprocesos.

El mismo Kernel puede correr en profundidades de 8-bit/16-bit-32-bit

Se utiliza principalmente en algoritmos cuyo procesamiento de cualquier pixel tiene minima dependencia del valor de otro pixel. Por ejemplo al manipular el brillo de una imagen cada pixel puede ser modificado de forma independiente.

2.1. Tarjetas gráficas soportadas por Pixel Bender[3]

La siguiente tabla lista las tarjetas gráficas soportadas por la herramienta de desarrollo de Pixel Bender y el visualizador, las cuales soportan la aplicación de filtros a través de GPU y CPU.

Manufacturer

Series

Model Numbers

NVIDIA

QuadroFX Series

FX 5500 SDI, FX 4500 SDI, FX 5600, FX 5500, FX 4600, FX 4500 X2, FX 4500, FX 4400 (discontinued, replaced by the FX 4500), FX 4000 SDI, FX 3500, FX 3450, FX 1700, FX 1500, FX GO 1400, FX 1400, FX 1300, FX 570, FX 560, FX 550, FX 540, FX 370, FX 350

200 Series

GTX 295, GTX 285

9 Series

9800, 9600, 9500, 9400, 9300, GeForce 9800 GTX, GeForce 9800 GX2

8 Series

GeForce 8800 GTS/GTX/Ultra, GeForce 8600M GT, GeForce 8500 GT

7 Series

GeForce 7950 GT/GS, GeForce 7900, GeForce 7800, GeForce 7600, GeForce 7300, GeForce 7200 GS, GeForce 7100

6 Series

6800 Ultra, 6800 GT, 6800 GS, 6800, 6800 XT, 6600, 6500, 6200, 6200 TurboCache, 6200 LE, 6100, 6150

AMD/ATI

Radeon HD4000 series

HD4870, HD4850

Radeon HD3800 series

Radeon HD2000 Series

HD2900, HD2600, HD2400

Radeon X1000 Series

X1950, X1900, X1800, X1650, X1600, X1300, “All In Wonder” X1900 (X1900 GPU), “All In Wonder” 2006 PCI Express cards (Based on X1300 GPU)

FireGL

Avivo PCI Express, V8650, V8600, V7600, V7350, V7300, V7200, V5600, V5200, V3600, V3300, V3400

2.2. Observaciones realizadas a través de artículos

Tinic Uro a través del post http://www.kaourantin.net/2008/05/adobe-pixel-bender-in-flash-player-10.html nuevamente entrega directrices sobre cuando recomienda usar pixel bender.

Pixel Bender no corre ningun tipo de aceleración por GPU en Flash Player 10, debido a las limitaciones que lleva el aplicar los filtros a traves del modo GPU lo que haria que en la mayoría de los casos se tuviese que volver al uso de software, aun si se tuviese el hardware adecuado. Además existía la necesidad de tener que llegar a la mayor cantidad de máquinas posibles.

Existen 4 diferentes formas de usar Pixel Bender Kernels en Flash Player, comenzando desde las más obvias a las más interesantes

  • Filtros: Para ser usados como filtros en los DisplayObject
  • Relleno: Para definir rellenos personalizados de los objetos, como por ejemplo gradientes o rellenos animados.
  • Difuminados entre capas: Al momento de mezclar dos gráficos, es posible crear un efecto propio.
  • Se puede utilizar con gráficos de hasta 32 bits, tomando objetos BitMapData, ByteArrays o vectores como fuentes de procesamiento.

El uso de Pixel bender en estas 4 modalidades funciona de forma totalmente separada del código principal en ActionScript en flujos asincronos independientes.

Algunas observaciones de las encontradas al momento de hacer la implementación en el Flash Player:

  • El espacio de color RGB de Flash contiene alpha que es lo que toma Pixel Bender como base
  • Los colores de salida siempre son fijados contra el canal alpha. Lo que no es el caso cuando la salida es un ByteArray o Vector.
  • El tamaño máximo del buffer de JIT para los kernel es de 32KB, si se llega al limite, flash vuelve al modo interpretado.
  • Las funciones matemáticas simples funcionan de forma diferente de acuerdo a la plataforma.
  • JIT no hace un almacenamiento en memoria de forma inteligente.

3. Conclusión

A pesar de que al momento de lanzar la décima versión del flash player, Adobe metió harta bulla sobre las posibilidades de aceleración por Hardware, hubo algunos detalles omitidos, como la poca cantidad de tarjetas soportadas, lo que hace arriesgado compilar un swf con esta opción, debido a que de lo contrario la aceleración es realizada por software generando el abrutpo consumo de recursos por parte del procesador.

Como vemos, la acelaración por GPU tiene un futuro promisorio en las próximas versiones del player, pero por ahora no es recomendable su uso si queremos llegar a la mayor cantidad de usuarios.


[1] http://kb2.adobe.com/cps/405/kb405445.html

[2] http://labs.adobe.com/technologies/pixelbender/

[3] http://labs.adobe.com/technologies/pixelbender/releasenotes.html#video

Written by Marcelo

October 5th, 2009 at 12:16 am

Posted in Artículo, Flash Player

One Response to 'Aceleración por hardware en Flash Player 10'

Subscribe to comments with RSS or TrackBack to 'Aceleración por hardware en Flash Player 10'.

  1. [...] This post was mentioned on Twitter by Marcelo Lara. Marcelo Lara said: RT @zoonoro: Post nuevito de paquetes en el blog:: Aceleración por hardware en Flash Player 10 http://bit.ly/ysHUp [...]

Leave a Reply