SDL es una biblioteca proporciona herramientas como salida de gráficos 2D y 3D acelerada por hardware, la cual ya hemos hablado en bastantes ocasiones aquí en el blog (generalmente sobre sus nuevos lanzamientos), esta biblioteca durante mucho tiempo se encontró trabajando de manera predeterminada sobre X11, pero con Wayland como segunda opción.
Actualmente los desarrolladores se encuentran trabajando sobre la nueva rama de SDL3 en la cual una de las principales características y una novedad (sobre todo) era el desplazamiento de X11 por el uso de Wayland por defecto, un movimiento que en teoría mejoraría muchos aspectos de la biblioteca.
Pero tal parece (al menos de momento) que ni una ni otra cosa se cumplirá en SDL3 ya que hace poco se realizo una solicitud a los desarrolladores, la cual básicamente consistía en revocar el cambio que migraba la rama SDL3 para utilizar el protocolo Wayland como predeterminado en entornos que admiten Wayland y X11 simultáneamente.
Wayland tiene una gran cantidad de problemas sin resolver relacionados con la presentación del bloqueo de la suspensión de la superficie y la implementación FIFO (vsync) que está fundamentalmente rota, lo que lleva a un rendimiento reducido de la GPU.
Eso no quiere decir «deberíamos arreglar FIFO en Mesa/otros controladores», sino que no se puede arreglar en absoluto sin un protocolo adicional, en este caso fifo-v1 1 .
Sin este protocolo, vkQueuePresent o glSwapBuffers deben detenerse para la devolución de llamada de 'marco' después de presentar una imagen. La única razón por la que podemos salirnos con la nuestra en SteamOS es porque Gamescope implementa lo que es esencialmente fifo-v1 y lo usamos allí…
No hay ninguna ventaja en que los juegos y las aplicaciones promedio prefieren Wayland a X11, solo varias regresiones de rendimiento e inutilizabilidad en este momento.
Por lo tanto, debemos revertir este cambio hasta que se publiquen fifo-v1 y commit-timing-v1 y al menos en una versión estable para los principales compositores.
Aunque la solicitud de extracción fue revisada y aprobada por el creador de SDL, aún no ha sido incorporada al código base. La razón principal es la existencia de problemas no resueltos en el entorno de Wayland relacionados con el bloqueo de superficies y la implementación de FIFO (vsync), lo que resulta en una disminución del rendimiento. Estos problemas no pueden resolverse completamente sin la implementación de los protocolos adicionales fifo-v1 y commit-timing-v1.
Se destaca que, sin resolver estos problemas, la transición de X11 a Wayland no ofrece beneficios significativos para las aplicaciones y juegos habituales, sino que provoca una seria reducción del rendimiento y posibles regresiones. Por lo tanto, se sugiere reconsiderar la migración de SDL a Wayland solo después de que se aprueben y se implementen los protocolos fifo-v1 y commit-timing-v1 en versiones estables de los principales administradores compuestos.
Sobre el caso es importante mencionar que actualmente la aceptación de la solicitud se encuentra «pospuesta» ya que Sam Lantinga, el creador de SDL, mencionó que revisara esta solicitud relacionada con la transición a Wayland de forma predeterminada, menciona que el caso se abordara más adelante (más cerca del lanzamiento final de SDL3), ya que actualmente se ha decidido dar preferencia a abordar los problemas mencionados y es posible que la situación se normalice para entonces. Por ahora, Wayland se mantiene habilitado en las versiones de prueba de SDL 3 para obtener una mejor evaluación en entornos basados en Wayland y recopilar comentarios de los usuarios.
Aunque de momento tal parece que todo apunta a que Wayland será la elección final, si no se llegan a solucionar los problemas y sobre todo llegar a un rendimiento óptimo, el retraso de Wayland como valor predeterminado podria ser una realidad.
De momento se puede conocer el estado actual del desarrollo de la nueva rama SDL 3, que presenta modificaciones en varios subsistemas, cambios en la API que pueden afectar la compatibilidad y una limpieza exhaustiva de funciones obsoletas. Por ejemplo, en SDL 3 se rediseñó por completo el código para trabajar con sonido, se introdujo un nuevo backend para renderizado a través de la API Vulkan en la API de renderizado 2D, se amplió la compatibilidad con HDR, también se actualizó la API para trabajar con ventanas transparentes, entre otras cosas mas.
Si estás interesado en conocer los avances en SDL3 puedes utilizar la versión de prueba que se ofrece desde el siguiente enlace.Por otra parte, si quieres dar seguimiento a la discusión sobre el retraso de Wayland, puedes hacerlo desde el siguiente enlace.