Os desenvolvedores do projeto Cuarzo OS apresentaram a primeira versão da biblioteca Louvre, que fornece componentes para o desenvolvimento de servidores compostos com base no protocolo Wayland. O código é escrito em C++ e distribuído sob a licença GPLv3.
A biblioteca assume a execução de todas as operações de baixo nível, incluindo o gerenciamento de buffers gráficos, interação com subsistemas de entrada e APIs gráficas no Linux, e também oferece implementações prontas de várias extensões do protocolo Wayland. A disponibilidade de componentes prontos permite que os desenvolvedores não precisem gastar meses criando elementos de baixo nível típicos, mas possam imediatamente obter uma estrutura funcional para seu compositor. servidor, que pode ser adaptada às suas necessidades e complementada com a funcionalidade avançada necessária. Se necessário, o desenvolvedor pode sobrescrever os métodos fornecidos pela biblioteca para tratamento de protocolos, eventos de entrada e renderização.
De acordo com os desenvolvedores, a biblioteca supera significativamente as soluções concorrentes em termos de desempenho. Por exemplo, um servidor compositor chamado louvre-weston-clone, criado com a biblioteca Louvre e que reproduz a funcionalidade do projeto Weston, consome menos recursos de CPU e GPU em comparação com Weston e Sway durante os testes realizados, além de permitir uma taxa de quadros consistentemente alta, mesmo em cenários complexos.

Recursos principais do Louvre:
- Suporte para configurações com várias GPU (Multi-GPU).
- Suporte a várias sessões de usuário (Multi-Session, troca de TTY).
- Sistema de renderização com suporte a métodos baseados em renderização 2D (LPainter), cenas (Scene) e visões (Views).
- Possibilidade de usar seus próprios shaders e programas OpenGL ES 2.0.
- Redesenho automático, executado conforme necessário (apenas ao alterar o conteúdo da área).
- Operação multithread, permitindo alcançar altas taxas de quadros com v-sync ativado, mesmo ao renderizar cenários complexos (implementações de thread única enfrentam problemas para manter altas taxas de quadros devido a quadros perdidos que não conseguem ser processados por causa de atrasos na sincronização com o impulso de vblank).
- Suporte a buffer simples, duplo e triplo.
- Implementação de buffer de troca para dados textuais.
- Suporte a Wayland e extensões:
- XDG Shell — uma interface para criar e interagir com superfícies como se fossem janelas, permitindo movê-las pela tela, minimizá-las, maximizar, redimensionar, etc.
- XDG Decoration — renderização de decorações de janelas no lado do servidor.
- Presentation Time — garante a exibição de vídeo.
- Linux DMA-Buf — compartilhamento de várias placas de vídeo usando a tecnologia dma-buf.
- Suporte para operação em ambientes baseados em drivers Intel (i915), AMD (amdgpu) e NVIDIA (driver proprietária ou nouveau).
- Funcionalidades ainda não implementadas (na lista de planos):
- Touch Events — processamento de eventos de telas sensíveis ao toque.
- Pointer Gestures — controle a partir de telas sensíveis ao toque.
- Viewporter — permite que o cliente execute ações de dimensionamento e recorte nas bordas da superfície no lado do servidor.
- Transformação de objetos LView.
- XWayland — execução de aplicativos X11.


Fonte: opennet.ru
