Afișare server - Display server

Componentele de bază ale unei interfețe grafice : serverul de afișare implementează sistemul de ferestre . Un simplu manager de ferestre desenează doar decorațiunile ferestrelor , dar administratorii de ferestre compozite fac mai mult.

Un server de afișare sau un server de ferestre este un program a cărui sarcină principală este de a coordona intrarea și ieșirea clienților săi către și de la restul sistemului de operare, hardware-ului și reciproc. Serverul de afișare comunică cu clienții săi prin intermediul protocolului serverului de afișare, un protocol de comunicații , care poate fi transparent în rețea sau pur și simplu capabil de rețea.

Serverul de afișare este o componentă cheie în orice interfață grafică de utilizator , în special sistemul de ferestre .

Protocoale de comunicații disponibile pentru serverul de afișare

X11

X.Org Server comunică cu clienții săi, de exemplu , Amarok , prin protocolul X11
Sigla X Window System

Un exemplu de server de afișare este serverul X.Org , care rulează deasupra nucleului (de obicei un nucleu bazat pe Unix , cum ar fi Linux sau BSD ). Acesta primește datele de intrare ale utilizatorilor (de exemplu, de la evdev pe Linux) și le transmite unuia dintre clienții săi. De asemenea, serverul de afișare primește date de la clienții săi; procesează datele, compune și pe Linux le transmite uneia dintre cele trei componente ale nucleului - DRM , gem sau driver KMS . Componenta scrie datele în framebuffer și conținutul framebuffer-ului este transmis pe ecranul conectat și afișat. X se bazează pe GLX .

Unul dintre implementările conceptului de server de afișare este X Window System , în special versiunea sa folosit de fapt - X.Org Server și Xlib și XCB biblioteci client. Serverul X.Org este un server de afișare, dar în implementarea sa actuală se bazează pe un al doilea program, managerul ferestrelor de compoziție , pentru a face compoziția. Exemple sunt Mutter sau KWin .

Exemple notabile de servere de afișare care implementează protocolul serverului de afișare X11 sunt X.Org Server , XFree86 , XQuartz și Cygwin / X , în timp ce bibliotecile client care implementează protocolul serverului de afișare X11 sunt Xlib și XCB .

Wayland

Protocolul serverului de afișare Wayland
Sigla Wayland

Serverele de afișare care implementează protocolul serverului de afișare Wayland se numesc compozitori Wayland . La fel ca orice server de afișare, un compozitor Wayland este responsabil pentru manipularea intrărilor și ieșirilor pentru clienții săi și - spre deosebire de X11 - suplimentar pentru compoziție . Exemple sunt Weston , Mutter , KWin sau Enlightenment .

Compozitorii Wayland comunică cu clienții Wayland prin protocolul serverului de afișare Wayland . Acest protocol definește faptul că clienții pot scrie direct date în framebuffer utilizând API-ul de redare EGL . Serverul de afișare trebuie să decidă în continuare ce fereastră este deasupra și astfel vizibilă pentru utilizator și este totuși responsabil pentru transmiterea datelor referitoare la dispozitivele de intrare de la evdev către clienții săi.

Wayland este utilizat într-o anumită măsură în unele distribuții desktop Linux, cum ar fi Fedora . De asemenea, este foarte potrivit pentru calculul mobil și a fost adoptat, de exemplu, de proiectele Tizen , Sailfish OS și AsteroidOS axate pe smartphone-uri și tablete .

O implementare a Wayland este disponibilă sub licența MIT , bibliotecile libwayland-client și libwayland-server.

Există un efort continuu de a adăuga asistență Wayland la sistemul de operare Chrome .

Mir

Serverul de afișare Mir vine cu propriul protocol de server de afișare Mir , care este diferit de cele folosite de X11 și Wayland. Mir acceptă în plus protocolul X11. A fost dezvoltat de Canonical și a fost destinat să fie serverul de afișare la alegere pentru Ubuntu . Începând din 2017, a fost înlocuit cu serverul de afișare Wayland pentru edițiile desktop ale Ubuntu.

Există implementări ale serverului de afișare Mir, serverului libmir și bibliotecilor libmir-client disponibile în GPLv3 .

SurfaceFlinger

Google a dezvoltat un server de afișare numit SurfaceFlinger pentru Android (un alt sistem de operare bazat pe nucleul Linux, în principal pentru dispozitive mobile):

Totul în Android este redat la o „suprafață”; „suprafețele” sunt produse de aplicații și plasate într-o coadă administrată de SurfaceFlinger.

O altă soluție specifică pentru Android este „Gralloc”. Gralloc gestionează memoria dispozitivului, adică face alocare, arbitraj, gestionează sincronizarea prin descriptori de fișiere de gard (FD) Android / Linux. Gralloc concurează cu alte soluții, cum ar fi Mesa's Generic Buffer Management (GBM) sau EGLStreams de la Nvidia. Stratul de abstracție hardware gralloc (HAL) este utilizat pentru a aloca tampoanele care stau la baza „suprafețelor”.

Pentru compozitarea în Android, Surfaces sunt trimise către SurfaceFlinger, care folosește OpenGL ES pentru a face compoziția.

Hardware Composer HAL (HWC) a fost introdus în Android 3.0 și a evoluat constant de-a lungul anilor. Scopul său principal este de a determina cel mai eficient mod de a compune buffere cu hardware-ul disponibil. Ca HAL, implementarea sa este specifică dispozitivului și de obicei este realizată de OEM-ul hardware-ului de afișare.

Compozitor de cuarț

Pentru familia de sisteme de operare macOS Apple , Quartz Compositor îndeplinește sarcinile unui server de afișare și ale unui manager de ferestre din sistemul de ferestre .

Manager ferestre desktop

Pentru Microsoft Windows , începând cu Windows Vista , Desktop Window Manager permite utilizarea accelerării hardware pentru a reda interfața grafică cu utilizatorul. Acesta a fost creat inițial pentru a permite porțiuni din noua experiență a utilizatorului „Windows Aero”, care permitea efecte precum transparența, comutarea ferestrelor 3D și multe altele. Este, de asemenea, inclus în Windows Server 2008, dar necesită instalarea caracteristicii „Desktop Experience” și a driverelor grafice compatibile.

Vezi si

Referințe