Así mejora un SSD el rendimiento en consolas al hacer Streaming

Así mejora un SSD el rendimiento en consolas al hacer Streaming

Rodrigo Alonso

Hace muy poco Microsoft ha publicado una actualización en su API gráfica DirectX que añade un nuevo runtime llamado Sampler Feedback, y que conformará una parte integral para la manera en la que las consolas de próxima generación aprovecharán sus SSD para mejorar el rendimiento a la hora de hacer Streaming. ¿Quieres saber cómo funciona? En este artículo te lo explicamos.

Sampler Feedback es una nueva característica de Direct3D que define cómo se capturan y graban la información de texturas y localizaciones en pantalla; sin ella, hasta ahora los desarrolladores veían estos detalles opacos, con menos calidad y requiriendo un mayor esfuerzo por parte del hardware para poder generar los frames que se emiten en Streaming.

Cómo funciona Sampler Feedback

Tomemos como ejemplo la Xbox Series X, cuyo SSD es moderadamente rápido con una velocidad de lectura teórica de 2,4 GB/s y un hardware de descompresión que debería duplicar esa tasa para las texturas utilizando un algoritmo personalizado llamado BCPack. Se necesitan nuevas técnicas para poder aprovechar ese ancho de banda de manera efectiva, y que a la hora de hacer Streaming desde la consola el rendimiento de los juegos no se vea muy penalizado.

Sampler Feedback utiliza los resultados del anterior frame renderizado para determinar qué texturas leer en la memoria. La idea es que la mayoría de las texturas que se guardan en memoria lo hacen con una calidad de detalle muy baja, pero como el juego necesita texturas de mayor resolución, se cargan para el siguiente fotograma. Básicamente, guarda un fotograma ya renderizado en memoria para utilizarlo después.

Cada textura está conformada de lo que han llamado «Mipmaps», que son una cadena de versiones de cada fotograma progresivamente más pequeñas de cada textura. Los desarrolladores utilizan estas texturas con forma de mosaico y que dividen las texturas grandes en cuadros más pequeños que se pueden cargar individualmente para agilizar el proceso y mejorar el rendimiento.

Por ejemplo, una textura de 1024 x 1024 podría estar compuesta por un mosaico de 64 cuadros de 128 x 128. Su Mipmap contaría con una textura de 512 x 512 hecha de 16 cuadros de 128 x 128 y una textura aún más pequeña de 256 x 256 hecha de 4 cuadros e incluso texturas todvía más pequeñas para vistas más alejadas.

Integer-Scaling

Cada uno de estos mosaicos puede cargarse en la memoria o simplemente reservarse para su uso posterior. Cuando una GPU renderiza una escena, mira los mosaicos específicos en los Mipmap concretos que necesita. La extensión Sampler Feedback sirve para que cada vez que la GPU tenga que cargar un mosaico, pueda marcar en el búfer qué cuadro necesita y con qué nivel de detalle. Si el mosaico que necesita no está en memoria, entonces se recurrirá a una versión con menor resolución de textura para ahorrar trabajo a la GPU.

Esto significa que tras renderizar la CPU tiene mucha información sobre exactamente qué mosaicos se necesitan, puede comparar rápidamente estos datos con los que ya hay cargados y terminará con una lista de los que la GPU le pide pero no tiene. La CPU también puede realizar un seguimiento de los mosaicos requeridos recientemente y que puede descargar para liberar memoria.

Cómo mejora el SSD de las consolas su rendimiento en Streaming

Son dos cosas las que determinan cómo de rápido un SSD puede funcionar: el tamaño de las solicitudes (cuántos datos entran) y la profundidad de la cola (cuántas solicitudes recibe en paralelo). Para un SSD, las lecturas a 4K con una profundidad de 1 ó 2 es una carga de trabajo típica «aleatoria» y, en general, es bastante lenta. En contraste, las lecturas de 128 KB a profundidades de cola de 16 tienen un rendimiento muchísimo mejor.

Con mosaicos de 128 x 128 y 4 bytes por píxel, el mosaico ocupa 64 KB. Siempre se necesitarán múltiples texturas como la normal y la de los colores al mismo tiempo, por lo que se cargan y descargan juntas, así que después de la compresión el tamaño puede ser de 64 KB o más. Debido a que la CPU conoce qué texturas se necesitan en todo momento, puede ponerlas en la cola tan rápido como quiera, lo que significa que cuando hablamos de transmisión de texturas se beneficiará enormemente del mayor ancho de banda que proporciona un SSD.

Siguiendo con el ejemplo de la Xbox Series X, si la velocidad de carga de texturas tras la descompresión es de 3,8 GB/s esto permitiría cargar 64 MB por cuadro a 60 FPS; esto es lo suficientemente rápido para cargar 1000 texturas por cada cuadro, el equivalente a una única textura de 4096 x 4096.

En otras palabras, con esta tecnología Sampler Feedback tendremos en definitiva un mejor rendimiento y a una mejor calidad de texturas, siendo especialmente interesante también para hacer Streaming porque tendría una menor penalización para GPU y CPU aprovechando el enorme ancho de banda que proporciona el SSD.