Windows Display Driver Model

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

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

Можливості моделі WDDM[ред. | ред. код]

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

Віртуалізована відеопам'ять[ред. | ред. код]

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

Спільне використання поверхонь Direct3D різними процесами[ред. | ред. код]

Графічна поверхня Direct3D — це область пам'яті, яка отримує інформацію про текстуровані елементи, які використовуються для розрахунку двомірної і тримірної сцени. WDDM дозволяє процесам спільне використання поверхні Direct3D [3]., тому застосування може додати елемент, створений іншим застосуванням в свою розраховану сцену. Спільне використання текстур процесами до появи WDDM було складною задачею, оскільки потребувало копіювання даних відеопам'яті в системну пам'ять і назад, у відеопам'ять нового пристрою.

Розширена відмовостійкість[ред. | ред. код]

Якщо драйвер WDDM зависне або призведе до збою, графічний стек перезапустить драйвер.[1] У випадку збою графічної апаратури, ця подія буде перехоплена і, при необхідності, драйвер буде перезапущено.

Драйвери для Windows XP могли реагувати на апаратні збої на власний розсуд, або повідомити користувача, або намагатися усунути помилку без повідомлень. З драйвером WDDM усі збої апаратури викликають перезапуск драйверу, а користувач отримує повідомлення; це робить однаковою поведінку драйверів різних розробників.

Попередні драйвери реалізовувались повністю у режимі ядра, в той час як WDDM частково реалізований у режимі користувача. Якщо область користувача видасть помилку, після якої неможливо відновити роботу, то в гіршому випадку це зупинить роботу застосування замість того, щоб призвести до синього екрану, як це було у попередніх моделей драйверів.

WDDM також дозволяє перезапустити або виймати графічну апаратуру без необхідного перезавантаження системи. На практиці, оновлення драйверу не повинне потребувати перезавантаження.

Обмеження[ред. | ред. код]

Нова модель драйверів потребує, щоб апаратура підтримувала принаймні Shader Model 2.0 (звернення до спеціалізованих блоків рендерингу (англ. fixed function pipeline) транслюються у еквівалентні шейдерні). Але, за інформацією Microsoft, на 2009 рік тільки близько 1-2 відсотків апаратури використовувало модель драйверів Windows XP, а інші вже були сумісними з WDDM. Модель також потребує наявності інших апаратних можливостей(по цій причині, наприклад, апаратура, яка підтримує SM 2.0, така як Intel GMA 900, не проходить сертифікацію на WDDM [4]).

Одним із основних обмежень драйверу WDDM версії 1.0 в тому, що він не підтримує одночасно декілька драйверів в багатоадаптерному багатомоніторному оточенні. Якщо у багатомоніторної системи більше ніж один графічний адаптер, обидва адаптера повинні використовувати один і той самий драйвер WDDM. Якщо використовується більше ніж один драйвер, Windows вимкне один з них.[5]. У WDDM 1.1 вже немає такого обмеження.[6]

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

Примітки[ред. | ред. код]

  1. а б Windows Vista Display Driver Model. Архів оригіналу за 13 грудня 2017. Процитовано 19 вересня 2012.
  2. Graphics Memory Reporting in WDDM. Архів оригіналу за 13 травня 2013. Процитовано 19 вересня 2012.
  3. Cross Process Resource Sharing. Архів оригіналу за 19 жовтня 2012. Процитовано 19 вересня 2012.
  4. Intel excuse for no GMA900 WDDM driver: no "HW Scheduler" no driver [Архівовано 5 березня 2012 у Wayback Machine.], Beyond3D, October 26, 2006.
  5. MultiMonitor Support and Windows Vista. Архів оригіналу за 30 квітня 2012. Процитовано 20 жовтня 2007.
  6. Working With the Windows 7 Graphics Architecture: WinHEC 2008. Архів оригіналу за 20 жовтня 2013. Процитовано 19 вересня 2012.
  7. Are there Control Panel features that were available under Windows XP that are no longer available on Windows Vista?. Архів оригіналу за 15 липня 2012. Процитовано 19 вересня 2012.
  8. Stretched Desktop or Spanning Mode Not Available in Catalyst Control Center Under Windows Vista. Архів оригіналу за 17 листопада 2009. Процитовано 19 вересня 2012.
  9. Description of DualView in Windows XP. Архів оригіналу за 22 лютого 2011. Процитовано 19 вересня 2012.
  10. MultiMonitor Support and Windows Vista. Архів оригіналу за 30 квітня 2012. Процитовано 19 вересня 2012.