Louvre é uma biblioteca C++ de alto desempenho projetada para construir compositores Wayland com forte ênfase na facilidade de desenvolvimento.
Criar um compositor Wayland pode ser uma tarefa difícil, muitas vezes envolvendo meses ou até anos de dedicação. Esta tarefa desafiadora envolve dominar APIs gráficas e de entrada do Linux, gerenciar buffers gráficos e implementar meticulosamente vários protocolos Wayland e suas respectivas interfaces.
Felizmente, o Louvre simplifica esse processo intrincado ao lidar com todas as tarefas complexas de baixo nível em seu nome. Ele ainda fornece uma maneira padrão de gerenciar protocolos, permitindo que você tenha um compositor básico, mas funcional desde o primeiro dia e explore e personalize progressivamente sua funcionalidade para atender com precisão aos seus requisitos.
No Louvre, você tem a flexibilidade de empregar seus próprios shaders/programas OpenGL ES 2.0, usar a classe LPainter para renderização 2D fundamental ou aproveitar o sistema LScene e LView, que gerencia danos ao buffer e também pode lidar com eventos de entrada para você. Além disso, é possível combinar essas três abordagens conforme necessário.
Louvre oferece excelente desempenho. Um benchmark que consiste na renderização de vários wl_subsurfaces móveis (opacos e translúcidos), no qual o exemplo de compositor louvre-weston-clone foi testado, mostra que o Louvre pode manter uma alta taxa de FPS mesmo em cenários complexos. Além disso, utiliza menos recursos de CPU e GPU do que compositores populares como Weston e Sway.
Máquina | MacBook Pro A1398 (Retina, 15 polegadas, meados de 2015) |
CPU | Intel Core i7-4770HQ a 2,20 GHz (até 3,4 GHz) com cache L3 compartilhado de 6 MB |
Memória | 16 GB de DDR3L de 1600 MHz |
GPU | Gráficos Intel Iris Pro - i915 (Intel Graphics) versão 1.6.0 (20201103) |
Mostrar | Tela Retina de 15 polegadas com modo único 2880x1800@60Hz |
SO | Linux Mint 21 - Linux 5.15.0-86-genérico |
Se você estiver interessado nos detalhes de como o benchmark funciona e quiser experimentá-lo, consulte este link.
Aqui está um gráfico que ilustra os resultados do benchmark. Ele exibe o FPS médio de cada compositor, renderizando de 1 a 50 superfícies móveis usando buffer duplo em uma tela HiDPI.
Os resultados do benchmark não são atualizados desde 2023 e podem não refletir com precisão o desempenho atual dos compositores testados.
A maioria dos compositores Wayland usa um único thread, o que diminui drasticamente seu desempenho ao renderizar cenários complexos. A razão para isso é devido à sincronização vertical , onde o compositor deve esperar alguns milissegundos antes de poder trocar o framebuffer que acabou de renderizar pelo que está sendo exibido na tela. Isto é feito para sincronizar a troca com a taxa de atualização do display ( vblank ) e evitar o efeito tearing . Ao trabalhar com um único thread, os compositores têm “tempos mortos” que os impedem de processar e renderizar o conteúdo a tempo para o próximo quadro. É por isso que eles acabam pulando vblank , fazendo com que sua taxa de atualização caia pela metade (ou mais). Para evitar esse problema, o Louvre trabalha com múltiplos threads. Cada saída (display) renderiza seu conteúdo em seu próprio thread, permitindo que o compositor continue processando solicitações e renderizando para outras saídas enquanto espera por um vblank. Isto evita que os compositores do Louvre tenham "tempos mortos" e, portanto, permite-lhes manter uma alta taxa de atualização.
O gráfico à esquerda exibe os resultados brutos do consumo de CPU, o que pode sugerir que o Louvre usa mais recursos de CPU. No entanto, esta comparação não é totalmente justa, já que a taxa de atualização do Louvre é quase o dobro da dos outros (60 FPS vs 30 FPS em média). Quando dividimos o consumo de CPU pelos quadros por segundo (FPS), conforme mostrado no gráfico à direita, fica evidente que o Louvre, de fato, utiliza menos recursos de CPU em relação ao FPS em comparação aos demais compositores.
Da mesma forma que acontece com o consumo de CPU, podemos observar que o Louvre utiliza menos recursos de GPU em relação ao FPS do que os outros compositores.