Manager de ferestre desktop

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 19 februarie 2022; verificările necesită 9 modificări .
componenta Windows
Manager de ferestre desktop
Tipul componentei Software și componentă Microsoft Windows [d]
Inclus în Windows Vista
Windows 7
Windows 8
Windows 8.1
Windows 10
Windows 11
Windows Server 2008 [1]
Windows Server 2008 R2 [1]
Înlocuit Microsoft GDI+
Numele serviciului UxSms (numai Windows Vista/7)
Descrierea serviciului Desktop Window Manager Manager de sesiune

Desktop Window Manager ( DWM , anterior Desktop Compositing Engine, DCE ) este un sistem de interfață grafică desktop  din Windows Vista , care utilizează accelerarea hardware pentru a reda interfața grafică cu utilizatorul .

A fost creat inițial pentru Windows Aero GUI , care includea caracteristici precum transparența ferestrelor etc. De asemenea, managerul de ferestre desktop este inclus în Windows Server 2008 și Server 2008 R2 , dar componenta Desktop Experience trebuie instalată de utilizator. [2]

Arhitectură

Desktop Window Manager - Manager de ferestre compuse . Aceasta înseamnă că fiecare program are un buffer în care scrie date; apoi DWM compune buffer-ul fiecărui program în imaginea finală. Prin comparație, managerul de ferestre de stivă din Windows XP și versiuni anterioare (și Windows Vista și Windows 7 cu Windows Aero dezactivat) conține un singur buffer de afișare care scrie date din toate programele.

DWM funcționează diferit în funcție de sistemul de operare (Windows 7 sau Windows Vista) și de versiunea driverelor grafice utilizate ( WDDM 1.0 sau 1.1). În Windows 7 și cu driverele WDDM 1.1, DWM scrie doar tamponul de program în memoria video , chiar dacă este un program de interfață pentru dispozitiv grafic (GDI). Acest lucru se datorează faptului că Windows 7 acceptă accelerarea hardware (limitată) pentru GDI [3] și nu necesită o copie a tamponului care să fie păstrată în memoria sistemului pentru ca procesorul să scrie în el.

Deoarece compozitorul are acces la grafica tuturor aplicațiilor, permite cu ușurință efecte vizuale care combină elemente vizuale din mai multe aplicații, cum ar fi transparența. DWM folosește DirectX 9 pentru a realiza compunerea și randarea pe GPU, eliberând CPU de sarcina de a gestiona randarea din bufferele ecranului către afișaj. Cu toate acestea, acest lucru nu afectează aplicațiile de desen în afara bufferelor ecranului - în funcție de tehnologiile utilizate pentru aceasta - poate fi încă legat de procesor. Renderele independente de DWM, cum ar fi GDI , sunt redirecționate către buffer-uri prin redarea interfeței cu utilizatorul (UI) ca bitmap. Tehnologiile de randare DWM, cum ar fi WPF , fac structurile de date interne disponibile într-un format compatibil DWM. Conținutul ferestrei din buffer-uri este apoi convertit în texturi DirectX.

Desktopul în sine este o suprafață Direct3D cu ecran complet ale cărei ferestre sunt reprezentate ca o grilă de două triunghiuri adiacente (și inversate reciproc) care sunt convertite într-un dreptunghi 2D. Textura care reprezintă cromul interfeței cu utilizatorul este apoi mapată pe aceste dreptunghiuri. Tranzițiile ferestrelor sunt implementate ca transformări de plasă folosind programe de umbrire . [4] În Windows Vista, tranzițiile sunt limitate la un set de shadere încorporate care implementează transformări. Greg Schechter, un dezvoltator la Microsoft, a sugerat că acest lucru ar putea fi deschis pentru dezvoltatori și utilizatori pentru a-și activa propriile efecte într-o versiune viitoare. [5] DWM redă doar obiectul desktop principal ca suprafață 3D; alte obiecte desktop, inclusiv desktop-uri virtuale, precum și desktopul securizat utilizat de User Account Control , nu sunt. [6]

Deoarece toate aplicațiile sunt redate într-un buffer off-screen, ele pot fi, de asemenea, citite dintr-un buffer inline în alte aplicații. Deoarece bufferul off-screen este actualizat în mod constant de către aplicație, randarea inline va fi o reprezentare dinamică a ferestrei aplicației, nu o randare statică. Iată cum funcționează previzualizările în miniatură și Windows Flip în Windows Vista și Windows 7 . DWM oferă un API public care permite aplicațiilor să acceseze aceste reprezentări în miniatură. [7] Dimensiunea miniatură nu este fixă; aplicațiile pot solicita miniaturi de orice dimensiune – mai mici decât fereastra originală, aceeași dimensiune sau chiar mai mari – iar DWM le va scala corect înainte de a reveni. Windows Flip 3D nu utilizează API-urile publice pentru miniaturi, deoarece nu permit accesul direct la texturile Direct3D. [8] În schimb, Flip 3D este implementat direct în motorul DWM.

Managerul de ferestre desktop folosește Stratul de integrare media (MIL), un compozitor negestionat pe care îl partajează cu Windows Presentation Foundation , pentru a reprezenta ferestrele ca noduri de compoziție în arborele de compoziție . Arborele de compoziție reprezintă desktopul și toate ferestrele plasate pe acesta, care sunt apoi redate de MIL din spatele scenei în față. [9] Deoarece toate ferestrele contribuie la imaginea finală, culoarea pixelului rezultat poate fi determinată de mai multe ferestre. Acesta este folosit pentru a implementa efecte precum transparența per pixel. DWM vă permite să apelați shadere personalizate pentru a controla utilizarea pixelilor din mai multe aplicații pentru a crea un pixel randat. DWM include programe Pixel Shader 2.0 încorporate care calculează culoarea unui pixel dintr-o fereastră prin medierea culorii pixelului determinată de fereastra din spatele acesteia și de pixelii învecinați. Aceste shadere sunt folosite de DWM pentru a obține un efect de estompare pe marginile ferestrelor controlate DWM și, opțional, pentru zonele în care este solicitat de aplicație. [patru]

Deoarece MIL oferă un sistem grafic care păstrează modul prin memorarea în cache a arborilor de compoziție, munca de redesenare și actualizare a ecranului atunci când ferestrele sunt mutate este realizată de DWM și MIL, eliberând aplicația de responsabilitate. Datele de fundal se află deja în arborele de compoziție și în bufferele în afara ecranului și sunt utilizate direct pentru a reda fundalul. În sistemele de operare Windows anterioare Vista, aplicațiile de fundal trebuiau să solicite redarea prin trimiterea unui fișier WM_PAINT. [7] DWM folosește grafică cu tampon dublu pentru a preveni pâlpâirea și ruperea la mișcarea ferestrelor. [4] Motorul de layout folosește optimizări precum culling pentru a îmbunătăți performanța și, de asemenea, nu redesenează zonele care nu s-au schimbat. [9] Deoarece compozitorul acceptă mai multe monitoare, DWM acceptă și acest lucru.

Când rulează aplicații pe ecran complet, cum ar fi jocuri, DWM nu realizează aspectul ferestrei și, prin urmare, performanța nu va fi afectată semnificativ.

În Windows 8 și Windows Server 2012 , DWM este întotdeauna în uz și nu poate fi dezactivat din cauza implementării noului „ecran de pornire”. Deoarece procesul DWM este de obicei necesar să ruleze continuu în Windows 8, utilizatorii care întâmpină probleme cu procesul văd o scădere a utilizării memoriei după o repornire a sistemului. Acesta este adesea primul pas dintr-o listă lungă de sarcini de depanare care vă pot ajuta. Este posibil să împiedicați temporar repornirea DWM în Windows 8, ceea ce va face ca desktopul să devină negru, bara de activități să devină gri și să rupă ecranul Start/aplicațiile moderne, dar aplicațiile desktop vor continua să funcționeze și să se afișeze la fel ca Windows 7 și Windows Vista Basic. O temă bazată pe un singur buffer de redare utilizat în XP[ ce? ] . De asemenea, folosesc bara de titlu centrată Windows 8, vizibilă în Windows PE . Pornirea Windows fără DWM nu va funcționa, deoarece ecranul de blocare necesită DWM, deci se poate face doar din mers și nu are un scop practic. Începând cu Windows 10, dezactivarea DWM în acest fel va rupe întregul motor de aspect, chiar și aplicațiile desktop tradiționale, datorită implementărilor Universal App în bara de activități și noul meniu de pornire. Spre deosebire de predecesorii săi, Windows 8 acceptă adaptoare de afișare de bază prin platforma Windows Advanced Rasterization Platform (WARP), care utilizează software și randarea CPU pentru a reda interfața, mai degrabă decât placa grafică. Acest lucru permite DWM să funcționeze fără drivere compatibile, dar nu la același nivel de performanță ca și cu o placă grafică obișnuită. DWM în Windows 8 adaugă și suport pentru 3D stereoscopic . [zece]

Redirecționare

Pentru metodele de randare care nu acceptă DWM, ieșirea trebuie redirecționată către bufferele DWM. Pe Windows, puteți utiliza GDI sau DirectX pentru randarea . Pentru ca aceste două să funcționeze cu DWM, sunt furnizate metode de redirecționare pentru ambele.

Cu GDI, care este cea mai folosită tehnică de redare a interfeței de utilizare în Microsoft Windows , fiecare fereastră de aplicație este notificată când apare pe ecran sau o parte din ea, iar sarcina aplicației este să se redea singură. Fără DWM, redarea rasterizează interfața cu utilizatorul într-un buffer din memoria video, de unde este redată pe ecran. În DWM, apelurile GDI sunt redirecționate pentru a utiliza Canonical Display Driver (cdd.dll), care este un motor de randare software. [11] Un buffer egal cu dimensiunea ferestrei este alocat în memoria sistemului și CDD. DLL-ul iese în acest buffer, nu în memoria video. Un alt buffer este alocat în memoria video pentru a reprezenta suprafața DirectX, care este folosită ca textură pentru grilele ferestrelor. Memoria tampon de sistem este convertită la o suprafață DirectX separat și sincronizată. Această soluție este necesară deoarece GDI nu poate scoate direct în format de pixeli DirectX. Suprafața este citită de compozitor și legată de desktop în memoria video. Scrierea ieșirii GDI în memoria sistemului nu este accelerată hardware și nici conversia la o suprafață DirectX. Când o fereastră GDI este minimizată, invizibilă sau vizibilă pe același monitor ca o aplicație DirectX pe ecran complet, din cauza unei limitări GDI, tamponul bitmap GDI nu mai este acceptat de aplicație atunci când solicită un context de dispozitiv în timpul desenării sau actualizării ( asta se poate întâmpla uneori). văzut atunci când o operațiune GDI care copie de la o fereastră la alta scoate zone negre sau goale în loc de conținutul așteptat al ferestrei). Deci DWM folosește ultimul bitmap afișat în buffer înainte ca aplicația să fie minimizată. [12]

Începând cu Windows 7, Canonical Display Driver nu mai gestionează o copie a memoriei de sistem atunci când este prezent un driver video compatibil WDDM 1.1 / DXGI 1.1.

Pentru aplicațiile care utilizează DirectX pentru a scrie pe o suprafață 3D, implementarea DirectX în Windows Vista utilizează WDDM pentru a partaja suprafața cu DWM. DWM utilizează apoi direct suprafața și o mapează pe grila ferestrei. Pentru aplicațiile Windows Presentation Foundation (WPF) (care sunt aplicații DirectX), compozitorul gestionează astfel de suprafețe partajate, care sunt apoi combinate în desktopul final. [12] Aplicațiile pot combina orice tehnică de randare în mai multe ferestre copil, cu excepția cazului în care GDI și DirectX sunt folosite pentru a reda aceeași fereastră. În acest caz, ordonarea între redarea DirectX și GDI nu poate fi garantată și, ca atare, nu se poate garanta că bitmap-ul GDI din memoria sistemului a fost mapat la suprafața memoriei video. Aceasta înseamnă că compoziția finală nu poate conține elemente GDI redate. Pentru a preveni acest lucru, DWM este dezactivat temporar în timp ce rulează o aplicație care combină GDI și DirectX în aceeași fereastră.

Cerințe de sistem

Pe Windows Vista, DWM necesită hardware fizic sau virtual compatibil: [13]

În Windows 7, Desktop Window Manager a fost reproiectat pentru a utiliza Direct3D 10.1, dar cerințele hardware rămân aceleași ca în Windows Vista; Hardware-ul Direct3D 9 este suportat de stratul „ 10 Level 9 ” introdus în timpul rulării Direct3D 11 . Windows 8 are aceleași cerințe ca Windows 7, dar poate folosi și redarea software dacă nu aveți hardware video compatibil. [zece]

Software-ul de virtualizare hardware care emulează hardware - ul necesar pentru DWM include VirtualBox 4.1 și versiunile ulterioare , VMware Fusion 3.0 și versiunile ulterioare și VMware Workstation 7.0 și versiunile ulterioare. În plus, Windows Virtual PC vă permite să vă conectați utilizând protocolul Remote Desktop .

Vezi și

Note

  1. 1 2 Eroare la nota de subsol ? : Etichetă nevalidă <ref>; DeskExpfără text pentru note de subsol
  2. Deland Han.  Cum să activați caracteristicile pentru experiența utilizatorului Windows Vista pe un computer care rulează Windows Server 2008  ? . Baza de cunoștințe Microsoft . Preluat la 27 martie 2022. Arhivat din original la 6 aprilie 2012.
  3. Inginerie Windows 7 | Microsoft docs . Consultat la 16 decembrie 2021. Arhivat din original la 23 aprilie 2010.
  4. 1 2 3 Greg Schechter. Utilizarea de către DWM a DirectX, GPU și accelerarea hardware . Blogul lui Greg Schechter . bloguri MSDN. Consultat la 14 octombrie 2007. Arhivat din original la 19 ianuarie 2010.
  5. Greg Schechter. Răspuns la comentariile de la „Utilizarea de către DWM a DirectX, GPU și accelerarea hardware” . Blogul lui Greg Schechter . bloguri MSDN. Consultat la 20 aprilie 2008. Arhivat din original pe 3 noiembrie 2009.
  6. Chris Jackson. Desktop Window Manager rulează numai pe desktopul principal . Consonanța semantică a lui Chris Jackson . bloguri MSDN. Consultat la 14 octombrie 2007. Arhivat din original pe 6 martie 2010.
  7. 12 Greg Schechter . Sub capota Desktop Window Manager . Blogul lui Greg Schechter . bloguri MSDN. Consultat la 14 octombrie 2007. Arhivat din original pe 20 mai 2010.
  8. DWM Thumbnail Overview - Win32 apps | Microsoft docs . Preluat la 16 decembrie 2021. Arhivat din original la 5 septembrie 2008.
  9. 12 Greg Schechter . Cum sunt utilizate conceptele și tehnologia WPF de bază în DWM . Blogul lui Greg Schechter . bloguri MSDN. Consultat la 14 octombrie 2007. Arhivat din original la 23 ianuarie 2010.
  10. 1 2 Desktop Window Manager este întotdeauna activat . Cartea de bucate de compatibilitate Windows 8 și Windows Server 2012 . MSDN. Preluat la 4 septembrie 2012. Arhivat din original la 28 iulie 2012.
  11. Compararea Direct2D și GDI - DirectX Developer Blog . Preluat la 19 august 2014. Arhivat din original la 8 aprilie 2014.
  12. 12 Greg Schechter . Redirecționarea aplicațiilor GDI, DirectX și WPF . Consultat la 14 octombrie 2007. Arhivat din original pe 5 martie 2010.
  13. Cerințe de sistem pentru Windows Vista . Microsoft (13 noiembrie 2007). Consultat la 11 februarie 2009. Arhivat din original pe 12 februarie 2015.