È stato rilasciato yserver 1.5.0, un server X11 scritto da zero in Rust e compatibile con le attuali estensioni del protocollo X11. Il progetto non punta a replicare tutte le funzionalità di Xorg Server e si limita solo a quelle necessarie per eseguire moderni ambienti desktop, window manager, applicazioni e librerie grafiche (GTK, Qt, SDL, GLFW). Tra gli ambienti testati figurano MATE, Xfce, Cinnamon, Sonic ed Enlightenment, oltre a window manager come icewm, FVWM3, openbox, i3 e wmaker. Il codice del progetto è distribuito con licenza MIT.
In yserver si è deciso di non supportare funzionalità obsolete e specifiche, come la gestione di più schermi X11 in uno server (l'uscita multi-monitor è supportata), modalità di colore diverse da TrueColor, rendering indiretto (indirect GLX), API dei driver DDX, metodi di gestione dei font obsoleti e collegamento di client con un ordine dei byte diverso (traslitterazione tra big-endian e little-endian).
L'uscita grafica è organizzata tramite i driver DRM/KMS e Vulkan di Mesa. Per la gestione della sessione e l'organizzazione dell'accesso ai dispositivi di input e output condivisi viene utilizzata la libreria libseat. Oltre al server X autonomo, è fornito ynest — un backend per avvio nidificato, che supporta l'esecuzione da Xwayland o altro X11.server.
Il funzionamento è stato testato su sistemi con GPU AMD Ryzen 9 6900HX (Rembrandt, RDNA2, driver mesa RADV), AMD RX580 (Polaris/GCN4, RADV), Intel i5-7200U (Kaby Lake, driver mesa ANV), NVIDIA GTX 1050, Snapdragon X1 X1E80100 (Adreno X1, Turnip), Apple M1 MBA, M2 MBP, nonché in ambienti virtualizzati con virtio-gpu e GPU virtuale Venus. Sono supportati Linux e FreeBSD.
Nella nuova versione:
- È stato aggiunto il supporto al meccanismo reverse-PRIME, che consente di usare la GPU integrata per il rendering e la GPU discreta per l'output video quando i monitor esterni sono collegati alle porte della scheda video discreta.
- È stato aggiunto il supporto alla trasmissione a Mesa dei dati sulla frequenza di aggiornamento dello schermo tramite l'estensione GLX_OML_sync_control.
- È stata implementata un'ottimizzazione per ridurre la latenza nei client con sincronizzazione verticale disattivata (vsync-off).
- È stata resa possibile l'estrazione dei nomi dei produttori GLX dal driver video per selezionare la libreria client GLX appropriata (ad esempio Mesa o NVIDIA).
- È stato implementato il supporto agli oggetti di sincronizzazione DRI3 1.4 utilizzando i primitivi drm_syncobj del sottosistema DRM (Direct Rendering Manager) del kernel.
- È stato aggiunto il supporto a un algoritmo di tracciamento delle modifiche sullo schermo che consente di ridisegnare non l'intero contenuto, ma solo le parti modificate, utilizzato nei compositori server Wayland basati sulla libreria wlroots.
- È stata introdotta la possibilità di disegnare le cornici delle finestre lato server X11.
- È stata implementata la compilazione dei pacchetti per l'architettura Aarch64, oltre a x86_64.
Fonte: opennet.ru
