Windows Display Driver Model (WDDM)[1] is the graphic driver architecture for video carddrivers running Microsoft Windows versions beginning with Windows Vista.[2]
It is a replacement for the previous Windows 2000 and Windows XP display driver model XDDM/XPDM[3] and is aimed at enabling better performance graphics and new graphics functionality and stability.[2] Display drivers in Windows Vista and Windows 7 can choose to either adhere to WDDM or to XDDM.[4] With the removal of XDDM from Windows 8, however, WDDM became the only option.[5]
Drivers: Pre-Wddm 1.0 Intel driver 945 Express Driver thru Windows update Hi, I'm a little confused by one of my update options. I was under the impression that windows 7 was using wddm 1.1, and that the wddm 1.0 drivers have been available for quite some time. Hi, How do we find if all of our enterprise machines have 'DirectX 9 graphics device with WDDM 1.0 greater' or not? I see finding such info on individual machines may be easier using dxdiag.exe etc but how to find tons of compr around in our enterprise (we have SCCM). Best Answer: Windows Display Driver Model (WDDM, also WVDDM) is the graphic driver architecture for video card drivers running Microsoft Windows versions beginning with Windows Vista. 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 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.
WDDM provides the functionality required to render the desktop and applications using Desktop Window Manager, a compositingwindow 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[edit]
WDDM drivers enable new areas of functionality which were not uniformly provided by earlier display driver models. These include:
Virtualized video memory[edit]
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,[6] 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[edit]
The runtime handles scheduling of concurrent graphics contexts.[7] 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[edit]
A Direct3D graphics surface is the memory area that contains information about the texturedmeshes used for rendering a 2D or 3D scene. WDDM allows Direct3D surfaces to be shared across processes.[8] 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[edit]
Windows Vista alerting the user of a successful WDDM recovery
What Is Wddm 1.0 Or Higher Driver
If a WDDM driver hangs or encounters a fault, the graphics stack will restart the driver.[2][9] 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. With a WDDM driver, 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.[2]
Limitations[edit]
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,[10] 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.[11]
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.[12] WDDM 1.1 does not have this limitation.[13]
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)[14][15] although Dual View is still available.[12][16]
Need for a new display driver model[edit]
One of the chief scenarios 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. Cirrus logic cs4206b driver. Successful implementations of composited desktops were done before Windows Vista on other platforms such as Quartz, Compiz, WindowFX. The approach 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 was in place.
History[edit]WDDM 1.0[edit]
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.[2][why?]
WDDM 1.1[edit]
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:[10]
Ralink wireless driver windows 7. 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.[21][22][23]
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[24] and the Desktop Window Manager continues to use Direct3D 9Ex.[25]
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.[10]
WDDM 1.2[edit]
Windows 8 includes WDDM 1.2[26][27] and DXGI 1.2.[27][28] 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),[29] 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.[30]
WDDM 1.2 supports display-only and render-only WDDM drivers, such as Microsoft Basic Display Driver[31] 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.[32][33][34]
WDDM 1.3[edit]
Windows 8.1 includes WDDM 1.3[35] and DXGI 1.3.[36] 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.[1]
WDDM 2.0[edit]
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,[37] to allow multithreading parallelism in the user-mode driver and result in lower CPU utilization.[38][39][40][41] Windows 10 also includes DXGI 1.4.[42]
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.[43]
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[edit]
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),[44] and DXGI 1.5 which supports HDR10 - a 10-bit high dynamic range, wide gamut format[45] defined by ITU-T Rec. 2100/Rec.2020 - and variable refresh rates.[46]
WDDM 2.2[edit]
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.[47]
WDDM 2.3[edit]
Windows 10 Fall Creators Update (version 1709) includes WDDM 2.3.
Nvidia
The following is a list of new features for Windows Display driver development in Windows 10, version 1709[48]: Phonerescue license code.
WDDM 2.4[edit]
Windows 10 April 2018 Update (version 1803) includes WDDM 2.4.
The following are updates to Display driver development in Windows 10, version 1803[3]:
Since the introduction of Windows 10 April 2018 Update, and due to changes in the WDDM, it became possible to use the same dual graphics in laptops. For example, it allows you to run programs / games on a more powerful video card, and display the image via the built-in graphics directly on the internal (PCI-E) or external bus, without having to connect the monitor to a powerful video card. It can also act as a solution to the problem if there is no VGA video output on the video card, and it is present on the motherboard.
WDDM 2.5[edit]
Windows 10 October 2018 Update (Version 1809) Includes WDDM 2.5.
Updates to Display driver development in Windows 10, version 1809 include the following[4]:
WDDM 2.6[edit]
Windows 10 May 2019 Update (Version 1903) Includes WDDM 2.6.
Super-Wet Ink is a feature that revolves around front-buffer rendering. IHV drivers can support the creation of “displayable” textures of formats or modes that are not supported by the hardware. They can do this by allocating the texture that the app requested, along with a “shadow” texture with a format/layout that can be displayed, and then copying between the two at present-time. This “shadow” may not necessarily be a texture in the normal way we think of it, but may just be compression data. Additionally, it may not be required to exist, but may be an optimization instead.
The runtime will evolve to understand these aspects of displayable surfaces:
Whether or not a shadow must exist for display on a particular VidPnSource/plane.
Whether it is more optimal for a shadow to exist.
When to transfer contents from the application surface to the shadow surface.
The runtime will be explicit about this operation, as opposed to it being implicit within Present.How to request setting a mode or dynamically flipping between the original and shadow surfaces.
Scanout may begin shortly after a VBlank, scans vertically from top to bottom of the image, and completes shortly before the next VBlank. This is not always the case, depending on the timing of the pixel clock, and the layout of the data in the texture; especially if there is actually compression available.
New DDIs were added to separate and understand transformations which occur prior to scanout, in order to (when possible) enable front-buffer rendering.
Variable rate shading, or coarse pixel shading, is a mechanism to enable allocation of rendering performance/power at varying rates across rendered images.
In the previous model, in order to use MSAA (multi-sample anti-aliasing) to reduce geometric aliasing:
The amount by which to reduce geometric aliasing needs to be known up-front when the target is allocated.The amount by which to reduce geometric aliasing can’t be changed once the target is allocated.In WDDM 2.6, the new model extends MSAA into the opposite, coarse pixel direction, by adding a new concept of coarse shading. This is where shading can be performed at a frequency coarser than a pixel. A group of pixels can be shaded as a single unit and the result is then broadcast to all samples in the group.
A coarse shading API allows apps to specify the number of pixels that belong to a shaded group. The coarse pixel size can be varied after the render target is allocated. So, different portions of the screen or different draw passes can have different course shading rates.
A multiple-tier implementation is available with two user-queryable caps. For Tiers 1 and 2, coarse shading is available for both single-sampled and MSAA resources. For MSAA resources, shading can be performed per-coarse-pixel or per-sample as usual. However, on Tiers 1 and 2, for MSAA resources, coarse sampling cannot be used to shade at a frequency between per-pixel and per-sample.
Tier 1:
Shading rate can only be specified on a per-draw-basis; nothing more granular than that
Shading rate applies uniformly to what is drawn independently of where it lies within the render target
What Is Wddm 1.0 Or Higher Driver
Tier 2:
Shading rate can be specified on a per-draw-basis, as in Tier 1. It can also be specified by a combination of per-draw-basis, and of:
Semantic from the per-provoking-vertex, andA screenspace imageShading rates from the three sources are combined using a set of combiners
Screen space image tile size is 16x16 or smaller. Shading rate requested by the app is guaranteed to be delivered exactly (for precision of temporal and other reconstruction filters)
SV_ShadingRate PS input is supported. The per-provoking vertex rate, also referred to here as a per-primitive rate, is only valid when one viewport is used and SV_ViewportIndex is not written to.
The per-provoking vertex rate, also referred to as a per-primitive rate, can be used with more than one viewport if the SupportsPerVertexShadingRateWithMultipleViewports cap is marked true. Additionally, in that case, it can be used when SV_ViewportIndex is written to.
Collect diagnostic info allows the OS to collect a private data from drivers for graphics adapters which consist of both rendering and display functions. This new feature is a requirement in WDDM 2.6.
The new DDI should allow the OS to collect information at any time a driver is loaded. Currently the OS uses DxgkDdiCollectDebugInfo function implemented by the miniport to query driver private data for TDR (timeout detection and recovery) related cases. The new DDI will be used to collect data for variety of reasons. The OS will call this DDI when diagnostic is needed providing a type of information being requested. The driver should collect all private information important to investigate the issue and submit it to the OS. DxgkDdiCollectDebugInfo will be eventually deprecated and replaced with DxgkDdiCollectDiagnosticInfo.
Background processing allows user mode drivers to express desired threading behavior, and the runtime to control/monitor it. User mode drivers would spin up background threads and assign the threads as low a priority as possible, and rely on the NT scheduler to ensure these threads don’t disrupt the critical-path threads, generally with success.
APIs allow apps to adjust what amount of background processing is appropriate for their workloads and when to perform that work.
Driver hot update reduces server downtime as much as possible when an OS component needs to be updated.
Driver hot patch is used to apply a security patch to the kernel mode driver. In this case the driver is asked to save adapter memory, the adapter is stopped, the driver is unloaded, new driver is loaded and the adapter is started again.
References[edit]Wddm Driver For Windows 7
Retrieved from 'https://en.wikipedia.org/w/index.php?title=Windows_Display_Driver_Model&oldid=913295293'
Comments are closed.
|
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
November 2020
Categories |