WDDM (Windows Display Driver Model)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 19:59, 23 марта 2018.
(перенаправлено с «Windows Display Driver Model»)

Windows Display Driver Model (WDDM, также WVDDM в эпоху Vista) — это архитектура графических драйверов для видеокарты под управлением Microsoft Windows, начиная с Windows Vista[1]. Она является заменой для архитектуры видеодрайверов Windows XP и нацелена на повышение производительности графики и новую функциональность[1].

WDDM предоставляет функциональность, необходимую для отображения рабочего стола и приложений с помощью диспетчера рабочего стола — диспетчера составных окон, работающего поверх Direct3D. Она также поддерживает интерфейсы новой инфраструктуры DXGI (DirectX Graphics Infrastructure), необходимые для основных операций создания и управления устройством. Спецификация WDDM требует видеокарту, поддерживающую по меньшей мере Direct3D 9, и должна реализовывать интерфейсы до Direct3D 9 для совместимости со старыми приложениями Direct3D; по желанию она может реализовывать интерфейсы для Direct3D 10/10.1 и выше.

Возможности, привнесённые моделью WDDM

Драйверы WDDM открывают новые функциональные области, которые не предоставлялись на унифицированной основе более ранними моделями графических драйверов:

Общие преимущества WDDM

Стабильность

В Windows XP драйверы дисплея, которые являются большими и сложными, могут быть основным источником нестабильности системы. Эти драйверы полностью исполняются в режиме ядра (т.е. глубоко в системном коде), и поэтому одна проблема в драйвере часто заставляет всю систему перезагружаться. Согласно данным анализа сбоев, собранным во время таймфрейма Windows XP, драйверы дисплея отвечают за 20% всех синих экранов. Таким образом получается ,что одной из основных целей Windows Vista стало сокращение таких сбоев и предоставление клиентам более надежного рабочего стола, а также снижение затрат на поддержку партнеров. Надежность еще важнее сейчас, так как есть основные функции, которые требуют, чтобы графический конвейер работал эффективно круглосуточно. Примером такой функции является новый диспетчер окон рабочего стола, который рисует экранные окна. Преимущества опыта стабильного рабочего стола, без ошибок перерисовки, безусловно, применимы ко всем клиентам, а не только к игрокам. На техническом уровне драйверы дисплея WDDM имеют два компонента: драйвер режима ядра (KMD), который очень оптимизирован, и драйвер пользовательского режима, который выполняет большинство интенсивных вычислений. С этой моделью большая часть кода выведена из режима ядра. То есть, кусок режима ядра теперь несет полную ответственность за функциональность более низкого уровня, а часть пользовательского режима использует более тяжелые функции, такие как облегчение перевода с более сложных API-интерфейсов API для непосредственного использования команд графического процессора при сохранении совместимости приложений. Это значительно снижает вероятность рокового синего экрана, и большинство проблем, связанных с графическим драйвером, приводят к худшему воздействию одного приложения. WDDM также обеспечивает отказоустойчивость по отношению к драйверам дисплея. Это позволяет Windows Vista обнаруживать зависание системы и снова перезапускать драйвер дисплея без необходимости перезагрузки системы. Кроме того, драйверы дисплея в Windows Vista были значительно упрощены, устраняя необходимость включения кода для поддержки различных интерфейсов драйверов устройств, внедренных на протяжении многих лет. Таким образом, Windows Vista реализует только один интерфейс, гарантируя, что все более старые драйверы распознаются и функционируют оптимально.

Представление

Когда запускается приложение, требующее использования графического процессора, управление удаляется из любых других приложений, которые в настоящее время используют графический процессор. Это происходит потому, что нет возможности совместно использовать GPU для нескольких приложений одновременно. В Windows Vista графический процессор используется для многих распространенных действий, таких как базовое управление окнами и рендеринг видео. Кроме того, с помощью Windows Presentation Foundation (часть платформы разработки .NET Framework 3.0) появились новые API-интерфейсы, которые позволяют разработчикам легко использовать графический процессор для предоставления неигровым приложениям богатых дружественных интерфейсов. Поскольку все эти приложения и функции зависят от GPU, многозадачность GPU имеет решающее значение. WDDM позволяет нескольким приложениям одновременно использовать GPU, реализуя следующие функции: Менеджер памяти GPU - разрешает распределение видеопамяти Графический планировщик графиков отображает различные приложения GPU в соответствии с их приоритетом.Благодаря этим технологиям приложениям больше не нужно уступать GPU, когда другое приложение требует запуска своих сервисов. Вместо этого графический процессор планируется более эффективно.

Безопасность

Безопасность представляет собой серьезную проблему на любой платформе, поддерживающей многозадачность. Защищенной ОС необходимо обеспечить, чтобы ресурсы, используемые одним приложением, изолированы от другого. Такая изоляция приложений является требованием для воспроизведения контента с защищенным HD-контентом и не только . WDDM через модель безопасности, встроенную в диспетчер памяти и планировщик графических процессоров, обеспечивает необходимую изоляцию. Текущие драйверы дисплея Windows XP не имеют таких возможностей и ограничены в типах HD-контента, который они могут воспроизводить.

Виртуализованная видеопамять

В контексте графики виртуализация означает, что отдельные процессы (в пользовательском пространстве) не могут видеть память соседних процессов даже путём вставки фальшивых команд в командный поток. Драйверы WDDM позволяют делать виртуализацию видеопамяти[2] и подстановку страниц видеопамяти в системную память. Если окажется, что доступной видеопамяти недостаточно для хранения всех видеоданных и текстур, данные, не используемые в текущий момент, перемещаются в системную память или на диск. Если вытесненные данные становятся нужны, они загружаются обратно. Виртуализация была в некоторой степени возможна в драйверах, рассчитанных на предыдущие модели построения (такие, как модель драйверов Windows XP), но это была целиком зона ответственности драйвера, а не системы.

Диспетчеризация

Исполняемый модуль управляет диспетчеризацией (планированием) конкурирующих между собой графических контекстов.[3] Каждый список команд помещается в очередь для исполнения графическим процессором, и может быть выгружен исполняемым модулем, если появляется более важная задача и если выполнение списка ещё не началось. Такое поведение отличается от потоков центрального процессора, где задача не может быть прервана и поэтому занять больше времени, чем нужно и заставить компьютер медленнее отвечать на запросы. Гибридный алгоритм планирования между родными и лёгкими потоками со взаимодействием потоков даёт бесшовный параллелизм. Важно заметить, что планирование — это не новая идея, но ранее была сферой ответственности разработчиков драйверов. WDDM пытается унифицировать опыт разных разработчиков, управляя выполнением задач графического процессора.

Межпроцессное совместное использование поверхностей Direct3D

Графическая поверхность Direct3D — это область памяти, содержащая информацию о текстурированных ячейках, используемых для просчёта двумерной или трёхмерной сцены. WDDM позволяет процессам совместно использовать поверхности Direct3D[4]. Поэтому приложение может включить ячейку, созданную другим приложением, в рассчитываемую сцену. Совместное пользование текстур процессами до WDDM было сложной задачей, поскольку требовало копирования данных из видеопамяти в системную память и назад, в видеопамять нового устройства.

Расширенная отказоустойчивость

Если драйвер WDDM зависнет или встретит сбой, графический стек перезапустит драйвер. При сбое графической аппаратуры произойдёт перехват этого события и, если необходимо, драйвер будет перезапущен.

Драйверы для Windows XP были вольны реагировать на аппаратные сбои на своё усмотрение, либо уведомлением пользователя, либо попыткой устранить ошибку молча. С драйвером WDDM все сбои аппаратуры вызывают перезапуск драйвера, а пользователь получает всплывающее сообщение; это унифицирует поведение драйверов разных разработчиков.

Предыдущие драйверы реализовывались полностью в режиме ядра, в то время как WDDM частично реализован в пользовательском режиме. Если область пользователя даст невосстановимую ошибку, это в худшем случае неожиданно прервёт работу приложения вместо синего экрана, как это было в предыдущих моделях драйверов.

WDDM также позволяет перезапускать или вытаскивать графическую аппаратуру без надлежащей перезагрузки. На практике, обновление драйвера не должно требовать перезагрузки.

Необходима новая модель драйверов

Одним из основных сценариев, которые делает возможным Windows Display Driver Model, является Desktop Window Manager . Поскольку рабочий стол и окна приложений, управляемые DWM, являются приложениями Direct3D, количество открытых окон напрямую влияет на требуемый объём видеопамяти. Поскольку нет ограничения на количество открытых окон, доступной видеопамяти может оказаться недостаточно, и потребуется виртуализация. Поскольку содержимое окон, которые DWM объединяет в конечный рабочий стол, создаётся разными процессами, необходимо межпроцессное совместное использование графических поверхностей. Также, поскольку одновременно с DWM на рабочем столе могут работать другие приложения DirectX, приложения должны иметь возможность совместного доступа к графическому процессору, что требует диспетчеризации.

Однако сказанное справедливо для Майкрософтовской реализации составного рабочего стола под Windows Vista, с другой стороны, составной рабочий стол теоретически не нуждается в новой модели графических драйверов. Успешные реализации составных рабочих столов существовали до Windows Vista на других платформах, таких, как Quartz, Compiz, WindowFX. Своим подходом Microsoft попытался сделать надёжный WDDM как обобщение опыта по разным графическим процессорам от различных производителей, как стандартизацию их свойств и качеств. Программные свойства, отсутствующие у других моделей драйверов, можно было бы сделать несущественными с помощью дополнений или если бы была доступна менее ограничивающая или просто другая модель драйверов.

Ограничения

Новая модель драйверов требует, чтобы графическая аппаратура поддерживала, по крайней мере, Shader Model 2.0 (fixed function pipeline is now translated to 2.0 shaders). Однако, по информации Microsoft, на 2009 год только около 1—2 процентов аппаратуры использовало модель драйверов Windows XP, а остальные уже являются WDDM-совместимыми. Модель также требует наличия некоторых других аппаратных возможностей (по этой причине, например, аппаратура, поддерживающая SM 2.0, такая, как Intel GMA 900, не проходит сертификацию на WDDM[5]).

Одно из ограничений драйвера WDDM версии 1.0 в том, что он не поддерживает одновременно несколько драйверов в многоадаптерном многомониторном окружении. Если у многомониторной системы более одного графического адаптера, оба адаптера должны использовать один и тот же драйвер WDDM. Если используется более одного драйвера, Windows выключит один из них.[6]. У WDDM 1.1 уже нет такого ограничения.[7]

В WDDM 1.0/1.1 отсутствуют некоторые режимы, ранее обслуживавшиеся непосредственно драйвером, такие, как растяжка рабочего стола на несколько мониторов[8][9], хотя режим Dual View[10] по-прежнему доступен.[11]

WDDM 1.1

Microsoft Windows 7 поддерживает важные дополнения к WDDM, известные как WDDM 1.1; подробности этой новой версии были раскрыты на WinHEC 2008. Новые возможности включают:

Аппаратное ускорение операций GDI и Direct2D/DirectWrite помогает уменьшить расход памяти в Windows 7, поскольку системе компоновки DWM больше не нужно держать копию системной памяти для всех графических поверхностей, используемых GDI/GDI+, как это было в Windows Vista.[15][16]

WDDM 1.1, Direct3D 11, Direct2D и DirectWrite также будут доступными с выходом Windows Vista Platform Update; однако, GDI/GDI+ в Vista будет по-прежнему полагаться на программный просчёт, и Desktop Window Manager будет продолжать использовать Direct3D 9Ex.

Драйверы WDDM 1.1 обратно совместимы со спецификацией WDDM 1.0; как драйверы 1.0, так и 1.1 можно использовать в Windows Vista с Platform Update или без него.

WDDM 1.2

Поддерживается в Windows 8.[17][18] и DXGI 1.2.[18][19] Новые функции были впервые просмотрены на конференции Build 2011 и включали в себя улучшения производительности, а также поддержку рендеринга и воспроизведения видео.Другие основные функции включают графического процессора с более тонкой зернистостью вычисление (буфер DMA, примитив, треугольник, пиксель или уровень инструкций)[20] .Уменьшенный объем памяти, улучшенное совместное использование ресурсов и более быстрое обнаружение и восстановление тайм-аута. 16-битные цветовые форматы поверхности (565, 5551, 4444) являются обязательными в Windows 8, а Direct3D 11 Video поддерживает YUV с 8, 10 и 16-битной точностью, а также 4 и 8-битные палиттированные форматы.[21]

WDDM 1.3

Поддерживается в Windows 8.1[22] и DXGI 1.3.[23].Новые дополнения включают в себя возможность обрезать использование памяти адаптера DXGI, многоплоскостные оверлеи, перекрывающиеся цепи подкачки и масштабирование подкачки, выбрать субрегион backbuffer для подкачки и представления подкачки с низкой задержкой. Дополнительные возможности драйвера включают в себя беспроводные дисплеи (Miracast), YUV диапазоны, ресурсы кросс-адаптера и возможности перечисления на GPU.

WDDM 2.0

На WinHEC 2006 Microsoft говорил о своих планах сделать значительное изменение WDDM для улучшения многозадачности применительно к графическим процессорам. Согласно информации Microsoft, WDDM 1.0 позволяет выполнять лишь элементарное планирование задач с просчётом «batch queue» granularity. WDDM 2.0 и WDDM 2.1', которые планировались после выхода Vista[24] но относительно которых Microsoft не огласил дату выхода в свет (Windows 8 поддерживает лишь WDDM 1.2), могли бы предложить вытесняющую многозадачность на уровне мелких структурных единиц и потребовали бы нового поколения графических процессоров.[25]

Поддерживается в Windows 10.

Возможности мобильности и мощности

Существуют также преимущества WDDM для мобильных новых функций Mobility в Windows Vista, которые зависят от WDDM.

Обнаружение горячих подключений дисплеев и проекторов

С Windows XP подключение ноутбука к проектору может оказаться многоступенчатым процессом, где каждый шаг может отличаться от одного поставщика ноутбука к другому. В Windows Vista этот процесс подключения к внешнему дисплею или проектору значительно упрощен. Когда к адаптеру дисплея подключается дополнительный внешний монитор или проектор, WDDM мгновенно обнаруживает это новое состояние и автоматически уведомляет модуль Transient Mobility Manager (TMM), который является базовой технологией для нового мастера внешнего дисплея Windows Vista. Мастер упрощает расширение или клонирование рабочего стола на второе устройство отображения.

«Гибридный» сон

Расширенное состояние ожидания Windows Vista сочетает быстрое включение / выключение функции ожидания с надежностью функции Hibernate. В Windows XP Hibernate приводит к сохранению содержимого системной памяти на жестком диске и отключении системы; В режиме ожидания содержимое памяти сохраняется с небольшим количеством мощности, а оставшаяся часть системы отключается.

Однако в Windows Vista «Hybrid» Sleep приводит к сохранению содержимого системной памяти на жестком диске, а система одновременно переходит в режим ожидания. Таким образом, система может возобновить работу с системной памяти очень быстро - менее чем за 2 секунды для ПК с поддержкой Windows Premium. Однако, если батарея полностью разряжается или потеря питания приводит к потере содержимого системной памяти, система может возобновиться с жесткого диска.

Источники

  1. 1,0 1,1 Windows Vista Display Driver Model
  2. Graphics Memory Reporting in WDDM
  3. The role of the Windows Display Driver Model in the DWM
  4. Cross Process Resource Sharing
  5. Intel excuse for no GMA900 WDDM driver: no «HW Scheduler» no driver, Beyond3D, October 26, 2006.
  6. "MultiMonitor Support and Windows Vista". Archived from the original on 2012-05-01. Retrieved 2007-10-20. 
  7. Working With the Windows 7 Graphics Architecture: WinHEC 2008
  8. Are there Control Panel features that were available under Windows XP that are no longer available on Windows Vista?
  9. Stretched Desktop or Spanning Mode Not Available in Catalyst Control Center Under Windows Vista
  10. Description of DualView in Windows XP
  11. MultiMonitor Support and Windows Vista
  12. "Windows DDK - GDI Hardware Acceleration". MSDN. Archived from the original on 2012-05-01. Retrieved 2009-06-14. 
  13. "Windows DDK - DXVA-HD DDI". MSDN. Archived from the original on 2012-05-01. Retrieved 2009-06-13. 
  14. "Windows DDK - Overlay DDI". MSDN. Archived from the original on 2012-05-01. Retrieved 2009-06-13. 
  15. Greg Schechter’s Blog: Redirecting GDI, DirectX, and WPF applications
  16. Engineering Windows 7 Graphics Performance
  17. "Windows Developer Preview - New for Display devices". Microsoft. 16 November 2013. Retrieved 9 December 2013. 
  18. 18,0 18,1 "Windows Display Driver Model Enhancements in Windows Developer Preview". MSDN. Microsoft. 28 September 2012. Retrieved 9 December 2013. 
  19. "DXGI 1.2 Improvements". MSDN. Microsoft. 16 November 2013. Retrieved 9 December 2013. 
  20. "DXGI_Graphics_Preemption_Granularity Enumeration". MSDN. Microsoft. 16 November 2013. Retrieved 9 December 2013. 
  21. "DXGI_FORMAT enumeration". MSDN. Microsoft. 16 November 2013. Retrieved 9 December 2013. 
  22. "What's new for Windows 8.1 Preview display drivers (WDDM 1.3)". MSDN. Microsoft. 16 November 2013. Retrieved 9 December 2013. 
  23. "DXGI 1.3 Improvements". MSDN. Microsoft. 16 November 2013. Retrieved 9 December 2013. 
  24. WinHEC 2006: Display Driver Logistics And Testing
  25. WinHEC 2006: Windows Display Driver Model (WDDM) v2 And Beyond

Ссылки