Введение

Архитектура графических драйверов Windows Display Driver Model (WDDM, первоначально LDDM как Longhorn Display Driver Model, а затем WVDDM во времена Windows Vista) - это архитектура графических драйверов для драйверов видеокарт, работающих на версиях Microsoft Windows, начиная с Windows Vista. Он является заменой для предыдущих Windows 2000 и Windows XP модели драйверов дисплея XDDM/XPDM и направлен на обеспечение лучшей производительности графики и новой функциональности и стабильности графики. Однако с устранением XDDM из Windows 8 WDDM стал единственным вариантом. WDDM обеспечивает функциональность, необходимую для рендеринга рабочего стола и приложений с помощью Desktop Window Manager, компостирующего окна, работающего на вершине Direct3D. Он также поддерживает новые интерфейсы DXGI, необходимые для управления и создания базовых устройств. Спецификация WDDM требует, чтобы видеокарта поддерживала как минимум Direct3D 9, а драйвер дисплея должен реализовывать интерфейсы драйверов устройств для времени выполнения Direct3D 9Ex для запуска устаревших приложений Direct3D; он может дополнительно реализовывать интерфейсы времени выполнения для Direct3D 10 и выше.

Функции, включенные WDDM

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

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

В контексте графики виртуализация означает, что отдельные процессы (в пользовательском режиме) не могут видеть память соседних процессов даже с помощью вставки поддельных команд в командный поток. Драйверы WDDM позволяют виртуализировать видеопамять и выводить видеоданные из видеопамяти в системную оперативную память. В случае, если имеющейся видеопамяти оказывается недостаточно для хранения всех видеоданных и текстур, в настоящее время неиспользуемые данные переносятся в системную оперативную память или на диск. Когда обменные данные нужны, они возвращаются. Виртуализация могла поддерживаться на предыдущих моделях драйверов (таких как XP Driver Model) в некоторой степени, но была ответственностью драйвера, а не обрабатывалась на уровне времени выполнения.

Расписание

Время выполнения обрабатывает планирование одновременных графических контекстов. Каждый список команд помещается в очередь для выполнения графическим процессором, и он может быть предотвращен в режиме выполнения, если прибывает более важная задача и если она не начала выполняться. Это отличается от нативных потоков на процессоре, где одна задача не может быть прервана и поэтому может занять больше времени, чем необходимо, и заставить компьютер казаться менее отзывчивым. Гибридный алгоритм планирования между родными и легкими потоками с сотрудничеством между потоками позволит достичь бесшовного параллелизма. Важно отметить, что планирование не является новой концепцией, но ранее это было обязанностью отдельных разработчиков драйверов. WDDM пытается унифицировать опыт различных поставщиков, контролируя выполнение задач GPU.

Обмен поверхностями Direct3D между процессами

Графическая поверхность Direct3D - это область памяти, которая содержит информацию о текстурированных сетях, используемых для рендеринга 2D или 3D сцены. WDDM позволяет совместно использовать Direct3D поверхности в различных процессах. Таким образом, приложение может включить сетку, созданную другим приложением, в сцену, которую оно рендерирует. Обмен текстурами между процессами до WDDM был трудным, так как это потребовало бы копирования данных из видеопамяти в системную память, а затем обратно в видеопамять для нового устройства.

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

Если драйвер WDDM застрянет или столкнется с ошибкой, графический стек перезапустит драйвер. Графическая аппаратная ошибка будет обнаружена и, если это необходимо, драйвер будет сброшен. Драйверы под Windows XP могли свободно справляться с аппаратными ошибками, как они считали нужным, либо сообщая об этом пользователю, либо пытаясь восстановиться тихо. В некоторых случаях, когда драйвер дисплея может быть безопасно остановлен, Windows XP может вместо этого предупредить о сбое драйвера дисплея, а также отключить видео драйвер, таким образом, снизив разрешение экрана до 640x480 с только 16 цветами. С драйвером WDDM, разрешение экрана, скорее всего, не будет затронуто; все аппаратные ошибки приводят к сбросу драйвера, и пользователь будет уведомлен всплывающим окном; это унифицирует поведение по всему провайдеру. Предыдущие драйверы были полностью реализованы в режиме ядра, тогда как WDDM частично реализован в пользовательском режиме. Если область пользовательского режима не работает с непоправимой ошибкой, это, в лучшем случае, приведет к неожиданному завершению работы приложения вместо создания ошибки синего экрана, как это было бы в предыдущих моделях драйверов. WDDM также позволяет сбросить графическое оборудование и пользователям обновлять драйверы без необходимости перезагрузки. Одним из ограничений модели драйверов WDDM версии 1.0 является то, что она не поддерживает несколько драйверов в многоадаптерной, многомониторной настройке. Если в системе с несколькими мониторами более одного адаптера для передачи данных, оба адаптера должны использовать один и тот же драйвер WDDM. Если используется более одного драйвера, Windows отключит один из них. WDDM 1.1 не имеет этого ограничения. WDDM 1.0/1.1 не позволяет использовать некоторые режимы, которые ранее обрабатывались драйвером, такие как режим протяжения (растягивание рабочего стола на два монитора), хотя Dual View все еще доступен.

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

Одним из главных сценариев, которые позволяет реализовать модель драйверов дисплея Windows, является менеджер окон на рабочем столе. Поскольку окна рабочего стола и приложений, управляемые DWM, являются приложениями Direct3D, количество открытых окон напрямую влияет на количество требуемой видеопамяти. Поскольку количество открытых окон не ограничено, доступная видеопамять может оказаться недостаточной, что требует виртуализации. Поскольку содержание окон, которое DWM составляет в конечный рабочий стол, генерируется различными процессами, необходимо совместное использование поверхностей межпроцессов. Кроме того, поскольку на управляемом рабочем столе DWM могут работать другие приложения DirectX, совместно с DWM, они должны иметь доступ к GPU совместно, что требует планирования. Хотя это верно для реализации Microsoft композитного рабочего стола под Windows Vista, с другой стороны, композитный рабочий стол теоретически не требует новой модели драйвера дисплея, чтобы работать как ожидается. Успешные реализации композитных настольных компьютеров были сделаны до Windows Vista на других платформах, таких как Quartz, Compiz, WindowFX. Microsoft пыталась сделать так, чтобы WDDM был единым для всех GPU-процессоров от разных производителей, стандартизируя их функции и производительность. Программные функции, отсутствующие в других моделях драйверов, могут быть несущественными в результате расширений или в случае использования менее ограничивающей или просто другой модели драйвера.

WDDM 1.3

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

WDDM 2.0

Windows 10 включает WDDM 2.0, который предназначен для значительного снижения нагрузки на драйвер в режиме ядра для графических процессоров, поддерживающих адресацию виртуальной памяти, для обеспечения многопоточного параллелизма в драйвере в режиме пользователя и снижения использования процессора. Windows 10 также включает DXGI 1.4. Direct3D 12 API, анонсированный на Build 2014, требует WDDM 2.0. Новый API устранит автоматические задачи управления ресурсами и управления трубопроводом и позволит разработчикам полностью контролировать низкий уровень памяти адаптера и состояния рендеринга. Модель драйверов дисплея из Windows 8.1 и Windows Phone превратилась в единую модель для Windows 10. Внедрена новая модель памяти, которая дает каждому графическому процессору виртуальное адресное пространство на процесс. Прямая адресация видеопамяти все еще поддерживается WDDMv2 для графического оборудования, которое требует этого, но это считается устаревшим случаем. Ожидается, что IHV разработают новое оборудование, которое поддерживает виртуальный адрес. Для создания этой новой модели памяти в DDI были внесены значительные изменения.

WDDM 2.1

Windows 10 Anniversary Update (версия 1607) включает WDDM 2.1, который поддерживает Shader Model 6.0 (обязательный для уровней функций 12 0 и 12 1), и DXGI 1.5, который поддерживает HDR10 - 10-битный высокий динамический диапазон, широкий диапазон формата, определенный ITU T Rec. 2100/Rec.2020 и переменные частоты обновления.

WDDM 2.2

Windows 10 Creators Update (версия 1703) включает WDDM 2.2, который адаптирован для виртуальной, дополненной и смешанной реальности со стереоскопическим рендерингом для платформы Windows Mixed Reality, и DXGI 1.6.

WDDM 2.4

Обновление Windows 10 апреля 2018 года (версия 1803) включает WDDM 2.4. Обновления для отображения разработки драйверов в Windows 10 версии 1803 включают следующие функции. : Shader Model 6.2, добавление поддержки 16-битных скаляров и возможность выбора поведения с денормальными значениями. Расширение класса Indirect Display UMDF, драйвер может передавать SRM на графический процессор и иметь механизм запроса используемой версии SRM. IOMMU поддерживает изоляцию GPU на основе аппаратного обеспечения, повышая безопасность путем ограничения доступа GPU к системной памяти. Поддержка паравиртуализации GPU, позволяющая драйверам дисплея предоставлять возможности рендеринга виртуализированным средам Hyper V. Яркость, новый интерфейс для поддержки нескольких дисплеев, которые могут быть настроены на калиброванные уровни яркости на основе нита. Шифрование битового потока D3D11, выявление CENC, CENS, CBC1 и CBCS с 8 или 16 байтовыми векторами инициализации. D3D11 и D3D12 видео декодируют гистограммы, позволяя использовать аппаратное обеспечение с фиксированной функцией для гистограммы для улучшения качества отображения тона для сценариев HDR / EDR. Видеодекодирование D3D12 теперь поддерживает Decode Tier II, что позволяет приложениям амортизировать затраты на распределение и сократить пиковое использование памяти при изменении разрешения. Тилированный уровень ресурсов и LDA atomics, новый уровень совместного использования кросс-узлов для добавления поддержки инструкций атомного шейдера, работающих через узлы связанных адаптеров (LDA), позволяя реализовывать несколько методов рендеринга GPU, таких как рендеринг разделенных кадров (SFR). Поддержка дитеринга графического процессора, позволяющая операционной системе явно запрашивать дитеринг в сценариях, когда требуется более высокая эффективная битовая глубина, чем физически доступна на линии связи монитора, например для HDR10 через HDMI 2.0. Замена цветового улучшения после обработки, позволяющая операционной системе запросить, чтобы драйвер временно отключил любую после обработки, которая улучшает или изменяет цвета дисплея, для конкретных сценариев применения, чтобы обеспечить колориметрически точное поведение цвета на дисплее и безопасно сосуществовать с OEM или IHV проприетарными цветовыми улучшениями дисплея. Direct3D12 и Video, новый API и DDI для обеспечения доступа к аппаратному ускоренному видеодекодированию, защите контента и обработке видео. DisplayID, новый DDI, предназначенный для запроса описателя DisplayID VESA с дисплея, управляемого графическим адаптером. Данные производительности GPU, расширение для раскрытия информации о аппаратном обеспечении GPU, такой как температура, скорость вентилятора, тактовые частоты для двигателей и памяти, пропускная способность памяти, потребление электроэнергии и напряжения. SupportContextlessPresent, шапка для водителя, чтобы помочь IHV на борту нового водителя. Улучшение поддержки внешнего/съемного графического процессора в ОС, обеспечивающего лучшую поддержку съемных графических процессоров. Диагностика дисплея, с изменениями интерфейса драйвера устройства в режиме ядра, чтобы позволить драйверу контроллера дисплея сообщать о диагностических событиях в операционную систему. Компоненты общего графического питания, позволяющие неграфическим драйверам участвовать в управлении питанием графического устройства. Улучшения общих текстур, увеличение типов текстур, которые могут быть общими для процессов и устройств Direct3D, добавление поддержки монохромных с минимальным копированием памяти.

WDDM 2.5

Windows 10 Октябрь 2018 Обновление (версия 1809) Включает WDDM 2.5. Обновления разработки драйверов дисплея в Windows 10, версия 1809 включают следующие функции: Shader Model 6.3, добавление поддержки DirectX12 Raytracing (DXR). Raytracing, для поддержки аппаратного ускоренного raytracing в Direct3D 12. Требования к универсальным драйверам, драйверам необходимо будет убедиться, что их драйверы в режиме пользователя DirectX 11 и DirectX12 и драйверы в режиме ядра, а также другие DLL, загружаемые этими компонентами, придерживаются универсального API. SRV Only Tiled Resource Tier 3, новый бит для тилевых ресурсов, демонстрирующий скудные объемы текстуры без необходимости беспорядочного доступа и поддержки целевых операций. Render Pass, внедряющий концепцию render pass в Direct3D 12, добавляя новые API, которые будут запускаться на существующих драйверах и позволяют драйверам пользовательского режима выбирать оптимальный путь рендеринга без тяжелого штрафа для процессора. Мета-команды, добавление поддержки предварительного просмотра DirectML, высокопроизводительная, аппаратно ускоренная библиотека DirectX 12 для машинного обучения. С Windows 10 версии 1903 и более новые мета-команды и DirectML являются стабильной частью Windows. HDR Brightness Compensation, новый SDR-повышение яркости, повышающий белый отсчет SDR-содержания до желаемого пользователем значения, позволяя воспроизводить SDR-содержание до типичных 200 240 нитов. Он также позволяет сообщать, поддерживает ли аппаратное обеспечение/драйвер выход HDR через формат пикселей FP16 или только формат пикселей ARGB10. SDR White Level, чтобы графические драйверы знали значение SDR white level, которое применяется композитором ОС для всего контента SDR для дисплея, работающего в режиме HDR. Синхронизация дисплея, позволяющая операционной системе проверять возможности синхронизации дисплея, если дисплей подвергается воздействию водителя и до включения дисплея. Tracked Workloads также был добавлен в качестве экспериментальной функции для лучшего контроля за компромиссом между более быстрым исполнением процессора и более низким потреблением энергии, но был удален из Windows 10 версии 2004 года и устарел из более ранних версий ОС в рамках исправления безопасности.

WDDM 2.6

Обновление Windows 10 мая 2019 года (версия 1903) включает WDDM 2.6. Обновления для разработки драйверов дисплея в Windows 10 версии 1903 включают следующие функции: Shader Model 6.4, добавление поддержки низкой точности упакованных точечных продуктов и подобъектов библиотеки для упрощения отслеживания лучей. Super Wet Ink, позволяющий создавать текстуры в форматах и режимах, которые IHV не поддерживают нативно, разрешая их как проекцию ресурсов в формат, который поддерживают аппаратные средства / драйверы нативно, позволяя оптимизировать внутренние драйверы. Переменная скорость затенения, также известная как грубая пиксельная затенение, механизм, позволяющий распределение производительности / мощности рендеринга с различной скоростью по рендеринговым изображениям. Он поставляется в двух уровнях (уровня 1 и уровень 2). Собирать диагностическую информацию, позволяющую операционной системе собирать личные данные от драйверов для функций рендеринга и отображения. Эта новая функция является требованием в WDDM 2.6. Фонная обработка, позволяющая драйверам пользовательского режима выражать желаемое поведение потоков и время выполнения для управления / мониторинга. API позволяют приложениям регулировать, какой объем фоновой обработки подходит для их рабочей нагрузки и когда выполнять эту работу. Driver Hot Update, сокращает время простоя сервера и позволяет обновлять безопасность драйвера в режиме драйвера ядра. Модель драйверов Microsoft Compute Driver Model (MCDM) для процессоров ИИ, таких как NPU.

WDDM 2.7

Обновление Windows 10 мая 2020 года (версия 2004) включает WDDM 2.7. Обновления для разработки драйверов дисплея в Windows 10 версии 2004 включают следующие функции: Shader Model 6.5, добавление поддержки новых возможностей трубопровода, а также дополнительные внутренние функции Wave. Аппаратное ускоренное планирование GPU: маскируется как дополнительная опция в настройках системы, когда включенная отгружает задачи высокой частоты на выделенный процессор планирования на основе GPU, уменьшая накладные расходы на планирование процессора. Требует специального оборудования и поддержки драйверов. Отзыв сэмплера, позволяющий более точно определить использование ресурсов в сцене. Он поставляется в двух уровнях (уровень 0.9 и уровень 1.0). DirectX Raytracing (DXR) Tier 1.1, внедряющий инлайн-рей-трессинг, непрямую диспетчеризацию лучей, увеличение объекта состояния без необходимости создания нового и дополнительные вертикальные форматы для ускорительных структур. Степень Mesh и Amplification Shaders, новая дополнительная геометрическая трубопровода, заменяющая традиционную трубопроводу (Степень геометрии домена входного сборщика вертикального корпуса тесселятора и выходной поток). Улучшенный контроль распределения памяти, с лучшим контролем резиденции и возможностью не явно нулировать вновь созданные кучи. Direct3D 9 ресурс интероп, позволяющий проецировать ресурс Direct3D 9 на приложение Direct3D 12. Поддержка ресурсов Direct3D 12 Video Protected, позволяющая воспроизводить защищенный контент в приложении Direct3D 12.

WDDM 2.8

Windows 10 Insider Preview Manganese включал WDDM 2.8, но ни один драйвер никогда публично не демонстрировался для его поддержки, и он был пропущен для релизов разработки "Iron" и "Cobalt".

WDDM 2.9

WDDM 2.9 в Windows 10 Insider Preview "Iron" будет поддерживать аппаратное ускорение GPU в подсистеме Windows для Linux 2 (WSL 2) и поддержку уровня функций 12 2 и HLSL Shader Model 6.6.

WDDM 3.2

Windows 11 2023 Update (версия 23H2) включает WDDM 3.2. Шейдер Модель 6.8