Os desenvolvedores do projeto Cuarzo OS apresentaram o primeiro lançamento da biblioteca Louvre, que fornece componentes para o desenvolvimento de servidores compostos baseados no protocolo Wayland. O código é escrito em C++ e distribuído sob a licença GPLv3.
A biblioteca cuida de todas as operações de baixo nível, incluindo 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 presença de componentes prontos torna possível não gastar meses de trabalho na criação de elementos padrão de baixo nível, mas receber imediatamente uma estrutura de servidor composta pronta e funcional, que pode ser adaptada às suas necessidades e complementada com o necessário funcionalidade estendida. Se necessário, o desenvolvedor pode substituir os métodos fornecidos pela biblioteca para lidar com protocolos, eventos de entrada e eventos de renderização.
Segundo os desenvolvedores, a biblioteca é visivelmente superior em desempenho às soluções concorrentes. Por exemplo, um exemplo de servidor composto, louvre-weston-clone, escrito usando Louvre, que reproduz a funcionalidade do projeto Weston, em comparação com Weston e Sway, consome menos recursos de CPU e GPU nos testes, e também permite que você para atingir FPS consistentemente altos, mesmo em cenários complexos.
Principais características do Louvre:
- Suporte para configurações multi-GPU (Multi-GPU).
- Suporta múltiplas sessões de usuário (multissessão, comutação TTY).
- Um sistema de renderização que suporta métodos baseados em renderização 2D (LPainter), Cenas e Visualizações.
- Capacidade de usar seus próprios shaders e programas OpenGL ES 2.0.
- Redesenho automático realizado conforme necessário (somente quando o conteúdo da área muda).
- Trabalho multithread, permitindo atingir FPS alto com v-sync habilitado mesmo ao renderizar cenários complexos (implementações de thread único têm problemas para manter FPS alto devido a quadros ausentes que não podem ser processados devido a atrasos na espera pela sincronização com o pulso de supressão de quadros (vbranco).
- Suporta buffer único, duplo e triplo.
- Implementação de uma área de transferência para dados de texto.
- Suporte para Wayland e extensões:
- XDG Shell é uma interface para criar e interagir com superfícies como janelas, que permite movê-las pela tela, minimizar, expandir, redimensionar, etc.
- Decoração XDG - renderizando decorações de janelas no lado do servidor.
- Tempo de apresentação - fornece exibição de vídeo.
- Linux DMA-Buf - compartilhamento de múltiplas placas de vídeo usando tecnologia dma-buf.
- Suporta trabalho em ambientes baseados em drivers Intel (i915), AMD (amdgpu) e NVIDIA (driver proprietário ou nouveau).
- Funcionalidades ainda não implementadas (na lista de planos):
- Eventos de toque - manipulação de eventos de tela de toque.
- Gestos de ponteiro - controles de tela de toque.
- Viewporter - Permite que o cliente execute dimensionamento e corte das bordas da superfície no lado do servidor.
- Transformando objetos LView.
- XWayland - lançando aplicativos X11.
Fonte: opennet.ru