AMD FSR 3.1.3 debuta con «Hybrid Spin Lock Pacing»: menor latencia y stuttering en cualquier juego soportado
En la noche de ayer AMD lanzó lo que ha denominado como la versión 1.1.3 del SDK para FidelityFX desde GPUOpen, o lo que es igual, el kit de desarrollo para que los creadores de los juegos incluyan esta tecnología en sus títulos de forma sencilla. No habría más noticia como tal si no fuese por la cantidad de cambios y nuevas tecnologías que se han incluido, puesto que con este SDK debuta FSR 3.1.3 con una novedad muy interesante: Hybrid Spin Lock Pacing.
Hasta 14 correcciones o mejoras se han incluido en este SDK, que como estarás pensando, tienen que ver con la nueva tecnología HSLP nombrada arriba. Y es una verdad a medias, porque no todas son necesarias para que funcione, algunas sí, otras son independientes, pero sobre todo, la mejora que va a conseguir en juegos es tan destacable sobre el papel que merece ser explicada, puesto que AMD realmente no lo ha hecho.
FSR 3.1.3, corrección de errores y nuevo soporte para la tecnología Opt-In Hybrid Spin Lock Pacing
Antes de entrar un poco en materia y explicar lo que ha introducido AMD, vayamos con la parte más sencilla enumerando las novedades una por una:
¿Qué ha cambiado?
- Limpieza general en el backend de interpolación de Frame.
- Se agregaron cambios en el buzón de correo a Vulkan.
- Eliminación de cambios de enlaces de Vulkan que podrían causar algunos problemas de compilación.
- Correcciones para un posible muestreo incorrecto del
backbuffer en
GAME_MOTION_VECTOR_FIELD
pass. - Correcciones y actualizaciones generales del framework.
- Se corrigieron errores tipográficos en el backend.
- Consulta de VRAM agregada a Vulkan.
- Cambios en la selección y el comportamiento de la cola de Vulkan.
- Eliminación de canales de textura de distorsión no utilizados.
- Adición de nuevas líneas de depuración para test pacing.
- Habilitación de formatos backbuffer y hudless separados.
- Soporte de formato sin tipo para DX12/GDK.
- Exponer ajustes para el frame pacing, como optar por utilizar spinlock híbrido.
Fix for UpdateTileMappings()
deadlock.
Menor latencia y stuttering al usar FSR, o bien, mejor Frame Pacing
Dicho todo esto, vamos con el grano fino de lo que hemos leído. En primer lugar, Hybrid Spin Lock Pacing no es obligatorio de usar por los desarrolladores, como bien ha dicho AMD, y hay que volver a recalcarlo. La tecnología Hybrid Spin Lock no es nueva como tal, pero sí que debuta en esto de la generación e interpolación de frames en tecnologías para GPU Gaming.
Y no es más que una tecnología de sincronización a bajo nivel para gestionar más eficientemente los recursos compartidos entre CPU y GPU, que como sabemos, en tecnologías como FSR y similares, tienen muchos datos que mover entre los dos componentes principales. El funcionamiento es más o menos sencillo: los hilos o Threads, normalmente tienen que esperar a la CPU para poder realizar la interpolación de Frames, lo cual puede llegar a generar latencia extra en el peor de los casos, mientras que en el mejor solamente stuttering, que será más o menos agresivo dependiendo de la cola en estos hilos.
Cuando AMD aplica Hybrid Spin Lock lo que consigue es que un hilo "gire" en un bucle esperando a que el recurso necesario esté listo. Además de este giro, también puede entrar en modo de espera, lo cual es necesario si los recursos son escasos, puesto que libera momentáneamente a la GPU de cierta carga si el cálculo del tiempo de llegada desde la CPU es más alto de lo requerido.
El término Pacing es la guinda del pastel. Esto sugiere que AMD está controlando la regulación del flujo de trabajo entre CPU y GPU para los frames con esta tecnología Hybrid Spin Lock. El resultado final aplicado a FSR 3.1.3 es que AMD ha mejorado la sincronización entre CPU y GPU con múltiples hilos, va a ahorrar algo de energía al desperdiciar menos recursos gracias a poder dejar "girando" ciertos hilos, y permite que los desarrolladores lo usen cuando necesiten.
Algunos de los cambios en el SDK apoyan a esta tecnología
Muy brevemente y para no liar más las cosas. Hay varios de los cambios descritos que apoyan y mejora a Hybrid Spin Lock Pacing, y los vamos a comentar rápidamente:
- Limpieza general en el backend de interpolación de Frame -> limpiar el backend será útil para manejar mejor la sincronización entre CPU y GPU.
- Adición de nuevas líneas de depuración para test pacing -> Diese la impresión de que está enfocado en mejorar el frame pacing. En general, parece que lo que busca AMD es validar si es mejor esperar o hacer girar el hilo, lo que se suele llamar como espera activa o pasiva. Así se optimiza la entrega de cada frame con FSR 3.1.3.
- Exponer ajustes para el frame pacing, como optar por utilizar spinlock híbrido -> Es la opcionalidad para usar, o no, Hybrid Spin Lock Pacing. Mejorará el frame pacing, o bien, la latencia y el stuttering, según el juego y como quiera implementarlo el desarrollador de turno.
- Cambios en la selección y el comportamiento de la cola de Vulkan -> Hace referencia a la cola de procesamiento de la GPU, y por lo tanto, afecta a la capacidad de sincronización de las tareas. Esto, junto con Hybrid Spin Lock Pacing, pueden reducir los cuellos de botella y mejorar la interpolación de los Frames.
Por supuesto, no podemos asegurar cómo influyen cada uno dentro de FSR 3.1.3 y de manera medible, ya que es un conjunto de mejoras que no funcionan aisladas, sino en conjunto, pero estará bien comprobar cómo funciona FSR 3.1.3 en los juegos que den soporte para Hybrid Spin Lock Pacing, que esperemos sean muchos.