Blog Personal.

Conceptos Básicos, Xbox Series S, Xbox Series X, XSS, XSX

XSX y XSS: Sampler Feedback Streaming

Una de las cosas más interesantes de las que Microsoft ha implementado en la API DirectX 12 Ultimate es el llamado Sampler Feedback Streaming y a la vez una de las cosas menos comprendidas por parte del público.

Una de las cosas que vimos en la actual generación por primera vez fueron las texturas parcialmente residentes, partes de texturas almacenadas en la Cache L2 de la GPU con tal de acelerar la petición de datos por parte de la GPU.

La idea era dividir internamente las texturas con todos sus Mip Maps en bloques de 64KB que es el tamaño de una página de memoria para la GPU y ordenarlas en una Page Table en memoria utilizando direccionamiento virtual a través de la GPUMMU. Hay que tener en cuenta que las caches no copian en su interior direcciones de memoria sueltas sino páginas de memoria enteras por el hecho que el acceso a los datos suele ser secuencial y en el caso de las texturas sus datos se encuentran todos en la misma zona de memoria, pero esto tiene un problema y es que obliga a cargar en memoria todos los Mip Maps de la textura.

Los Mip Maps son versiones a diferentes resoluciones de una textura para representarlas según la distancia. El problema es que no siempre son necesarios todos los Mip Maps de una textura en una escena. ¿Que hace el Sampler Feedback Streaming con ellos? Simplemente se añade 1 bit adicional a cada página de texturas en la jerarquía de memoria según si se ha utilizado en el fotograma anterior o no, esto lo hace con un hardware dedicado especial y todos aquellos Mip Maps no utilizados son descartados de la cache e incluso de la memoria teniendo preferencia para el descarte los Mip Maps de mayor resolución.

Pero aún hay más, en el caso del PRT cada página de texturas es de unos 64KB de tamaño y siempre se va a cargar en cache desde la RAM todas las páginas de una textura, con el SFS podemos recortar una textura y no tener que cargarla enter.a Es decir, podemos seleccionar que parte de una textura necesitamos marcando un punto de origen y uno final en las coordenadas UV de la misma.

La novedad es que todo esto no solo esta implementado a nivel de la RAM para la GPU y la cache interna sino también a nivel del SSD. La idea es que le permite marcar a los desarrolladores no solo que parte de las texturas no son necesarios sino los Mip Maps de las mismas que no son necesarias en un nivel determinado, esto evita que el sistema de captación de datos copie información no necesaria del SSD a la RAM acelerando con ello el proceso de volcado de datos.

Esto es todo, tenéis los comentarios de esta misma entrada para comentar y no olvideis que tenemos Discord.

5 2 votes
Article Rating
11 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Snake128

Esto que comentas es entonces hardware exclusivo de xbox o podria implementarse también en ps5/pc? Gracias por la aclaración. He leido por tuiter a un desarrollador como funciona, gracias a esto puedes tener por ejemplo el mipmap de una textura más grande en memoria si tener que tener la textura toda completa. Me parece una excelente idea, supongo que es una especie de lod de texturas, y se van cargando del ssd a memoria al vuelo. De todas formas parece que esto se tiene que programar no? Es decir si no funciona en ps5/pc se tendría que hacer en exclusiva… Read more »

Set

A mi me recuerda a las Texturas Virtuales, donde solo se va cargando los mip maps neceserarios en vez de toda la textura(todos los mip map) como seria en una implementacion de textura tradicionales.

Pero entiendo que esto xbox lo haría por hardware dedicado.

Snake128

Todo entendido, como he intentado explicar ya existe y se puede hacer en pc/ps5

Buena noticia.

Dani

Si he entendido bien, el «famoso» multiplicador 2x-3x (2,5x de media) que dice Microsoft viene por no cargar datos innecesarios.

Entonces, si necesitas cargar 2,5 GB de texturas, con SFS te valdría con cargar sólo 1 GB, porque se supone que es lo realmente necesario.

Me parece un avance muy bueno. Esos 13,5 GB de memoria para juegos se me hacían escasos, pero si el ahorro en texturas va a ser tan alto, la escasez de memoria no será tanta como creía.

nolgan

la xsx solo tien acceso ala gpu 10gb, de lso 16 asi que para juegos xsx solo tiene 10 gb totales, a eso quitales gb de usso extras… pongamos que le queda 9gb ps5 si la gpu tiene acceso a los 16gb de tam , que sim le quitas el sistema y usus le quedan si eso 13,5gb o 12,5gb mas menos.. o sea xsx para juegos la gpu tendra entre 9gb a 10gb max y ps5 para juegos la gpu tendra entre 12 a 14gb max mas menos, segin lo que ocupe el usos del sistema.. si el sistema… Read more »

Valentin

Como os gustá convertir todo en quien tiene mayor algo. Seguramente el SO de PlayStation tenga menor uso de RAM pero esos datos que sacas de XSX son puro FUD por tu parte.

10 gigabytes a 560 GB/s y 6 gigabytes a 336 GB/s.

Total que quedan 2.5GB para el W10.

Last edited 2 months ago by Valentin
Dani

No conviertas mi comentario en guerra de consolas, me cansa.

Valentin

Mi comentario no iba a ti. Yo lo decia por Nolan que anda todo el rato con el FUD desinformando y convirtiendo todo en un mi consola es mejor que la tuya. Llevo un tiempo lurkeando en el blog y se lo que digo.

Dani

Contesto a Nolgan

El peluca

No te equivocas

Marwyn

Resumiendo en lenguaje llano : optimización de trasmision de datos desde las cache a las memoria final SSD nwe.. no solo para ahorrar trabajo al procesador de multiplicidad de información si no que en tiempo de proceso . Ese tiempo y recursos ¿Podria ir dedicado a la descompresión de datos de un juego y asi reducir su espacio dentro del disco duro o jugar directamente con estos avances en descompresión de datos via streaming a calidades 4k ,60fps? Sea por la compra de nuevos discos duros para alojar mas juegos o via streaming( xcloud,) micro dibuja dos nuevas formas de… Read more »