Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Note
XDDM and VGA drivers will not compile on Windows 8 and later operating systems. If display hardware is attached to a Windows 8 computer without a driver that is certified to support WDDM 1.2 or later, the system defaults to running the Basic Display Driver.
New drivers should be written as WDDM drivers.
To migrate to the Windows Display Driver Model (WDDM), driver developers need to write completely different display and video miniport drivers. Similar to the Windows 2000 display driver model (XDDM), WDDM requires a paired display driver and display miniport driver. However, in WDDM:
The display driver runs in user mode, and is hence referred to as the user-mode display driver (UMD).
The video miniport driver is known as the kernel-mode display miniport driver (KMD).
The model doesn't use services of the Windows Graphics Device Interface (GDI) engine. Instead, it uses services of the Direct3D runtime and DirectX graphics kernel subsystem (Dxgkrnl.sys).
Although driver writers can reuse low-level hardware-dependent code in their WDDM drivers, they should rewrite new device driver interface (DDI)-related code. When writing WDDM drivers, consider these points:
The KMD must implement a revised set of entry-point functions to interact with the operating system and the DirectX graphics kernel subsystem (Dxgkrnl.sys). For more information, see DriverEntry of Display Miniport Driver. The KMD can call any documented kernel-mode function.
The KMD dynamically loads the appropriate Dxgkrnl.sys. KMD and Dxgkrnl call each other through interfaces.
The KMD is no longer required to process most video I/O control codes (IOCTLs). In XDDM, the kernel-mode display driver uses these codes to communicate with the video miniport driver. In WDDM, the UMD communicates with the Direct3D runtime. In turn, Dxgkrnl communicates with KMD.
WDDM still uses the following IOCTLs, and the KMD must process them:
The UMD must implement and export an OpenAdapter function, which opens an instance of the graphics adapter. The UMD must also implement a CreateDevice function, which creates representations of display devices that handle collections of rendering state.
The UMD's CreateResource function, along with the KMD's DxgkDdiCreateAllocation function, replace the DdCanCreateSurface, DdCreateSurface, and D3dCreateSurfaceEx functions in XDDM.
Most of the remaining UMD functions implement the same functionality that the kernel-mode XDDM display driver implemented in the following functions:
- The D3dDrawPrimitives2 function and DP2 operation codes
- The motion compensation callback functions and DirectX Video Acceleration structures