Введение
Архитектура графических драйверов 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 и выше.
Windows Display Driver Model (WDDM, initially LDDM as Longhorn Display Driver Model and then WVDDM in times of Windows Vista) is the graphic driver architecture for video card drivers running Microsoft Windows versions beginning with Windows Vista. It is a replacement for the previous Windows 2000 and Windows XP display driver model XDDM/XPDM and is aimed at enabling better performance graphics and new graphics functionality and stability. With the removal of XDDM from Windows 8, however, WDDM became the only option. WDDM provides the functionality required to render the desktop and applications using Desktop Window Manager, a compositing window manager running on top of Direct3D. It also supports new DXGI interfaces required for basic device management and creation. The WDDM specification requires at least Direct3D 9 capable video card and the display driver must implement the device driver interfaces for the Direct3D 9Ex runtime in order to run legacy Direct3D applications; it may optionally implement runtime interfaces for Direct3D 10 and higher.
Функции, включенные 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, добавление поддержки монохромных с минимальным копированием памяти.
Shader Model 6.2, adding support for 16 bit scalars and the ability to select the behaviours with denormal values. Indirect Display UMDF class extension, the driver can pass the SRM to the rendering GPU and have a mechanism to query the SRM version being used. IOMMU hardware based GPU isolation support, increasing security by restricting GPU access to system memory. GPU paravirtualization support, enabling display drivers to provide rendering capabilities to Hyper V virtualized environments. Brightness, a new interface to support multiple displays that can be set to calibrated nit based brightness levels. D3D11 bitstream encryption, exposing CENC, CENS, CBC1, and CBCS with 8 or 16 byte initialization vectors. D3D11 and D3D12 video decode histogram, allowing to leverage fixed function hardware for histogram to improve tone mapping quality for HDR/EDR scenarios. D3D12 video decode now supports Decode Tier II, enabling applications to amortize allocation cost and reduce peak memory usage during resolution change. Tiled resource tier and LDA atomics, a new cross node sharing tier to add support for atomic shader instructions working across linked adapter (LDA) nodes, allowing to implement multiple GPU rendering techniques like split frame rendering (SFR). GPU dithering support, allowing the operating system to explicitly request dithering in scenarios where a higher effective bit depth is needed than is physically available on the monitor link, for example for HDR10 over HDMI 2.0. Post processing color enhancement override, allowing the operating system to request that the driver temporarily disable any post processing that enhances or alters display colors, for specific application scenarios to enforce colorimetrically accurate color behavior on the display, and safely coexist with OEM or IHV proprietary display color enhancements. Direct3D12 and Video, new API and DDI to provide access to hardware accelerated video decoding, content protection and video processing. DisplayID, a new DDI, designed to allow the VESA's DisplayID descriptor to be queried from a display controlled by a graphics adapter. GPU performance data, an extension to expose information about the GPU hardware such as temperature, fan speed, clock speeds for engines and memory, memory bandwidth, power draw, and voltages. SupportContextlessPresent, a driver cap to help IHVs onboard new driver. Improvements to External/Removable GPU support in the OS, providing better support to detachable GPUs. Display Diagnostics, with Kernel mode device driver interface changes to allow the driver for a display controller to report diagnostic events to the operating system. Shared graphics power components, allowing non graphics drivers to participate in the power management of a graphics device. Shared texture improvements, increasing the types of textures that can be shared across processes and Direct3D devices, adding support to monochrome with minimal memory copying.
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 года и устарел из более ранних версий ОС в рамках исправления безопасности.
Shader Model 6.3, adding support for DirectX12 Raytracing (DXR). Raytracing, in order to support hardware accelerated raytracing in Direct3D 12. Universal Driver Requirements, drivers will need to ensure their DirectX 11 and DirectX12 user mode drivers and kernel mode drivers, as well other DLL loaded by these components, adhere to the Universal API. SRV Only Tiled Resource Tier 3, a new capability bit for tiled resources, exposing sparse volume textures without requiring unordered access and render target operations support. Render Pass, introducing render pass concept in Direct3D 12, adding new APIs to be run on existing drivers and allow user mode drivers to choose optimal rendering path without heavy CPU penalty. Meta commands, adding preview support for DirectML, a high performance, hardware accelerated DirectX 12 library for machine learning. With Windows 10 version 1903 and newer meta commands and DirectML are a stable part of Windows. HDR Brightness Compensation, a new SDR brightness boost, raising the reference white of SDR content to the user desired value, allowing SDR content to be reproduced to a typical 200 240 nits. It also allows reporting if the hardware/driver supports HDR output through FP16 pixel format or only ARGB10 pixel format. SDR White Level, to let the graphics drivers know the SDR white level value that is being applied by the OS compositor for all the SDR content, for a display which is running in HDR mode. Display Synchronization, allowing the operating system to check for display synchronization capabilities if the display is exposed by the driver and prior to enabling the display. Tracked Workloads was also added as an experimental feature to better control the trade off between quicker processor execution and lower power consumption, but was removed from Windows 10 version 2004 and deprecated from earlier OS versions as part of a security fix.
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.
Shader Model 6.4, adding support low precision packed dot product intrinsics and for library sub objects to simplify ray tracing. Super Wet Ink, allowing the creation of textures in formats and modes the IHVs doesn't natively support, resolving them as a resource projection to a format the hardware/drivers natively support, allowing internal drivers optimizations. Variable Rate Shading, also known as coarse pixel shading, a mechanism to enable allocation of rendering performance/power at varying rates across rendered images. It comes with two tiers (tier 1 and tier 2). Collect Diagnostic Info, allowing the operating system to collect a private data from drivers for both rendering and display functions. This new feature is a requirement in WDDM 2.6. Background Processing, allowing user mode drivers to express desired threading behavior, and the runtime to control/monitor it. APIs allow apps to adjust what amount of background processing is appropriate for their workloads and when to perform that work. Driver Hot Update, reducing server downtime and allowing driver security hot patch to the kernel mode driver. Microsoft Compute Driver Model (MCDM), for AI processors such as 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.
Shader Model 6.5, adding support to the new pipeline capabilities as well additional Wave intrinsics. Hardware accelerated GPU scheduling: masked as an additional option in the system settings, when enabled offloads high frequency tasks to a dedicated GPU based scheduling processor, reducing CPU scheduling overhead. Requires ad hoc hardware and driver support. Sampler Feedback, allowing a finer tune of the resources usage in a scene. It comes with two tiers (tier 0.9 and tier 1.0). DirectX Raytracing (DXR) Tier 1.1, introducing inline ray tracing, indirect rays dispatching, increasing the state object without the need to create a new one, and additional vertex formats for acceleration structures. Mesh and Amplification Shaders Stages, a new optional geometry pipeline replacing the traditional pipeline (Input Assembler Vertex Hull Tesselator Domain Geometry and Stream Output stages). Improved memory allocation control, with better residency control and the possibility to not explicitly zeroing newly created heaps. Direct3D 9 resource interop, allowing projecting a Direct3D 9 resource on a Direct3D 12 application. Direct3D 12 Video Protected Resource support, allowing play protected content in a Direct3D 12 application.
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