Louvre es una biblioteca C++ de alto rendimiento diseñada para crear compositores Wayland con un fuerte énfasis en la facilidad de desarrollo.
Crear un compositor Wayland puede ser una tarea desalentadora, que a menudo requiere meses o incluso años de dedicación. Esta desafiante tarea implica dominar las API gráficas y de entrada de Linux, administrar los buffers gráficos e implementar meticulosamente numerosos protocolos Wayland y sus respectivas interfaces.
Afortunadamente, Louvre simplifica este complejo proceso al encargarse de todas las tareas complejas de bajo nivel en su nombre. Incluso proporciona una forma predeterminada de administrar protocolos, lo que le permite tener un compositor básico pero funcional desde el primer día y explorar y personalizar progresivamente su funcionalidad para que coincida con precisión con sus requisitos.
Dentro de Louvre, tiene la flexibilidad de emplear sus propios programas/sombreadores OpenGL ES 2.0, usar la clase LPainter para renderizado 2D fundamental o aprovechar el sistema LScene y LView, que administra el daño del buffer y también puede manejar eventos de entrada por usted. Además, es posible combinar estos tres enfoques según sea necesario.
Louvre ofrece un rendimiento excelente. Un punto de referencia que consiste en renderizar numerosas superficies wl_subsurfaces en movimiento (opacas y translúcidas), en el que se probó el compositor de ejemplo louvre-weston-clone, muestra que Louvre puede mantener una alta tasa de FPS incluso en escenarios complejos. Además, utiliza menos recursos de CPU y GPU que compositores populares como Weston y Sway.
Máquina | MacBook Pro A1398 (Retina, 15 pulgadas, mediados de 2015) |
UPC | Intel Core i7-4770HQ a 2,20 GHz (hasta 3,4 GHz) con 6 MB de caché L3 compartida |
Memoria | 16 GB de DDR3L a 1600 MHz |
GPU | Gráficos Intel Iris Pro - i915 (Gráficos Intel) versión 1.6.0 (20201103) |
Mostrar | Pantalla Retina de 15 pulgadas con modo único 2880x1800@60Hz |
SO | Linux Mint 21 - Linux 5.15.0-86-genérico |
Si está interesado en los detalles de cómo funciona el punto de referencia y desea probarlo usted mismo, consulte este enlace.
A continuación se muestra un gráfico que ilustra los resultados de las pruebas comparativas. Muestra el FPS promedio de cada compositor que representa de 1 a 50 superficies móviles usando doble almacenamiento en búfer en una pantalla HiDPI.
Los resultados de las pruebas comparativas no se han actualizado desde 2023 y es posible que no reflejen con precisión el rendimiento actual de los compositores probados.
La mayoría de los compositores de Wayland utilizan un solo subproceso, lo que ralentiza drásticamente su rendimiento al renderizar escenarios complejos. La razón de esto se debe a la sincronización vertical , donde el compositor debe esperar unos milisegundos antes de poder intercambiar el framebuffer que acaba de renderizar con el que se muestra en la pantalla. Esto se hace para sincronizar el intercambio con la frecuencia de actualización de la pantalla ( vblank ) y evitar el efecto de desgarro . Cuando trabajan con un solo hilo, los compositores tienen "tiempos muertos" que les impiden procesar y renderizar el contenido a tiempo para el siguiente fotograma. Es por eso que terminan omitiendo un vblank , lo que hace que su frecuencia de actualización caiga a la mitad (o más). Para evitar este problema, Louvre trabaja con múltiples subprocesos. Cada salida (pantalla) representa su contenido en su propio hilo, lo que permite al compositor continuar procesando solicitudes y renderizar en otras salidas mientras se espera un vblank. Esto evita que los compositores del Louvre tengan "tiempos muertos" y, por lo tanto, les permite mantener una frecuencia de actualización alta.
El gráfico de la izquierda muestra los resultados sin procesar del consumo de CPU, lo que podría sugerir que Louvre utiliza más recursos de CPU. Sin embargo, esta comparación no es del todo justa, ya que la frecuencia de actualización del Louvre es casi el doble que la de los demás (60 FPS frente a 30 FPS promedio). Cuando dividimos el consumo de CPU por fotogramas por segundo (FPS), como se muestra en el gráfico de la derecha, resulta evidente que Louvre, de hecho, utiliza menos recursos de CPU en relación con FPS en comparación con los otros compositores.
Al igual que con el consumo de CPU, podemos observar que Louvre utiliza menos recursos de GPU en relación con FPS que los otros compositores.