Диспетчер окон рабочего стола

редактировать
Диспетчер окон рабочего стола
Разработчик ( s) Microsoft
Операционная система Microsoft Windows
Имя службыUxSms

Desktop Window Manager (DWM, ранее Desktop Compositing Engine или DCE ) - это оконный менеджер в Windows Vista, Windows 7, Windows 8 и Windows 10, которая позволяет использовать аппаратное ускорение для отображения графического пользовательского интерфейса Windows.

Первоначально он был создан для того, чтобы задействовать части нового пользовательского интерфейса «Windows Aero », который допускал такие эффекты, как прозрачность, переключение 3D-окон и многое другое. Он также включен в Windows Server 2008, но требует установки функции «Desktop Experience» и совместимых графических драйверов.

Содержание
  • 1 Архитектура
  • 2 Перенаправление
  • 3 Оборудование требования
  • 4 См. также
  • 5 Ссылки
  • 6 Внешние ссылки
Архитектура

Диспетчер окон рабочего стола - это диспетчер окон компоновки. Это означает, что у каждой программы есть буфер, в который она записывает данные; Затем DWM объединяет буфер каждой программы в окончательное изображение. Для сравнения: оконный менеджер стекирования в Windows XP и ранее (а также в Windows Vista и Windows 7 с отключенной Windows Aero) содержит единственный буфер дисплея, в который записываются все программы.

DWM работает по-разному в зависимости от операционной системы (Windows 7 или Windows Vista) и от версии используемых графических драйверов (WDDM 1.0 или 1.1). В Windows 7 и с драйверами WDDM 1.1 DWM только записывает буфер программы в видеопамять, даже если это программа с интерфейсом графического устройства (GDI). Это связано с тем, что Windows 7 поддерживает (ограниченное) аппаратное ускорение для GDI и при этом не нуждается в хранении копии буфера в системной оперативной памяти, чтобы ЦП мог писать в нее.

Поскольку композитор имеет доступ к графике всех приложений, он легко позволяет создавать визуальные эффекты, объединяющие визуальные элементы из нескольких приложений, например прозрачность. DWM использует DirectX для выполнения функции компоновки и рендеринга в графическом процессоре, освобождая CPU от задачи управления рендерингом из внеэкранных буферов на дисплей. Однако это не влияет на отрисовку приложений в внеэкранных буферах - в зависимости от используемых для этого технологий, это все еще может быть связано с процессором. Методы визуализации, не зависящие от DWM, такие как GDI, перенаправляются в буферы путем визуализации пользовательского интерфейса (UI) как растровые изображения. Технологии визуализации с поддержкой DWM, такие как WPF, напрямую делают внутренние структуры данных доступными в DWM-совместимом формате. Затем содержимое окна в буферах преобразуется в текстуры DirectX.

Сам рабочий стол представляет собой полноэкранную поверхность Direct3D с окнами, представленными в виде сетки, состоящей из двух смежных (и взаимно инвертированных) треугольников, которые преобразуются в двухмерный прямоугольник.. Текстура, представляющая хром пользовательского интерфейса, затем отображается на эти прямоугольники. Оконные переходы реализованы как преобразования сеток с использованием программ шейдера . В Windows Vista переходы ограничены набором встроенных шейдеров, реализующих преобразования. Грег Шехтер, разработчик в Microsoft, предположил, что это может быть открыто для разработчиков и пользователей, чтобы включить свои собственные эффекты в будущую версию. DWM отображает только основной объект рабочего стола как трехмерную поверхность; другие объекты рабочего стола, включая виртуальные рабочие столы, а также защищенный рабочий стол, используемый User Account Control, не являются.

Aero Flip демонстрирует несколько функций DWM: 3D-преобразование 2D-плоскостей, масштабирование и преобразование плоскостей в другое положение, встраивание динамических представлений одного приложения в другое и использование пользовательских программ шейдеров. Функция Aero Flip используется в Windows 7.

Поскольку все приложения отображаются во внешнем экранный буфер, они также могут быть прочитаны из буфера, встроенного в другие приложения. Поскольку внеэкранный буфер постоянно обновляется приложением, встроенная визуализация будет динамическим представлением окна приложения, а не статической визуализацией. Вот как работает предварительный просмотр миниатюр и Windows Flip в Windows Vista и Windows 7. DWM предоставляет общедоступный API, который позволяет приложениям получать доступ к этим представлениям эскизов. Размер эскиза не фиксирован; приложения могут запрашивать эскизы любого размера - меньше исходного окна, того же размера или даже больше - и DWM будет правильно масштабировать их перед возвратом. Aero Flip не использует общедоступные API-интерфейсы миниатюр, поскольку они не позволяют напрямую обращаться к текстурам Direct3D. Вместо этого Aero Flip реализован непосредственно в движке DWM.

Диспетчер окон рабочего стола использует Media Integration Layer (MIL), неуправляемый композитор, который он разделяет с Windows Presentation Foundation, для представления окон как узлов композиции в составное дерево. Дерево композиции представляет рабочий стол и все размещенные на нем окна, которые затем визуализируются MIL от задней части сцены к передней. Поскольку все окна вносят вклад в окончательное изображение, цвет результирующего пикселя может определяться более чем одним окном. Это используется для реализации таких эффектов, как попиксельная прозрачность. DWM позволяет вызывать настраиваемые шейдеры для управления тем, как пиксели из нескольких приложений используются для создания отображаемого пикселя. DWM включает встроенные программы Pixel Shader 2.0, которые вычисляют цвет пикселя в окне путем усреднения цвета пикселя, определяемого окном за ним и соседними пикселями. Эти шейдеры используются DWM для достижения эффекта размытия границ окон окон, управляемых DWM, и, необязательно, для областей, где это запрашивается приложением.

Поскольку MIL обеспечивает сохраненный режим графическая система путем кэширования композиционных деревьев, работа по перерисовке и обновлению экрана при перемещении окон выполняется DWM и MIL, освобождая приложение от ответственности. Фоновые данные уже находятся в дереве композиции и внеэкранных буферах и напрямую используются для визуализации фона. В ОС Windows до Vista фоновые приложения приходилось запрашивать для повторного рендеринга, отправляя им сообщение WM_PAINT. DWM использует графику с двойной буферизацией для предотвращения мерцания и разрывов при перемещении окон. Механизм компоновки использует такие оптимизации, как отсечение для повышения производительности, а также не перерисовывает области, которые не изменились. Поскольку композитор поддерживает несколько мониторов, DWM также поддерживает это.

Во время полноэкранных приложений, таких как игры, DWM не выполняет композитинг окон, и поэтому производительность существенно не снижается.

В Windows 8 и Windows Server 2012 DWM используется постоянно и не может быть отключен из-за внедрения новой «возможности стартового экрана». Поскольку процесс DWM обычно требуется для постоянного запуска в Windows 8, пользователи, испытывающие проблемы с процессом, видят уменьшение использования памяти после перезагрузки системы. Часто это первый шаг в длинном списке задач по устранению неполадок, которые могут помочь. Можно запретить временный перезапуск DWM в Windows 8, в результате чего рабочий стол становится черным, панель задач становится серой и нарушает работу начального экрана / современных приложений, но настольные приложения будут продолжать работать и выглядеть так же, как Windows 7 и Vista Basic тема, основанная на однобуферном рендерере, используемом XP. Они также используют центральную строку заголовка Windows 8, видимую в среде предустановки Windows. Запуск Windows без DWM не будет работать, потому что для экрана блокировки требуется DWM, поэтому это можно сделать только на лету и не имеет каких-либо практических целей. Начиная с Windows 10, отключение DWM таким образом приведет к поломке всего движка композитинга, даже традиционных настольных приложений, из-за реализаций универсальных приложений на панели задач и нового меню «Пуск». В отличие от своих предшественников, Windows 8 поддерживает основные видеоадаптеры через Платформа расширенной растеризации Windows (WARP), которая использует программный рендеринг и ЦП для рендеринга интерфейса, а не видеокарты. Это позволяет DWM работать без совместимых драйверов, но не с таким же уровнем производительности, как с обычной видеокартой. DWM в Windows 8 также добавляет поддержку стереоскопического 3D.

перенаправления

Для методов рендеринга, не поддерживающих DWM, вывод должен быть перенаправлен в буферы DWM. В Windows для рендеринга можно использовать GDI или DirectX. Чтобы эти два работали с DWM, для обоих предусмотрены методы перенаправления.

С GDI, который является наиболее часто используемым методом визуализации пользовательского интерфейса в Microsoft Windows, каждое окно приложения уведомляется, когда оно или его часть появляется в поле зрения, и это задача приложения. представить себя. Без DWM рендеринг растрирует UI в буфере видеопамяти, откуда он рендерится на экран. В DWM вызовы GDI перенаправляются на использование Canonical Display Driver (cdd.dll), программного средства визуализации. Буфер, равный размеру окна, выделяется в системной памяти, и CDD.DLL выводит в этот буфер, а не в видеопамять. Другой буфер выделяется в видеопамяти для представления поверхности DirectX, которая используется в качестве текстуры для оконных сеток. Буфер системной памяти отдельно преобразуется в поверхность DirectX и синхронизируется. Этот обходной маршрут необходим, потому что GDI не может выводить напрямую в формате пикселей DirectX. Поверхность считывается композитором и накладывается на рабочий стол в видеопамяти. Запись вывода GDI в системную память не ускоряется аппаратно, равно как и преобразование в поверхность DirectX. Когда окно GDI свернуто, невидимо или видно на том же мониторе, что и полноэкранное приложение DirectX, из-за ограничения GDI буфер растрового изображения GDI больше не принимается приложением при запросе контекста устройства во время рисования или обновления (иногда это может быть замеченным, когда операция GDI, копирующая из одного окна в другое, выводит черные или пустые области вместо ожидаемого содержимого окна). Таким образом, DWM использует последнее растровое изображение, отображаемое в буфер перед свертыванием приложения.

Начиная с Windows 7, Canonical Display Driver больше не выполняет рендеринг в копию системной памяти, если совместимый с WDDM 1.1 / DXGI 1.1 видеодрайвер подарок.

Для приложений, использующих DirectX для записи на трехмерную поверхность, реализация DirectX в Windows Vista использует WDDM для совместного использования поверхности с DWM. Затем DWM напрямую использует поверхность и сопоставляет ее с сетками окон. Для приложений Windows Presentation Foundation (WPF) (которые являются приложениями DirectX) композитор выполняет рендеринг на такие общие поверхности, которые затем объединяются в окончательный рабочий стол. Приложения могут смешивать любой метод рендеринга в нескольких дочерних окнах, если и GDI, и DirectX не используются для рендеринга одного и того же окна. В этом случае порядок между отрисовкой DirectX и GDI не может быть гарантирован, и поэтому нельзя гарантировать, что растровое изображение GDI из системной памяти было переведено на поверхность видеопамяти. Это означает, что окончательная композиция может не содержать элементов, отрисованных с помощью GDI. Чтобы предотвратить это, DWM временно отключается, пока работает приложение, которое смешивает GDI и DirectX в одном окне.

Требования к оборудованию

В Windows Vista для DWM требуется совместимое физическое или виртуальное оборудование:

В Windows 7 диспетчер окон рабочего стола был переработан для использования Direct3D 10.1, но требования к оборудованию остались такими же, как в Windows Vista; Аппаратное обеспечение Direct3D 9 поддерживается уровнем «10, уровень 9 », представленным в среде выполнения Direct3D 11. Windows 8 имеет те же требования, что и 7, но она также может использовать программный рендеринг при отсутствии совместимого видеооборудования.

Аппаратная виртуализация Программное обеспечение, имитирующее оборудование, необходимое для DWM, включает VirtualBox 4.1 и новее, VMware Fusion 3.0 и новее и VMware Workstation 7.0 и новее. Кроме того, Windows Virtual PC позволяет компоновку с использованием протокола удаленного рабочего стола.

См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-17 14:55:27
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте