# Windows Display Driver Model

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. Display drivers in Windows Vista and Windows 7 can choose to either adhere to WDDM or to XDDM. 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.

## Features enabled by the WDDM

WDDM drivers enable areas of functionality which were not uniformly provided by earlier display driver models. These include:

### Virtualized video memory

In the context of graphics, virtualization means that individual processes (in user mode) cannot see the memory of adjacent processes even by means of insertion of forged commands in the command stream. WDDM drivers allow video memory to be virtualized, and video data to be paged out of video memory into system RAM. In case the video memory available turns out to be insufficient to store all the video data and textures, currently unused data is moved out to system RAM or to the disk. When the swapped out data is needed, it is fetched back. Virtualization could be supported on previous driver models (such as the XP Driver Model) to some extent, but was the responsibility of the driver, instead of being handled at the runtime level.

### Scheduling

The runtime handles scheduling of concurrent graphics contexts. Each list of commands is put in a queue for execution by the GPU, and it can be preempted by the runtime if a more critical task arrives and if it has not begun execution. This differs from native threads on the CPU where one task cannot be interrupted and therefore can take longer than necessary and make the computer appear less responsive. A hybrid scheduling algorithm between native and light threads with cooperation between the threads would achieve seamless parallelism. It is important to note that scheduling is not a new concept but it was previously the responsibility of individual driver developers. WDDM attempts to unify the experience across different vendors by controlling the execution of GPU tasks.

### Cross-process sharing of Direct3D surfaces

A Direct3D graphics surface is the memory area that contains information about the textured meshes used for rendering a 2D or 3D scene. WDDM allows Direct3D surfaces to be shared across processes. Thus, an application can incorporate a mesh created by another application into the scene it is rendering. Sharing textures between processes before WDDM was difficult, as it would have required copying the data from video memory to system memory and then back to video memory for the new device.

### Enhanced fault-tolerance

If a WDDM driver hangs or encounters a fault, the graphics stack will restart the driver. A graphics hardware fault will be intercepted and if necessary the driver will be reset.
Drivers under Windows XP were free to deal with hardware faults as they saw fit either by reporting it to the user or by attempting to recover silently. In some cases when the display driver can be safely stopped, Windows XP may instead alert about the display driver crash, while also disabling the video driver, thus switching down the screen resolution to 640x480 with only 16 colors. With a WDDM driver, the screen resolution will most likely be unaffected; all hardware faults cause the driver to be reset and the user will be notified by a popup; this unifies the behavior across vendors.
Previous drivers were fully implemented in kernel mode, whereas WDDM is implemented partly in user mode. If the user mode area fails with an unrecoverable error, it will, at the most, cause the application to quit unexpectedly instead of producing a blue screen error as it would in previous driver models.
WDDM also allows the graphics hardware to be reset and users to update drivers without requiring a reboot.

## Limitations

The new driver model requires the graphics hardware to have Shader Model 2.0 support at least, since the fixed function pipeline is now translated to 2.0 shaders. However, according to Microsoft as of 2009, only about 1–2 percent of the hardware running Windows Vista used the XDDM, with the rest already WDDM capable. It also requires some other hardware features; consequently some SM 2.0-supporting hardware such as the Intel GMA 900 fails the WDDM certification.
One of the limitations of WDDM driver model version 1.0 is that it does not support multiple drivers in a multi-adapter, multi-monitor setup. If a multi-monitor system has more than one graphics adapter powering the monitors, both the adaptors must use the same WDDM driver. If more than one driver is used, Windows will disable one of them. WDDM 1.1 does not have this limitation.
WDDM 1.0/1.1 does not allow some modes that were previously handled by the driver such as spanning mode (stretching the desktop across two monitors) although Dual View is still available.

### Need for a new display driver model

One of the chief scenarios that the Windows Display Driver Model enables is the Desktop Window Manager. Since the desktop and application windows managed by DWM are Direct3D applications, the number of open windows directly affects the amount of video memory required. Because there is no limit on the number of open windows, the video memory available may prove insufficient, necessitating virtualization. As the window contents that DWM composes into the final desktop are generated by different processes, cross-process surface sharing is necessary. Also, because there can be other DirectX applications running alongside DWM on the DWM-managed desktop, they must be able to access the GPU in a shared manner, necessitating scheduling.
Though this is true for Microsoft's implementation of a composited desktop under Windows Vista, on the other hand, a composited desktop need not theoretically require a new display driver model to work as expected. Successful implementations of composited desktops were done before Windows Vista on other platforms such as Quartz, Compiz, WindowFX. The approach that Microsoft attempted was to try to make sure WDDM was a unified experience across different GPUs from multiple vendors by standardizing their features and performance. The software features missing from other driver models could be made immaterial by extensions or if a less restrictive or simply different driver model were in place.

## History
### WDDM 1.0

Windows Vista introduced WDDM 1.0 as a new display driver architecture designed to be better performing, more reliable, and support new technologies including HDCP. Hybrid Sleep, which combines hibernation and sleep mode functionality for enhanced stability in the event of power failure, also requires WDDM.

### WDDM 1.1

Windows 7 supports major additions to WDDM known as WDDM 1.1; the details of this new version were unveiled at WinHEC 2008. New features include:
* DXGI 1.1, which features return of hardware 2D acceleration for use by GDI (but not GDI+) and Direct2D/DirectWrite
** BitBlt, StretchBlt, TransparentBlt
** AlphaBlend, ColorFill
** ClearType font support
* GPU switching without logoff or reboot
* Direct3D 11 device driver interface (DDI)
* OpenGL installable client driver (ICD)
* DXVA-HD DDI
* Hardware video overlay DDI
* Optional AES 128 encryption
* Optional decoding of encrypted video content
* Support multiple drivers in a multi-adapter and multi-monitor setup
Hardware acceleration of GDI and Direct2D/DirectWrite operations helps reduce memory footprint in Windows 7, because DWM compositing engine no longer needs to keep a system memory copy of all surfaces used by GDI/GDI+, as in Windows Vista.
DXGI 1.1, Direct3D 11, Direct2D, and DirectWrite were made available with Windows Vista Platform Update; however GDI/GDI+ in Vista continues to rely on software rendering and the Desktop Window Manager continues to use Direct3D 9Ex.
WDDM 1.1 drivers are backward compatible with WDDM 1.0 specification; both 1.0 and 1.1 drivers can be used in Windows Vista with or without the Platform Update.

### WDDM 1.2

Windows 8 includes WDDM 1.2 and DXGI 1.2. New features were first previewed at the Build 2011 conference and include performance improvements as well as support for stereoscopic 3D rendering and video playback.
Other major features include preemptive multitasking of the GPU with finer granularity (DMA buffer, primitive, triangle, pixel, or instruction-level), reduced memory footprint, improved resource sharing, and faster timeout detection and recovery. 16-bit color surface formats (565, 5551, 4444) are mandatory in Windows 8, and Direct3D 11 Video supports YUV 4:4:4/4:2:2/4:2:0/4:1:1 video formats with 8, 10, and 16-bit precision, as well as 4 and 8-bit palettized formats.
WDDM 1.2 supports display-only and render-only WDDM drivers, such as Microsoft Basic Display Driver and WARP-based Microsoft Basic Render Driver which replaced kernel-mode VGA driver.
WDDM 1.0/1.1 only allows rudimentary task scheduling using "batch queue" granularity; improvements to multitasking, as well as fast context switching and support for virtual memory, were initially expected in versions tentatively named WDDM 2.0 and WDDM 2.1, which were announced at WinHEC 2006.

### WDDM 1.3

Windows 8.1 includes WDDM 1.3 and DXGI 1.3. New additions include the ability to trim DXGI adapter memory usage, multi-plane overlays, overlapping swap chains and swap chain scaling, select backbuffer subregion for swap chain and lower-latency swap chain presentation. Driver feature additions include wireless displays (Miracast), YUV format ranges, cross-adapter resources and GPU engine enumeration capabilities. Graphics kernel performance improvements.

### WDDM 2.0

Windows 10 includes WDDM 2.0, which is designed to dramatically reduce workload on the kernel-mode driver for GPUs that support virtual memory addressing, to allow multithreading parallelism in the user-mode driver and result in lower CPU utilization. Windows 10 also includes DXGI 1.4.
Direct3D 12 API, announced at Build 2014, requires WDDM 2.0. The new API will do away with automatic resource-management and pipeline-management tasks and allow developers to take full low-level control of adapter memory and rendering states.
The display driver model from Windows 8.1 and Windows Phone have converged into a unified model for Windows 10.
A new memory model is implemented that gives each GPU a per-process virtual address space. Direct addressing of video memory is still supported by WDDMv2 for graphics hardware that requires it, but that is considered a legacy case. IHVs are expected to develop new hardware that supports virtual addressing. Significant changes have been made to the DDI to enable this new memory model.

### WDDM 2.1

Windows 10 Anniversary Update (version 1607) includes WDDM 2.1, which supports Shader Model 6.0 (mandatory for feature levels 12_0 and 12_1), and DXGI 1.5 which supports HDR10 - a 10-bit high dynamic range, wide gamut format defined by ITU-T Rec. 2100/Rec.2020 - and variable refresh rates.

### WDDM 2.2

Windows 10 Creators Update (version 1703) includes WDDM 2.2, which is tailored for virtual, augmented and mixed reality with stereoscopic rendering for the Windows Mixed Reality platform, and DXGI 1.6.

### WDDM 2.3

Windows 10 Fall Creators Update (version 1709) includes WDDM 2.3. The following is a list of new features for Windows Display driver development in Windows 10, version 1709:
* Shader Model 6.1, adding support view instancing and barycentric semantics.
* Display ColorSpace Transform DDIs provide additional control over color space transforms applied in the post-composition display pipeline.
* The D3D12 Copy Queue Timestamp Queries feature will allow applications to issue timestamp queries on COPY command lists/queues. These timestamps are specified to function identically to timestamps on other engines.
* Enhanced Video integration into Direct3D12 Runtime through: hardware accelerated video decoding, content protection and video processing

### WDDM 2.4

Windows 10 April 2018 Update (version 1803) includes WDDM 2.4. Updates to display driver development in Windows 10 version 1803 include the following features.:
* 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 October 2018 Update (Version 1809) Includes WDDM 2.5. Updates to Display driver development in Windows 10, version 1809 include the following features:
* 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 May 2019 Update (Version 1903) includes WDDM 2.6. Updates to display driver development in Windows 10 version 1903 include the following features:
* 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 May 2020 Update (Version 2004) includes WDDM 2.7. Updates to display driver development in Windows 10 version 2004 include the following features:
* 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 included WDDM 2.8, but no driver was ever publicly demonstrated to support it and it has been skipped for "Iron" and "Cobalt" development releases.

### WDDM 2.9

WDDM 2.9 in Windows 10 Insider Preview "Iron" will bring support for GPU hardware acceleration to the Windows Subsystem for Linux 2 (WSL 2) and support for feature level 12_2 and HLSL Shader Model 6.6.

### WDDM 3.0

Windows 11 RTM Final Retail release includes WDDM 3.0, which improves graphics architecture in Windows Subsystem for Linux adding:
* User mode driver compiled for Linux in the WSL package.
* Host driver mounted in Linux
* Dynamic refresh rate
* Direct3D 12 video encoding
* Hardware flip queue

### WDDM 3.1

Windows 11 2022 Update (version 22H2) includes WDDM 3.1.
* Shader Model 6.7
* IOMMU DMA remapping
* Sharing the backing store with KMD

### WDDM 3.2

Windows 11 2024 Update (version 24H2) includes WDDM 3.2.
* Shader Model 6.8
* Dirty bit tracking
* Live migration on GPU-P devices
* Native GPU fence objects
* User-mode work submission
* D3D12 AV1 video encoding
* Work graphs