Así ahorra tu tarjeta gráfica ancho de banda con la VRAM en los juegos

Así ahorra tu tarjeta gráfica ancho de banda con la VRAM en los juegos

Josep Roca

El matrimonio entre las GPUs y las memorias RAM de muy alto ancho de banda es una tradición, pero hay momentos en los que el ancho de banda de este tipo de memoria no es suficiente para alimentar las necesidades de las gráficas a las que están conectadas. Es aquí donde entra el Delta Color Compression o más comúnmente conocida como DCC, un tipo de compresión de datos que permite ahorrar ancho de banda de la GPU con la memoria.

El DCC es una de las tecnologías integradas en las tarjetas gráficas,l que más habréis visto en las especificaciones técnicas de las tarjetas gráficas para PC durante loa últimos años.

Funcionamiento del Delta Color Compression

Delta Color Compression

En matemáticas, la delta es una letra griega que en mayúscula (Δ), significa “cambio” y en este caso que nos ocupa precisamente lo que hacemos el delta entre dos fotogramas para conseguir comprimir el búfer de imagen a partir del segundo fotograma.

A nivel conceptual el búfer de imagen no es más que una tabla en el que se almacena el valor de color de cada píxel en cada una de sus celdas, ducha «tabla» es leída por el controlador de pantalla que luego lo envía a la propia pantalla.

La idea del DCC es la siguiente: en vez de apuntar los valores completos de color lo que hacemos en cada fotograma es apuntarlos como una suma respecto al color del fotograma anterior en cada uno de los píxeles.

No es compresión de texturas

La compresión de texturas es diferente al DCC, ya que tienen aplicaciones completamente distintas al aplicarse en etapas distintas del pipeline de renderizado de gráficos en 3D a tiempo real.

El motivo de ello es que el controlador de pantalla, el cual se encarga de leer el búfer de imagen final en la VRAM y enviarlo a pantalla, no es capaz de descomprimir al vuelo las texturas comprimidas. El único momento en el cual se comprime el búfer de imagen como si fuese una textura es porque es necesario reutilizar sus datos para efectos de post-procesado donde el búfer de imagen es tratado como si fuese una textura enorme y por tanto es comprimido como tal.

Triangle Pipeline

Pero para que lo entendáis mejor, el DCC solamente actúa en la parte final del pipeline 3D, cuando los píxeles de la escena ya han sido texturizados y se han de enviar al búfer de imagen final para ser mostrados en pantalla.

La compresión de texturas por lo general se aplica en la etapa del Fragment Shader (Pixel Shader en DirectX) mientras que el DCC se aplica durante la etapa llamada Per-sample operations, una vez la escena ya ha sido texturizada.

La relación de la tasa de relleno con el ancho de banda

Existe una relación directa entre la tasa de relleno, que es la cantidad de píxeles que una GPU puede escribir en el búfer de imagen por segundo y el ancho de banda de la memoria con la GPU. Cuando una GPU tiene falta de ancho de banda entonces la tasa de relleno disminuye.

La tasa de relleno teórica a la que puede llegar a una GPU siempre se calcula de la siguiente manera:

  • En NVIDIA: Número de ROPS * velocidad de reloj de la GPU.
  • En AMD: Número de RB*velocidad de reloj de la GPU.*4.

Pero la que se puede alcanzar con el ancho de banda de la memoria:

  • Ancho de banda de la memoria/cantidad de bits de color por píxel= tasa de relleno de la memoria.

Un ejemplo de como puede ayudar el DCC en casos en que no haya suficiente ancho de banda es el del siguiente gráfico:

dcc

En este podemos ver como el ratio de Gpíxeles/s disminuye cuando no se aplica el DCC por falta de ancho de banda suficiente.

Hay que tener en cuenta que lo que hace una GPU en última instancia es dibujar pixeles en pantalla y si la velocidad en la que los dibuja, la tasa de relleno, no es lo suficientemente alta entonces el rendimiento de esta se ve perjudicado. De ahí a que sea importante tener una buena VRAM con una GPU más que nada, pero la implementación del Delta Color Compression ayuda a que esta no se quede corta en lo que a ancho de banda se refiere.