Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Архитектура [ править ]

Диспетчер окон рабочего стола - это диспетчер окон композитинга . Это означает, что у каждой программы есть буфер, в который она записывает данные; 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 [2] и при этом не нуждается в хранении копии буфера в системной оперативной памяти, чтобы ЦП мог писать в нее.

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

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

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

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

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

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

Во время полноэкранных приложений, таких как игры, 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 Advanced Rasterization Platform (WARP), которая использует программный рендеринги ЦП для рендеринга интерфейса, а не видеокарты. Это позволяет DWM работать без совместимых драйверов, но не с таким же уровнем производительности, как с обычной видеокартой. DWM в Windows 8 также добавляет поддержку стереоскопического 3D . [9]

Перенаправление [ править ]

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

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

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

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

Требования к оборудованию [ править ]

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

  • GPU , который поддерживает ОС Windows Display Driver Model (WDDM)
  • Поддержка Direct3D 9
  • Поддержка Pixel Shader 2.0
  • Поддержка 32 бит на пиксель
  • Проходит приемочный тест Windows Aero в Windows Driver Kit (WDK).

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

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

См. Также [ править ]

  • Compiz
  • среда рабочего стола

Ссылки [ править ]

  1. ^ «Как включить возможности взаимодействия с пользователем Windows Vista на компьютере под управлением Windows Server 2008 (MSKB947036)» . База знаний . Microsoft. 15 января 2008 . Проверено 21 апреля 2008 .
  2. ^ http://blogs.msdn.com/e7/archive/2009/04/25/engineering-windows-7-for-graphics-performance.aspx
  3. ^ a b c Грег Шехтер. «Использование DWM DirectX, GPU и аппаратного ускорения» . Блог Грега Шехтера . Блоги MSDN . Проверено 14 октября 2007 .
  4. ^ Грег Шехтер. «Ответ на комментарии от« Использование DWM DirectX, GPU и аппаратного ускорения » » . Блог Грега Шехтера . Блоги MSDN . Проверено 20 апреля 2008 .
  5. ^ Крис Джексон. «Диспетчер окон рабочего стола работает только на основном рабочем столе» . Семантическое созвучие Криса Джексона . Блоги MSDN . Проверено 14 октября 2007 .
  6. ^ a b c Грег Шехтер. «Под капотом Desktop Window Manager» . Блог Грега Шехтера . Блоги MSDN . Проверено 14 октября 2007 .
  7. ^ [1]
  8. ^ a b c Грег Шехтер. «Как основные концепции и технологии WPF используются в DWM» . Блог Грега Шехтера . Блоги MSDN . Проверено 14 октября 2007 .
  9. ^ a b «Диспетчер окон рабочего стола всегда включен» . Руководство по совместимости с Windows 8 и Windows Server 2012 . MSDN . Проверено 4 сентября 2012 года .
  10. ^ «Сравнение Direct2D и GDI - блог разработчиков DirectX» . Архивировано из оригинала на 2014-04-08 . Проверено 19 августа 2014 .
  11. ^ a b c Грег Шехтер. «Перенаправление приложений GDI, DirectX и WPF» . Архивировано из оригинала на 2010-03-05 . Проверено 14 октября 2007 .
  12. ^ «Системные требования для Windows Vista» . Microsoft . 2007-11-13 . Проверено 11 февраля 2009 .

Внешние ссылки [ править ]

  • Диспетчер окон рабочего стола
  • API в диспетчере окон рабочего стола
  • Использование API DWM
  • Что такое DWM.exe, это вирус?
  • dwm.exe и что это такое?