Menedżer okien pulpitu — Desktop Window Manager

Menedżer okien pulpitu
Deweloper(zy) Microsoft
Pierwsze wydanie 30 listopada 2006 ; 14 lat temu ( 2006-11-30 )
System operacyjny Microsoft Windows
Nazwa serwisu UxSms

Desktop Window Manager ( DWM , wcześniej Desktop Compositing Engine lub DCE ) to menedżer okien w systemach Windows Vista , Windows 7 , Windows 8 , Windows 10 i Windows 11, który umożliwia korzystanie z akceleracji sprzętowej w celu renderowania graficznego interfejsu użytkownika systemu Windows.

Pierwotnie został stworzony, aby umożliwić korzystanie z części nowego doświadczenia użytkownika „ Windows Aero ”, które pozwalało na efekty takie jak przezroczystość, przełączanie okien 3D i inne. Jest również dołączony do systemu Windows Server 2008 , ale wymaga zainstalowania funkcji „Desktop Experience” i zgodnych sterowników graficznych.

Architektura

Menedżer okien pulpitu jest menedżerem okien kompozycji . Oznacza to, że każdy program ma bufor, w którym zapisuje dane; DWM następnie kompozytów buforowego programu w końcowym obrazie. Dla porównania, menedżer okien stosów w systemie Windows XP i wcześniejszych (a także Windows Vista i Windows 7 z wyłączonym Windows Aero) zawiera pojedynczy bufor wyświetlania, do którego zapisują wszystkie programy.

DWM działa na różne sposoby w zależności od systemu operacyjnego (Windows 7 lub Windows Vista) i wersji używanych sterowników graficznych ( WDDM 1.0 lub 1.1). W systemie Windows 7 i ze sterownikami WDDM 1.1 DWM zapisuje tylko bufor programu do pamięci RAM wideo, nawet jeśli jest to program interfejsu urządzenia graficznego (GDI). Dzieje się tak, ponieważ system Windows 7 obsługuje (ograniczoną) akcelerację sprzętową dla GDI, a tym samym nie musi przechowywać kopii bufora w systemowej pamięci RAM, aby procesor mógł do niego zapisywać.

Ponieważ kompozytor ma dostęp do grafiki wszystkich aplikacji, z łatwością umożliwia tworzenie efektów wizualnych, które łączą ze sobą wizualizacje z wielu aplikacji, takie jak przezroczystość. DWM używa DirectX do wykonywania funkcji komponowania i renderowania na GPU, uwalniając procesor od zadania zarządzania renderowaniem od buforów poza ekranem do wyświetlacza. Nie ma to jednak wpływu na malowanie aplikacji w buforach poza ekranem — w zależności od zastosowanych technologii może to nadal być związane z procesorem. Techniki renderowania niezależne od DWM, takie jak GDI, są przekierowywane do buforów przez renderowanie interfejsu użytkownika (UI) jako bitmap . Technologie renderowania zgodne z DWM, takie jak WPF, bezpośrednio udostępniają wewnętrzne struktury danych w formacie zgodnym z DWM. Zawartość okien w buforach jest następnie konwertowana na tekstury DirectX.

Sam pulpit jest pełnoekranową powierzchnią Direct3D , a okna są reprezentowane jako siatka składająca się z dwóch sąsiednich (i wzajemnie odwróconych) trójkątów, które są przekształcane w prostokąt 2D. Tekstura reprezentująca chromowanie interfejsu użytkownika jest następnie mapowana na te prostokąty. Przejścia okien są implementowane jako przekształcenia siatek za pomocą programów cieniujących . W systemie Windows Vista przejścia są ograniczone do zestawu wbudowanych modułów cieniujących, które implementują przekształcenia. Greg Schechter, programista w firmie Microsoft, zasugerował, że może to zostać udostępnione programistom i użytkownikom, aby mogli podłączyć własne efekty w przyszłej wersji. DWM mapuje tylko główny obiekt pulpitu jako powierzchnię 3D; inne obiekty pulpitu, w tym pulpity wirtualne, a także bezpieczny pulpit używany przez Kontrolę konta użytkownika, nie są.

Aero Flip demonstruje wiele funkcji DWM: transformację 3D płaszczyzn 2D, skalowanie i translację płaszczyzn do innej pozycji, osadzanie dynamicznych widoków jednej aplikacji w innej oraz wykorzystanie niestandardowych programów cieniowania .
Funkcja Aero Flip używana w systemie Windows 7 .

Ponieważ wszystkie aplikacje renderują się do bufora poza ekranem, można je również odczytać z bufora osadzonego w innych aplikacjach. Ponieważ bufor poza ekranem jest stale aktualizowany przez aplikację, osadzone renderowanie będzie dynamiczną reprezentacją okna aplikacji, a nie renderowaniem statycznym. W ten sposób podgląd miniatur na żywo i funkcja Windows Flip działają w systemach Windows Vista i Windows 7 . DWM udostępnia publiczny interfejs API, który umożliwia aplikacjom dostęp do tych reprezentacji miniatur. Rozmiar miniatury nie jest stały; aplikacje mogą żądać miniatur w dowolnym rozmiarze — mniejszym niż oryginalne okno, w tym samym rozmiarze lub nawet większym — a DWM odpowiednio je przeskaluje przed zwróceniem. Aero Flip nie korzysta z publicznych interfejsów API miniatur, ponieważ nie pozwalają one na bezpośredni dostęp do tekstur Direct3D. Zamiast tego Aero Flip jest zaimplementowany bezpośrednio w silniku DWM.

Desktop Window Manager używa Integration Mediów warstwę (MIL), z niezarządzanej compositor którą dzieli z Windows Presentation Foundation , do reprezentowania Windows jako węzły układowych w drzewie składu . Drzewo kompozycji reprezentuje pulpit i wszystkie hostowane w nim okna, które są następnie renderowane przez MIL od tyłu sceny do przodu. Ponieważ wszystkie okna składają się na końcowy obraz, o kolorze wynikowego piksela może decydować więcej niż jedno okno. Służy do implementacji efektów, takich jak przezroczystość na piksel. DWM umożliwia wywoływanie niestandardowych shaderów w celu kontrolowania sposobu, w jaki piksele z wielu aplikacji są używane do tworzenia wyświetlanego piksela. DWM zawiera wbudowane programy Pixel Shader 2.0, które obliczają kolor piksela w oknie, uśredniając kolor piksela określony przez okno za nim i sąsiednie piksele. Te shadery są używane przez DWM w celu uzyskania efektu rozmycia w obramowaniach okien zarządzanych przez DWM i opcjonalnie w obszarach, w których jest to wymagane przez aplikację.

Ponieważ MIL zapewnia system graficzny w trybie zachowanym , buforując drzewa kompozycji, zadanie ponownego malowania i odświeżania ekranu podczas przenoszenia okien jest obsługiwane przez DWM i MIL, zwalniając aplikację z odpowiedzialności. Dane tła znajdują się już w drzewie kompozycji i buforach pozaekranowych i są bezpośrednio używane do renderowania tła. W systemach operacyjnych wcześniejszych niż Vista Windows aplikacje działające w tle musiały zostać poproszone o ponowne renderowanie poprzez wysłanie im WM_PAINTwiadomości. DWM używa podwójnie buforowanej grafiki, aby zapobiec migotaniu i rozrywaniu podczas przesuwania okien. Silnik komponowania wykorzystuje optymalizacje, takie jak culling, aby poprawić wydajność, a także nie przerysowywać obszarów, które nie uległy zmianie. Ponieważ kompozytor obsługuje wiele monitorów, DWM natywnie również to obsługuje.

Podczas aplikacji pełnoekranowych, takich jak gry, DWM nie wykonuje komponowania okien, a zatem wydajność nie ulegnie znacznemu zmniejszeniu.

W systemach Windows 8 i Windows Server 2012 DWM jest używany przez cały czas i nie można go wyłączyć ze względu na zaimplementowane nowe „środowisko ekranu startowego”. Ponieważ proces DWM jest zwykle wymagany do działania przez cały czas w systemie Windows 8, użytkownicy, którzy mają problem z tym procesem, widzą zmniejszenie zużycia pamięci po ponownym uruchomieniu systemu. Jest to często pierwszy krok na długiej liście zadań rozwiązywania problemów, które mogą pomóc. Możliwe jest zablokowanie tymczasowego ponownego uruchamiania DWM w systemie Windows 8, co powoduje, że pulpit staje się czarny, pasek zadań szary i psuje ekran startowy/nowoczesne aplikacje, ale aplikacje komputerowe będą nadal działać i będą wyglądać tak samo jak Windows 7 i Vista Basic. motyw, oparty na rendererze pojedynczego bufora używanym przez XP. Używają również wyśrodkowanego paska tytułu systemu Windows 8, widocznego w środowisku Windows PreInstallation Environment . Uruchamianie systemu Windows bez DWM nie zadziała, ponieważ ekran blokady wymaga DWM, więc można to zrobić tylko w locie i nie ma żadnych praktycznych celów. Począwszy od Windows 10, wyłączenie DWM w taki sposób spowoduje awarię całego silnika komponowania, nawet tradycyjnych aplikacji desktopowych, ze względu na implementacje Universal App na pasku zadań i nowe menu startowe. W przeciwieństwie do swoich poprzedników, Windows 8 obsługuje podstawowe karty graficzne przez Windows Advanced Rasterization Platform (WARP), która wykorzystuje renderowanie programowe i procesor do renderowania interfejsu, a nie karty graficznej. Dzięki temu DWM może działać bez zgodnych sterowników, ale nie na tym samym poziomie wydajności, co w przypadku zwykłej karty graficznej. DWM w systemie Windows 8 dodaje również obsługę stereoskopowego 3D .

Przekierowanie

W przypadku technik renderowania, które nie uwzględniają DWM, dane wyjściowe muszą być przekierowane do buforów DWM. W systemie Windows do renderowania można użyć GDI lub DirectX . Aby te dwa elementy działały z DWM, zapewniono techniki przekierowania dla obu.

Dzięki GDI, która jest najczęściej używaną techniką renderowania interfejsu użytkownika w systemie Microsoft Windows , każde okno aplikacji jest powiadamiane, gdy pojawia się ono lub jego część, a zadaniem aplikacji jest samo renderowanie. Bez DWM renderowanie rasteryzuje interfejs użytkownika w buforze w pamięci wideo, skąd jest renderowany na ekran. W ramach DWM wywołania GDI są przekierowywane do sterownika Canonical Display Driver (cdd.dll), renderera oprogramowania. Bufor równy rozmiarowi okna jest przydzielany w pamięci systemowej i wyjścia CDD.DLL do tego bufora, a nie do pamięci wideo. Inny bufor jest przydzielany w pamięci wideo do reprezentowania powierzchni DirectX, która jest używana jako tekstura dla siatek okien. Bufor pamięci systemowej jest oddzielnie konwertowany na powierzchnię DirectX i synchronizowany. Ta trasa okrężna jest wymagana, ponieważ GDI nie może wyprowadzać danych bezpośrednio w formacie pikseli DirectX. Powierzchnia jest odczytywana przez kompozytora i łączona z pulpitem w pamięci wideo. Zapisywanie danych wyjściowych GDI do pamięci systemowej nie jest przyspieszane sprzętowo, ani nie jest konwersja do powierzchni DirectX. Gdy okno GDI jest zminimalizowane, niewidoczne lub widoczne na tym samym monitorze co pełnoekranowa aplikacja DirectX, przez ograniczenie GDI, bufor mapy bitowej GDI nie jest już odbierany przez aplikację podczas żądania kontekstu urządzenia podczas malowania lub aktualizacji (czasami może to widoczne, gdy operacja GDI kopiująca z jednego okna do drugiego wyprowadza czarne lub puste regiony zamiast oczekiwanej zawartości okna). W ten sposób DWM używa ostatniej bitmapy renderowanej do bufora przed zminimalizowaniem aplikacji.

Począwszy od systemu Windows 7, Canonical Display Driver nie jest już renderowany do kopii pamięci systemowej, gdy obecny jest sterownik wideo zgodny z WDDM 1.1/DXGI 1.1.

W przypadku aplikacji używających DirectX do zapisu na powierzchni 3D implementacja DirectX w systemie Windows Vista używa WDDM do współdzielenia powierzchni z DWM. DWM następnie używa powierzchni bezpośrednio i mapuje ją na siatki okienne. W przypadku aplikacji Windows Presentation Foundation (WPF) (które są aplikacjami DirectX) kompozytor renderuje do takich udostępnionych powierzchni, które są następnie łączone w końcowy pulpit. Aplikacje mogą mieszać obie techniki renderowania w wielu oknach podrzędnych, o ile zarówno GDI, jak i DirectX nie są używane do renderowania tego samego okna. W takim przypadku nie można zagwarantować kolejności między renderowaniem DirectX i GDI, a zatem nie można zagwarantować, że mapa bitowa GDI z pamięci systemowej została przetłumaczona na powierzchnię pamięci wideo. Oznacza to, że ostateczna kompozycja może nie zawierać elementów renderowanych przez GDI. Aby temu zapobiec, DWM jest tymczasowo wyłączane, dopóki działa aplikacja, która łączy GDI i DirectX w tym samym oknie.

Wymagania sprzętowe

W systemie Windows Vista DWM wymaga zgodnego sprzętu fizycznego lub wirtualnego:

W systemie Windows 7 Menedżer okien pulpitu został przerobiony tak, aby korzystał z Direct3D 10.1, ale wymagania sprzętowe pozostają takie same jak w systemie Windows Vista; Sprzęt Direct3D 9 jest obsługiwany przez warstwę „ 10 Level 9 ” wprowadzoną w środowisku wykonawczym Direct3D 11 . Windows 8 ma takie same wymagania jak 7, ale może również korzystać z renderowania programowego, gdy brakuje kompatybilnego sprzętu wideo.

Oprogramowanie do wirtualizacji sprzętu , które emuluje sprzęt wymagany do DWM, obejmuje VirtualBox 4.1 i nowsze, VMware Fusion 3.0 i nowsze oraz VMware Workstation 7.0 i nowsze. Ponadto Windows Virtual PC umożliwia komponowanie przy użyciu protokołu Remote Desktop Protocol .

Zobacz też

Bibliografia

Zewnętrzne linki