13.07.2015 Views

Windows Display Driver Model Enhancements in Windows ...

Windows Display Driver Model Enhancements in Windows ...

Windows Display Driver Model Enhancements in Windows ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>W<strong>in</strong>dows</strong> <strong>Display</strong> <strong>Driver</strong> <strong>Model</strong><strong>Enhancements</strong> <strong>in</strong> <strong>W<strong>in</strong>dows</strong>Developer PreviewOctober 11, 2011AbstractThis paper provides <strong>in</strong>formation about the various enhancements to the <strong>W<strong>in</strong>dows</strong><strong>Display</strong> <strong>Driver</strong> <strong>Model</strong> (WDDM) for the next version of <strong>W<strong>in</strong>dows</strong>; this version ofWDDM is referred to as “WDDM v1.2”. This document provides an overview of thefeatures that are only enabled by a WDDM v1.2 driver. To take advantage of thesefeatures and provide the best experience, WDDM v1.2 is required by all systemsshipped with the next version of <strong>W<strong>in</strong>dows</strong>. WDDM v1.2 is a superset of WDDM v1.1,and WDDM 1.0. It is assumed the reader is familiar with WDDM v1.1 and v1.0.The Graphics Guide for <strong>W<strong>in</strong>dows</strong> 7 is a recommended read, available for download at:Graphics Guide for <strong>W<strong>in</strong>dows</strong> 7This <strong>in</strong>formation applies to the follow<strong>in</strong>g operat<strong>in</strong>g systems:<strong>W<strong>in</strong>dows</strong> Developer Preview<strong>W<strong>in</strong>dows</strong> Server Developer PreviewReferences and resources discussed here are listed at the end of this paper.The current version of this paper is ma<strong>in</strong>ta<strong>in</strong>ed on the web at:<strong>W<strong>in</strong>dows</strong> <strong>Display</strong> <strong>Driver</strong> <strong>Model</strong> <strong>Enhancements</strong> <strong>in</strong> <strong>W<strong>in</strong>dows</strong> Developer PreviewDisclaimer: This document is provided “as-is”. Information and views expressed <strong>in</strong> this document, <strong>in</strong>clud<strong>in</strong>gURL and other Internet website references, may change without notice. Some <strong>in</strong>formation relates to prereleasedproduct which may be substantially modified before it’s commercially released. Microsoft makes nowarranties, express or implied, with respect to the <strong>in</strong>formation provided here. You bear the risk of us<strong>in</strong>g it.This document does not provide you with any legal rights to any <strong>in</strong>tellectual property <strong>in</strong> any Microsoftproduct. You may copy and use this document for your <strong>in</strong>ternal, reference purposes.© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。ContentsINTRODUCTION...............................................................................................................4PART 1: WDDM <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8........................................................................................6Introduction.................................................................................................................... 6WDDM v1.2 Features...................................................................................................... 9Performance Improvements.........................................................................................11Reduced system memory footpr<strong>in</strong>t..........................................................................11Video memory offer and reclaim......................................................................... 11Standby hibernate optimizations......................................................................... 12Reliability improvements with <strong>in</strong>creased GPU fault tolerance.................................13GPU preemption...................................................................................................14TDR improvements...............................................................................................15Improved ability to diagnose performance problems..............................................16User-mode driver logg<strong>in</strong>g.....................................................................................16Disabl<strong>in</strong>g Frame Po<strong>in</strong>ter Omission (FPO) optimization........................................ 17XPS rasterization on the GPU............................................................................... 17Improvements to enhance end-user experience..........................................................17Stereoscopic 3D....................................................................................................18D3D11 Video Playback Improvements.................................................................19Optimized Screen Rotation Support.....................................................................19Conta<strong>in</strong>er ID support for displays (visually represent<strong>in</strong>g devices that areembedded with<strong>in</strong> a device)..................................................................................20Seamless handoff of the display control between <strong>W<strong>in</strong>dows</strong> and the WDDMgraphics driver......................................................................................................22<strong>Driver</strong> optimizations that can help reduce power consumption..................................23DirectFlip.............................................................................................................. 24GPU power management of idle and active power............................................. 24Advances to the display Infrastructure.........................................................................24Microsoft Basic <strong>Display</strong> <strong>Driver</strong>..............................................................................25Desktop Duplication API.......................................................................................26Support for headless systems.............................................................................. 27PART 2: Direct3D Features & Requirements................................................................29Introduction.................................................................................................................. 30DirectX feature improvements on <strong>W<strong>in</strong>dows</strong> 8......................................................... 30Pixel formats (5551, 565, 4444)........................................................................... 31Double-precision shader functionality................................................................. 32Target-<strong>in</strong>dependent rasterization (TIR)................................................................33No overwrite and discard..................................................................................... 34UAVs at every stage..............................................................................................34Cross-process shar<strong>in</strong>g of texture arrays (for support<strong>in</strong>g Stereoscopic 3D)..........35Unordered access views with multi-sample anti-alias sample access (UAV-MSAA)35Logic ops............................................................................................................... 36Improved control of constant buffers.................................................................. 36Clearview.............................................................................................................. 37Tileable copy flag..................................................................................................37Same-surface blits................................................................................................ 37Software requirements.............................................................................................38October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。Hardware requirements........................................................................................... 39PART 3: Graphics INF Requirements............................................................................ 42Introduction.................................................................................................................. 43Updated Feature score directive.............................................................................. 43Updated friendly name.............................................................................................45SKU differentiation directive.................................................................................... 46SKU differentiation for device drivers.................................................................. 46General UNICODE requirement................................................................................47Installed display drivers directive............................................................................. 48Copy flags to support PNP stop directive................................................................. 48<strong>Driver</strong>\services start type directive.......................................................................... 49Capability override sett<strong>in</strong>gs to disable OpenGL........................................................49[Version] section directives...................................................................................... 49[SourceDiskNames] section directives......................................................................50General x64 directives.............................................................................................. 50General <strong>in</strong>stall section directives..............................................................................51[Str<strong>in</strong>g] section changes for localized str<strong>in</strong>gs........................................................... 51<strong>Driver</strong> DLL for display adapter or chipset has properly formatted file version........52PART 4: Installation Scenarios......................................................................................53Install.........................................................................................................................54Upgrade.................................................................................................................... 54Down level................................................................................................................ 54PART 5: WDDM v1.2 <strong>Driver</strong> Enforcement Guidel<strong>in</strong>es.................................................. 55WDDM v1.2 <strong>Driver</strong> Enforcement..............................................................................56User experience when a driver fails the dxgkrnl validation..................................... 56WDDM driver and feature caps................................................................................56Best practices................................................................................................................ 57Resources...................................................................................................................... 58Glossary.........................................................................................................................58October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。INTRODUCTIONThe next version of <strong>W<strong>in</strong>dows</strong> (code-named <strong>W<strong>in</strong>dows</strong> 8) provides a Metro style userexperience and supports key areas of <strong>in</strong>novation <strong>in</strong> graphics hardware and softwarethat benefit end users, developers and system manufacturers <strong>in</strong> the follow<strong>in</strong>g ways:End User• Rich graphical composition model that allows for more flexibility to supportvideo playback and stereoscopic 3D scenarios• Improved system and UI responsiveness by reduc<strong>in</strong>g memory footpr<strong>in</strong>t• Improved reliability with <strong>in</strong>creased GPU fault tolerance• Seamless boot, resume, and driver upgrade experience• Flicker free screen rotation experience• High fidelity graphics experience even when w<strong>in</strong>dows bug checksDevelopers• Direct3D 11 video simplifies the development experience by provid<strong>in</strong>g as<strong>in</strong>gle API for graphical operations• Consistent API/DDI platform to enable Stereoscopic 3D applications• Optimizations that enable efficient usage of memory resources• Improved DirectX application performance on lower power hardwareconfigurations• WDDM provides a consistent developer experience by support<strong>in</strong>g all the newDirectX technologies such as DirectX11.1, D2D, DWrite, DImage• Higher performance anti-alias<strong>in</strong>g path for D2D applications• High Level Shader model performance improvements that can enabledevelopers to do more on the GPU without <strong>in</strong>volv<strong>in</strong>g the CPU• Higher performance for Direct3D 11.1 applications on small form factorplatforms and power constra<strong>in</strong>ed devices that use tile-based render<strong>in</strong>gtechniques• Added capabilities to enable shader debugg<strong>in</strong>g at all shader stages on DirectX11.1 hardware• Enabl<strong>in</strong>g Direct3D 11 applications to implement high quality render<strong>in</strong>galgorithms without need<strong>in</strong>g to allocate memory for large numbers of samples• Improvements to deferred shad<strong>in</strong>g techniques• Efficient buffer management for game developersOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。• Developers can benefit from GPU Preemption by not hav<strong>in</strong>g to optimize thesize of the application workload• With TDR improvements, non-<strong>in</strong>teractive applications, such as Compute, willbe allowed to use as much of the GPU as they need as long as they don’t<strong>in</strong>terfere with other applications which need to share the GPU• Improved ability to diagnose memory related issues with a better view <strong>in</strong>tomemory usage• Improved ability to diagnose performance issuesSystem Manufacturers• Optimizations to reduce system memory footpr<strong>in</strong>t to improve systemresponsiveness• Improved reliability with <strong>in</strong>creased GPU fault tolerance• Ability to boot on headless configurations which have no GPUs, displayhardware or stub drivers• <strong>Driver</strong> optimizations to reduce system power consumption• Rich graphical composition model that allows for more flexibility to supportvideo playback and stereoscopic 3D scenarios• Server platforms will benefit from the higher functionality that WDDM 1.2providesoooCompatible with UEFI GOPReboot-less driver upgradesCompatible with newer versions of DirectX technologiesTo deliver the best experience <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8, <strong>W<strong>in</strong>dows</strong> takes advantage of thegraphics hardware paired with an optimized WDDM v1.2 driver.This document provides <strong>in</strong>formation about the various enhancements to the<strong>W<strong>in</strong>dows</strong> <strong>Display</strong> <strong>Driver</strong> <strong>Model</strong> (WDDM) for <strong>W<strong>in</strong>dows</strong>® 8 operat<strong>in</strong>g systems. WDDMfor <strong>W<strong>in</strong>dows</strong> 8 is referred to as “WDDM v1.2”. This document provides an overviewof the <strong>W<strong>in</strong>dows</strong> 8 features that are only enabled by a WDDM v1.2 driver. To takeadvantage of these features and provide the best experience, WDDM v1.2 is requiredby all systems shipped with <strong>W<strong>in</strong>dows</strong> 8.The paper is divided <strong>in</strong>to four parts:• Part 1 provides details on WDDM <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8• Part 2 focuses on Direct3D feature requirements• Part 3 covers Graphics INF requirements• Part 4 covers the Installation experience• Part 5 covers the WDDM v1.2 driver enforcement guidel<strong>in</strong>esOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。PART 1:WDDM <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8In this part:Introduction.................................................................................................................... 7WDDM v1.2 Features...................................................................................................... 9Performance Improvements.........................................................................................11Reduced system memory footpr<strong>in</strong>t..........................................................................11Video memory offer and reclaim......................................................................... 11Standby hibernate optimizations......................................................................... 12Reliability improvements with <strong>in</strong>creased GPU fault tolerance.................................13GPU preemption...................................................................................................14TDR improvements...............................................................................................15Improved ability to diagnose performance problems..............................................16User-mode driver logg<strong>in</strong>g.....................................................................................16Disabl<strong>in</strong>g Frame Po<strong>in</strong>ter Omission (FPO) optimization........................................ 17XPS rasterization on the GPU............................................................................... 17Improvements to enhance end-user experience..........................................................17Stereoscopic 3D....................................................................................................18D3D11 Video Playback Improvements.................................................................19Optimized Screen Rotation Support.....................................................................19Conta<strong>in</strong>er ID support for displays (visually represent<strong>in</strong>g devices that areembedded with<strong>in</strong> a device)..................................................................................20Seamless handoff of the display control between <strong>W<strong>in</strong>dows</strong> and the WDDMgraphics driver......................................................................................................22From Firmware to <strong>W<strong>in</strong>dows</strong> operat<strong>in</strong>g system................................................ 22From <strong>W<strong>in</strong>dows</strong> operat<strong>in</strong>g system to WDDM graphics driver...........................23From WDDM graphics driver to <strong>W<strong>in</strong>dows</strong> operat<strong>in</strong>g system...........................23Tak<strong>in</strong>g over the display control without disabl<strong>in</strong>g the WDDM graphics driver23<strong>Driver</strong> optimizations that can help reduce power consumption..................................23DirectFlip.............................................................................................................. 24GPU power management of idle and active power............................................. 24Advances to the display Infrastructure.........................................................................24Microsoft Basic <strong>Display</strong> <strong>Driver</strong>..............................................................................25Desktop Duplication API.......................................................................................26Support for headless systems.............................................................................. 27October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。IntroductionThe <strong>W<strong>in</strong>dows</strong> <strong>Display</strong> <strong>Driver</strong> <strong>Model</strong> (WDDM) was <strong>in</strong>troduced with <strong>W<strong>in</strong>dows</strong> Vista as areplacement to the <strong>W<strong>in</strong>dows</strong> XP <strong>Display</strong> <strong>Driver</strong> <strong>Model</strong> (XDDM). With its <strong>in</strong>troduction<strong>in</strong> <strong>W<strong>in</strong>dows</strong> Vista, the WDDM architecture offered functionality needed to enableseveral new features such as Desktop Composition, enhanced fault tolerance, videomemory manager, GPU scheduler, cross process shar<strong>in</strong>g of Direct3D surfaces, and soon. WDDM was specifically designed for modern graphics devices that were Direct3D9 with pixel shader 2.0 or better and had all the necessary hardware features tosupport the WDDM features. WDDM for <strong>W<strong>in</strong>dows</strong> Vista was referred to as “WDDMv1.0”.<strong>W<strong>in</strong>dows</strong> 7 made <strong>in</strong>cremental changes to the driver model for support<strong>in</strong>g <strong>W<strong>in</strong>dows</strong> 7features and capabilities and was referred to as “WDDM v1.1”. WDDM v1.1 is a strictsuperset of WDDM v1.0. WDDM v1.1 <strong>in</strong>troduced support for Direct3D 11, GDIhardware acceleration, Connect<strong>in</strong>g and Configur<strong>in</strong>g <strong>Display</strong>s, DXVA HD, and manyother features. For more details on these features, refer to the Graphics guide for<strong>W<strong>in</strong>dows</strong> 7.<strong>W<strong>in</strong>dows</strong> 8 <strong>in</strong>troduces an array of new features and capabilities that require graphicsdriver changes. These <strong>in</strong>cremental changes benefit end users and developers, andimprove system reliability. The WDDM driver model that enables these <strong>W<strong>in</strong>dows</strong> 8features is referred to as “WDDM v1.2”. WDDM v1.2 is a superset of WDDM v1.1 andWDDM v1.0.These changes can be represented <strong>in</strong> a simplified form as shown <strong>in</strong> Table 1.1 belowTable 1.1 WDDM <strong>Driver</strong> <strong>Model</strong> VersionsOperat<strong>in</strong>g<strong>Driver</strong> <strong>Model</strong>s SupportedSystem<strong>W<strong>in</strong>dows</strong> Vista WDDM v1.0XDDM on Server and limitedUMPC<strong>W<strong>in</strong>dows</strong> VistaSP1 / <strong>W<strong>in</strong>dows</strong>7 client packWDDM v1.05XDDM on Server 2008<strong>W<strong>in</strong>dows</strong> 7 WDDM v1.1XDDM on Server 2008 R2<strong>W<strong>in</strong>dows</strong> 8Direct3DversionssupportedD3D9, D3D10D3D9, D3D10,D3D10.1D3D9, D3D10,D3D10.1, D3D11WDDM v1.2 D3D9, D3D10,D3D10.1,D3D11, D3D11.1Features enabledSchedul<strong>in</strong>g,MemoryManagement,Fault tolerance,D3D9 & 10+ BGRA support <strong>in</strong>D3D10, D3D 10.1GDI Hardwareacceleration,DXVA HD, D3D11Smooth Rotation,Stereoscopic 3D,D3D11 Video,D3D11.1, etc.Note: With <strong>W<strong>in</strong>dows</strong> 8 and WDDM v1.2, XDDM will no longer be supported andXDDM drivers will no longer load on <strong>W<strong>in</strong>dows</strong> 8 client or server. For the scenariosOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。traditionally dependent on XDDM, <strong>W<strong>in</strong>dows</strong> 8 allows migration to WDDM asillustrated <strong>in</strong> Table 1.2. IHVs and system builders should adopt the alternativeWDDM solution that works best for their customers. This means a <strong>W<strong>in</strong>dows</strong> 8 systemwill always have a WDDM-based driver.Table 1.2 Migrat<strong>in</strong>g from XDDM to WDDMCurrently us<strong>in</strong>gWDDM support for XDDM scenariosXDDM VGA <strong>Driver</strong>Microsoft Basic <strong>Display</strong> <strong>Driver</strong>XDDM IHV <strong>Driver</strong>XDDM Virtualization <strong>Driver</strong>CSM for Int10 support on UEFIRemote Desktop Access/CollabRemote Session <strong>Driver</strong>System builders need to work with the IHV to get:• <strong>Display</strong> Only WDDM <strong>Driver</strong> or• Full Graphics WDDM <strong>Driver</strong>Alternately Microsoft Basic <strong>Display</strong> <strong>Driver</strong>System builders need to work with the IHV to get anew <strong>Display</strong> Only Virtualization <strong>Driver</strong>No longer needed with UEFI GOP supportDesktop Duplication APINo Change, no support for


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。Table 1.4 <strong>W<strong>in</strong>dows</strong> certification requirements for WDDM driver typesClientServerClient runn<strong>in</strong>gServer Virtual<strong>in</strong> a VirtualEnvironmentFull Graphics Required as Optional Optional Optionalboot device<strong>Display</strong> Only Not allowed Optional Optional OptionalRender Only Optional as nonprimaryOptional Optional OptionaladapterHeadless Not allowed Optional N/AN/AWDDM v1.2 is required for all systems shipped with <strong>W<strong>in</strong>dows</strong> 8. WDDM v1.0 andWDDM v1.1 will cont<strong>in</strong>ue to work on <strong>W<strong>in</strong>dows</strong> 8. However, the best experience and<strong>W<strong>in</strong>dows</strong> 8–specific features are enabled only by a WDDM v1.2 driver.WDDM v1.2 FeaturesThe WDDM v1.2 feature set <strong>in</strong>cludes several new enhancements that improveperformance, reliability, and the overall end user experience. Each of these featuresrequires special support from 3 rd -party WDDM v1.2 drivers. This section elaborateson what constitutes the WDDM v1.2 feature set.WDDM v1.2 has both mandatory and optional features. The driver must implementall the mandatory features to claim itself as a “WDDM v1.2 driver”, while the drivercan implement any comb<strong>in</strong>ation (or none) of the optional features. A non WDDMv1.2 driver must report none of the WDDM v1.2 features.Table 1.5 summarizes the WDDM v1.2 feature set. “M” <strong>in</strong>dicates mandatory, “O”<strong>in</strong>dicates optional, “NA” <strong>in</strong>dicates not applicable.Table 1.5 WDDM v1.2 feature set<strong>W<strong>in</strong>dows</strong> 8 featuresFeature Benefitenabled by WDDMv1.2Video memory offerand reclaimGPU PreemptionTDR ImprovementsScreen RotationSupportStereoscopic 3DEnables more efficient usageof video memoryImproves desktopresponsivenessImproved resiliency to GPUhangsOptimized screen rotationexperience without screenflickerProvides a consistent API &DDI platform to enableStereoscopic 3D scenariosWDDM <strong>Driver</strong> TypeFull Render <strong>Display</strong>Graphics Only OnlyM M NAM M NAM M NAMONANAMNAOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。<strong>W<strong>in</strong>dows</strong> 8 featuresD3D11 VideoPlaybackImprovementsDirectFlipBugcheck SupportPnP Start and StopStandby HibernateOptimizationsGPU powermanagement of idleand active powerXPS Rasterization onthe GPUConta<strong>in</strong>er ID supportfor <strong>Display</strong>sDisabl<strong>in</strong>g FramePo<strong>in</strong>ter Omission(FPO) optimizationUser Mode <strong>Driver</strong>Logg<strong>in</strong>gFeature BenefitSimplified programm<strong>in</strong>gexperience for videoplayback applicationsImprovements <strong>in</strong> the videoplayback and compositionstack to improve batterylifeHigh resolution ma<strong>in</strong>ta<strong>in</strong>edwhen <strong>W<strong>in</strong>dows</strong> bug checksMa<strong>in</strong>ta<strong>in</strong> a high resolutionhigh graphics mode asdisplay ownership istransition betweenfirmware, <strong>W<strong>in</strong>dows</strong> anddriver.Enables optimizations tothe graphics stack toimprove performance onsleep and resumeProvides a standardized<strong>in</strong>frastructure for f<strong>in</strong>egra<strong>in</strong>eddevice powermanagementEnables a quality pr<strong>in</strong>t<strong>in</strong>gexperience on <strong>W<strong>in</strong>dows</strong> 8with 3 rd party driversHelps represent monitordevice connectivity andassociated state to the user<strong>in</strong> the user <strong>in</strong>terface likethe device hubImproves debugg<strong>in</strong>g ofperformance problemsrelated to FPO on the fieldImproves ability todiagnose <strong>in</strong> <strong>in</strong>vestigat<strong>in</strong>gmemory related issues byprovid<strong>in</strong>g better view <strong>in</strong>tomemory usageWDDM <strong>Driver</strong> TypeM* M* NAMNANAMNA MMNA MO O NAO O OM**M**MNANAMM M MM M NA*This feature is “Mandatory” for all WDDM v1.2 drivers with Direct3D 10-, Direct3D10.1-, Direct3D 11-, or Direct3D 11.1-capable hardware.****No new DDI changes. IHVs will have to pass the XPS rasterization conformancetests to ensure a quality pr<strong>in</strong>t<strong>in</strong>g experience for the GPU accelerated XPS pr<strong>in</strong>t<strong>in</strong>gscenarios.October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。Note: There will be a new set of APIs available on <strong>W<strong>in</strong>dows</strong> 8 for duplicat<strong>in</strong>g thedesktop for collaboration scenarios. For more details please refer to the MSDNdocumentation on Desktop duplication API.The follow<strong>in</strong>g section provides an overview of the features and improvements thatconstitute the WDDM v1.2 feature set. If you need additional details on thesefeatures, please refer to the feature documentation on MSDN. Feature-related logorequirements are captured as part of the <strong>W<strong>in</strong>dows</strong> Hardware Certification Kit (WHCK)documentation. These features are grouped <strong>in</strong> the follow<strong>in</strong>g categories:• Performance improvements• Improvements to enhance the end-user experience• <strong>Driver</strong> optimizations that can help reduce power consumption• Advances to the display <strong>in</strong>frastructurePerformance ImprovementsThis section elaborates on the various <strong>W<strong>in</strong>dows</strong> 8 features that improve performance:• Reduced system memory footpr<strong>in</strong>t (Video memory offer and reclaim, StandbyHibernate Optimizations)• Reliability improvements with <strong>in</strong>creased GPU fault tolerance (GPU Preemption,TDR Improvements)• Improved diagnosability of performance problems (User Mode <strong>Driver</strong> Logg<strong>in</strong>g,Disabl<strong>in</strong>g Frame Po<strong>in</strong>ter Omission optimization)• XPS Rasterization on the GPUReduced system memory footpr<strong>in</strong>tAn important goal for <strong>W<strong>in</strong>dows</strong> 8 is to improve system responsiveness by reduc<strong>in</strong>gthe system memory footpr<strong>in</strong>t. System memory usage significantly affects systemresponsiveness. Increased system memory usage leads to <strong>in</strong>creased pag<strong>in</strong>g activity,which directly leads to reduced system responsiveness. Thus, for the bestresponsiveness, all applications, processes, and operat<strong>in</strong>g system components shoulduse as little system memory as possible.The follow<strong>in</strong>g features on <strong>W<strong>in</strong>dows</strong> 8 will help applications/drivers to efficientlyutilize memory resources and take advantage of the hardware they have:• Video memory offer and reclaim• Optimizations for sleep and resumeVideo memory offer and reclaimAs new classes of applications start us<strong>in</strong>g the GPU for hardware acceleration, there is<strong>in</strong>creased shar<strong>in</strong>g of GPU resources such as video memory. Availability of GPUresources is generally not a problem on systems that have high-end GPUs. Today’smodern mid to high-end GPUs have 1G or more video memory on board, which isplenty for the most common user scenarios <strong>in</strong> <strong>W<strong>in</strong>dows</strong>. <strong>W<strong>in</strong>dows</strong> 8, however,October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。<strong>in</strong>troduces a number of new scenarios where GPU capabilities are exploited by newclasses of applications such as Internet Explorer (IE) and those us<strong>in</strong>g D2D or DirectImage. These applications, along with exist<strong>in</strong>g ones will be vy<strong>in</strong>g for exist<strong>in</strong>g GPUresources. An important po<strong>in</strong>t to consider here is the recent proliferation of low-endPCs. The GPUs <strong>in</strong> these PCs are typically <strong>in</strong>tegrated <strong>in</strong>to the chipset/CPU and useportions of ma<strong>in</strong> system memory as video memory. Thus video memory usagetranslates directly <strong>in</strong>to higher system memory usage. Thus, the amount of GPUresources such as video memory is pretty scanty. Use of multiple applications at thesame time often puts a heavy burden on these PCs, adversely impact<strong>in</strong>g systemperformance and eventually the end-user experience.This feature provides a technique <strong>in</strong> which graphics-dedicated and shared systemmemory could potentially be conserved when not <strong>in</strong> use, thus mak<strong>in</strong>g it available toother applications if needed.Below are some scenarios that result <strong>in</strong> efficient memory resource usage through thisfeature:• On low-end systems, which are under memory pressure, more video memory willbe available to other applications runn<strong>in</strong>g on the system because the WDDM v1.2driver will offer back memory resources when not needed.• On systems with sufficient system memory with no memory pressure, theapplications will be able to use generous amounts of memory through extracaches and temporary surfaces to speed up performance. Under memorypressure, the use of the offer and reclaim API will result <strong>in</strong> prudent use ofmemory, mak<strong>in</strong>g it available to other applications when needed.• Temporary video memory resources that are offered by the WDDM v1.2 driverwill be deleted by the video memory manager when the system goes <strong>in</strong>tohibernation. This will result <strong>in</strong> time sav<strong>in</strong>gs <strong>in</strong> the event of system hibernationbecause these resources do not have to be written to the Hiberfile. Time forsystem resume will also be correspond<strong>in</strong>gly less because the Hiberfile is smaller.All WDDM v1.2 drivers must use the new UMD offer and reclaim DDI to reduce theoverhead of memory resources created for temporary surfaces <strong>in</strong> local and systemmemory. For more <strong>in</strong>formation on the feature requirements, please refer to therelevant WHCK documentation on “Device.Graphics…OfferReclaim”.Standby hibernate optimizations<strong>W<strong>in</strong>dows</strong> 8 offers optimizations to the graphics stack to improve performance onsleep and resume.When a PC transitions to sleep or resumes from sleep, there are several operationsdone to ensure video memory content is preserved and restored properly. Some ofthese operations are unnecessary and can be avoided as expla<strong>in</strong>ed with the follow<strong>in</strong>gconcepts:• An <strong>in</strong>tegrated graphics adapter uses system memory as video memory. Becausesystem memory is always refreshed when a computer goes to sleep, no evictionOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。is necessary. Thus the delays <strong>in</strong>troduced by the graphics stack can be broughtdown to “zero” delay or to the order of few milliseconds.• The total time to purge on discrete adapters is simply the quotient of the amountof memory purged divided by the rate of purge. This time can be reduced byreduc<strong>in</strong>g the amount of memory to purge.The goal here is to ensure that only data that can be recreated will be discarded.WDDM v1.2 drivers can take advantage of these optimizations by specify<strong>in</strong>g whichallocations should be preserved dur<strong>in</strong>g power state transitions.A .New generation of discrete graphics adapters may be designed to refresh theirmemory when <strong>in</strong> standby (Self Refresh<strong>in</strong>g VRAM). These adapters will also benefitfrom these optimizations.Eviction will still be relevant for discrete graphics adapters that don’t have the selfrefresh<strong>in</strong>gVRAM feature. For these cases, the performance optimization is tom<strong>in</strong>imize the amount of data that is preserved. For <strong>in</strong>stance, unused data <strong>in</strong> videomemory such as offered allocations, discarded allocations, and unused DMA buffers,can be discarded.Follow<strong>in</strong>g are the benefits of utiliz<strong>in</strong>g this feature:• Do<strong>in</strong>g no work: On Integrated and discrete graphics adapters (with self-refreshVRAM feature), the delay <strong>in</strong>troduced by the graphics stack can be brought downto “zero” delay or to the order of few milliseconds.• Do<strong>in</strong>g less work: On Discrete graphics adapters, the performance improvementwill mostly be dependent on how much unused data <strong>in</strong> video memory isdiscarded.• Reduced Memory Trash<strong>in</strong>g: The larger the amount of memory evicted, thegreater the effect of memory trash<strong>in</strong>g. This has a bigger impact on discretegraphics adapters because they require a large amount of system memory toevict to.Every device that can support this feature should take advantage of theseoptimizations. WDDM v1.2 drivers must set one or more of the Standby HibernateFlags when enumerat<strong>in</strong>g segment capabilities. For more <strong>in</strong>formation on the featurerequirements, please refer to the relevant WHCK documentation on“Device.Graphics…Standby Hibernate Flags”.Reliability improvements with <strong>in</strong>creased GPU fault toleranceA common stability problem <strong>in</strong> graphics occurs when the system appears completely“frozen” or “hung” while process<strong>in</strong>g an end-user command or operation. Usersgenerally wait a few seconds and then reboot the system by press<strong>in</strong>g the powerbutton. Usually the GPU is busy process<strong>in</strong>g <strong>in</strong>tensive graphics operations, typicallydur<strong>in</strong>g game-play. No screen updates occur, and users assume that their system isfrozen.October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。Both <strong>W<strong>in</strong>dows</strong> Vista and <strong>W<strong>in</strong>dows</strong> 7 try to detect these problematic hang situationsand recover a responsive desktop dynamically. The system does not reboot, but <strong>in</strong>most cases the screen flickers as it is redrawn. However, some older DirectXapplications render a black screen at the end of recovery, and users must restartthese applications. These GPU hangs are referred to as time-out detection andrecovery errors (TDRs). Figure 1-1 illustrates the timeout detection and recoveryprocess. For more details on this process, see section on “Timeout Detection andRecovery of GPUs through WDDM” on the WHDC website.TimeoutDetectionScheduler attempts topreempt processGPU ResetOS <strong>in</strong>forms WDDM driverabout resetDesktopRecoveryAdapter wide resetFigure 1-1. Timeout Detection and Recovery of GPUs through WDDMTDRs happen when a GPU command has taken too long to complete or the hardwareis hung. TDRs enable the operat<strong>in</strong>g system to detect that the UI is not responsive.<strong>W<strong>in</strong>dows</strong> 8 <strong>in</strong>troduces the follow<strong>in</strong>g enhancements to enhance GPU fault tolerance:• GPU preemption• TDR improvementsGPU preemptionThe <strong>W<strong>in</strong>dows</strong> desktop and application UI are <strong>in</strong>creas<strong>in</strong>gly dependent on the GPU. Asmore applications leverage the GPU (e.g., IE9, <strong>W<strong>in</strong>dows</strong> Live and others) it becomesharder to guarantee low-latency access to the GPU to any one application. When ahigh-priority request to access the GPU comes from an application, the GPU might bebusy work<strong>in</strong>g on previously submitted work and may take a very long time tocomplete this work, effectively delay<strong>in</strong>g the high-priority request. As the <strong>W<strong>in</strong>dows</strong> UIis becom<strong>in</strong>g <strong>in</strong>creas<strong>in</strong>gly touch focused, it is critical for applications try<strong>in</strong>g to respondto touch <strong>in</strong>put to get access to the GPU with the lowest latency possible to give usersimmediate feedback on their <strong>in</strong>teraction.October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。This is made worse by the fact that an <strong>in</strong>creas<strong>in</strong>gly larger number of applications aretry<strong>in</strong>g to broadly use GPUs. <strong>W<strong>in</strong>dows</strong> 7 saw the <strong>in</strong>troduction of the Direct ComputeAPI targeted specifically at scenarios want<strong>in</strong>g to leverage the GPU for compute<strong>in</strong>tensiveapplications such as video encod<strong>in</strong>g. Leverag<strong>in</strong>g this API today is notwithout risk. It is very easy for an application to <strong>in</strong>advertently submit a very complexand long workload to the GPU, which may take a significant amount of time tocomplete dur<strong>in</strong>g which the GPU is unavailable to other applications, result<strong>in</strong>g <strong>in</strong> anunresponsive desktop.The GPU is a shared resource that is used by many applications, <strong>in</strong>clud<strong>in</strong>g UIrender<strong>in</strong>g of most applications. Today, applications have to cooperate to avoid thisproblem. Cooperat<strong>in</strong>g is accomplished by attempt<strong>in</strong>g to break down the work to beexecuted on the GPU <strong>in</strong>to small batches to avoid us<strong>in</strong>g the GPU exclusively forextended periods of time. This task is much more difficult than it may sound as theperformance characteristics of a GPU can change drastically from low end to high endand batch size is a comb<strong>in</strong>ation of application and driver behavior. There is no strictguidel<strong>in</strong>e on how to achieve this either. It is essentially accomplished through trialand error one application/developer at a time.GPU preemption offers a better solution to this problem by mak<strong>in</strong>g it possible topreempt long-runn<strong>in</strong>g workloads on the GPU. This should free developers fromhav<strong>in</strong>g to f<strong>in</strong>e tune their application for every GPU, allow<strong>in</strong>g them to fully leveragethe power of the GPU while ma<strong>in</strong>ta<strong>in</strong><strong>in</strong>g great desktop responsiveness and allow<strong>in</strong>gscenarios such as touch to feel great no matter what other applications are do<strong>in</strong>g.This feature is “required” for WDDM v1.2 drivers (Full Graphics and Render Only). Formore <strong>in</strong>formation on the feature requirements, please refer to the relevant WHCKdocumentation on “Device.Graphics…GPU Preemption” and“Device.Graphics….FlipOnVSyncMmIo”.TDR improvementsThe goal of an improved mechanism for GPU Timeout Detection and Recovery (orTDR) is improved resiliency to GPU hangs that are triggered by long-runn<strong>in</strong>g graphicsworkloads tak<strong>in</strong>g more than the allowed time for work completion. On previous<strong>W<strong>in</strong>dows</strong> operat<strong>in</strong>g systems, repeated operations like these result <strong>in</strong> repeated TDRsthat eventually crash the system. Applications that compute on the GPU and thatsubmit work to the GPU can also take much longer to complete than the allowedtimeout.With the <strong>W<strong>in</strong>dows</strong> 8 feature support for GPU preemption, these tasks can executewithout <strong>in</strong>terfer<strong>in</strong>g with other applications, <strong>in</strong>clud<strong>in</strong>g the desktop w<strong>in</strong>dow manager(DWM). The TDR improvements consist of the follow<strong>in</strong>g changes:• Detection change: Allow applications to opt out of TDR if they want to (longrunn<strong>in</strong>gcompute scenarios). This class of applications won’t hit a TDR for runn<strong>in</strong>gfor extended periods of time as long as the application rema<strong>in</strong>s pre-emptible andallows other tasks to run.• GPU reset: As shown below on figure 1-2, only the hung GPU eng<strong>in</strong>e is reset. Onlyapplications runn<strong>in</strong>g on that GPU eng<strong>in</strong>e are affected by the TDR. Applicationsrunn<strong>in</strong>g on other GPU eng<strong>in</strong>es keep runn<strong>in</strong>g.October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。• Repeated TDRs: A misbehav<strong>in</strong>g process that causes seven or more successivefaults will not be allowed to touch the GPU for its lifetime.Non-<strong>in</strong>teractive applications such as Compute applications will be allowed to use asmuch of the GPU as they need as long as they don’t <strong>in</strong>terfere with other applicationsthat need to share the GPU. In order to keep the desktop responsive, applicationsthat negatively <strong>in</strong>terfere with DWM will be penalized by prevent<strong>in</strong>g them fromaccess<strong>in</strong>g the GPU.TimeoutDetectionScheduler attempts topreempt processGPU ResetOS <strong>in</strong>forms WDDM driverabout resetDesktopRecoveryPer Eng<strong>in</strong>e resetFigure 1-2. TDR ImprovementsThis feature is “required” for WDDM v1.2 drivers (Full Graphics and Render Only).This requirement applies for GPUs that support “Per-Eng<strong>in</strong>e Reset”. WDDM v1.2drivers must cont<strong>in</strong>ue support<strong>in</strong>g the pre-<strong>W<strong>in</strong>dows</strong> 8 TDR behavior of adapter-widereset and restart. For more <strong>in</strong>formation on the feature requirements, please refer tothe relevant WHCK documentation on “Device.Graphics…TDR Resiliency”.Improved ability to diagnose performance problemsWith an <strong>in</strong>creas<strong>in</strong>g number of graphics applications utiliz<strong>in</strong>g GPU resources, theability to diagnose graphics performance and video memory-related issues hasbecome critical.User-mode driver logg<strong>in</strong>gTo get a more actionable breakdown of video memory, the WDDM driver needs toexpose the relationship between Direct3D resources and video memory allocations.This will be possible on <strong>W<strong>in</strong>dows</strong> 8 with the <strong>in</strong>troduction of additional UMD logg<strong>in</strong>g<strong>in</strong>terfaces. With this <strong>in</strong>formation added to ETW traces it will be possible to see thevideo memory allocations from the API perspective.For developers, it will clarify memory costs that are currently very hard to see, like<strong>in</strong>ternal fragmentation or the impact of rapidly discard<strong>in</strong>g surfaces. It will also enableOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。Microsoft to work better with customers and partners who provide traces for analysisof performance problems. In particular it will help overcome a common block<strong>in</strong>gpo<strong>in</strong>t <strong>in</strong> <strong>in</strong>vestigat<strong>in</strong>g memory-related performance issues: the application is us<strong>in</strong>gtoo large a work<strong>in</strong>g set, but cannot tell which API resources or calls are caus<strong>in</strong>g theproblem.This feature is “required” for WDDM v1.2 drivers (Full Graphics and Render Only). AWDDM v1.2 driver must expose the relationship between Direct3D resources andvideo memory allocations by implement<strong>in</strong>g the UMD ETW <strong>in</strong>terfaces. In addition tothe logg<strong>in</strong>g events, the driver must be able to report all exist<strong>in</strong>g mapp<strong>in</strong>gs betweenresources and allocations at any po<strong>in</strong>t <strong>in</strong> time. For more <strong>in</strong>formation on the featurerequirements, please refer to the relevant WHCK documentation on“Device.Graphics…UMD Logg<strong>in</strong>g”.Disabl<strong>in</strong>g Frame Po<strong>in</strong>ter Omission (FPO) optimizationOn <strong>W<strong>in</strong>dows</strong> 7, WDDM v1.1 kernel-mode drivers were required to disable FPOoptimizations. This is to improve the ability to diagnose performance problems. For<strong>W<strong>in</strong>dows</strong> 8, the same requirement will be applicable for all WDDM v1.2 drivers (usermode and kernel mode), mak<strong>in</strong>g it easier to debug performance issues related to FPOon the field.XPS rasterization on the GPUThis feature does not require any IHV code or behavioral changes. However XPSrasterization is a new usage pattern that could potentially expose bugs orassumptions <strong>in</strong> driver code. This requirement will help ensure a quality pr<strong>in</strong>t<strong>in</strong>gexperience on <strong>W<strong>in</strong>dows</strong> 8 with third-party video drivers.This feature is “required” for WDDM v1.2 drivers (Full Graphics and Render Only).WDDM v1.2 drivers must be able to pass XPS rasterization display conformance tests<strong>in</strong> order to ensure high-quality <strong>W<strong>in</strong>dows</strong> pr<strong>in</strong>t<strong>in</strong>g. The XPS rasterization displayconformance requirement tests whether a WDDM v1.2 GPU driver produces correctrasterization results when used by Direct2D <strong>in</strong> the context of the XPS rasterizer. TheXPS rasterizer is a system component used heavily by <strong>W<strong>in</strong>dows</strong> pr<strong>in</strong>t drivers torasterize an XML Paper Specification (XPS) Pr<strong>in</strong>t Descriptor Language (PDL). Todeterm<strong>in</strong>e the correctness of rasterization results, a comparison is performedbetween the results obta<strong>in</strong>ed from the XPS rasterizer when executed on a systemwith the subject WDDM 1.2 GPU driver, and results obta<strong>in</strong> from basel<strong>in</strong>e use of theXPS rasterizer.Improvements to enhance end-user experienceThis section elaborates on the various <strong>W<strong>in</strong>dows</strong> 8 enhancements that improve theend-user experience:• Stereoscopic 3D• Direct3D 11 video playback improvements• Optimized screen rotation support• Conta<strong>in</strong>er ID support for displaysOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。• Seamless handoff of the display control between <strong>W<strong>in</strong>dows</strong> and the WDDMgraphics driver (bugcheck support and PnP Start /Stop <strong>in</strong> WDDM)Stereoscopic 3D<strong>W<strong>in</strong>dows</strong> 8 provides the ideal platform for further <strong>in</strong>novations for partners to delivera solid media experience. <strong>W<strong>in</strong>dows</strong> 8 enables a rich graphical composition model thatallows for more flexibility to support video playback and stereoscopic 3D scenarios.<strong>W<strong>in</strong>dows</strong> 8 will provide a consistent API and DDI platform for Stereoscopic 3Dscenarios such as gam<strong>in</strong>g and video playback.Stereoscopic 3D will be enabled only on systems that have all the components thatare stereoscopic 3D capable. These <strong>in</strong>clude 3D-capable display hardware, graphicshardware, peripherals, and software applications. The Stereo design <strong>in</strong> the graphicsstack is such that the particular visualization or display technology used is agnostic tothe operat<strong>in</strong>g system. The Graphics driver talks to the <strong>Display</strong> and has knowledgeabout the display capabilities through the standardized EDID structure. The driver willenumerate Stereo capabilities only when it recognizes such a display connected tothe system.<strong>Display</strong> Control Panel Sett<strong>in</strong>g: The Stereoscopic display sett<strong>in</strong>g will be part of theexist<strong>in</strong>g Screen Resolution tab as shown on Figure 1-3.Figure 1-3. Stereo 3D <strong>Display</strong> Sett<strong>in</strong>gThe Stereo sett<strong>in</strong>g is a checkbox with the follow<strong>in</strong>g states:• Not available (either grayed out or <strong>in</strong>visible): On systems <strong>in</strong>capable of Stereodisplays.• Set to Enabled (checkedchecked): This is the default sett<strong>in</strong>g on systems capable of Stereodisplays and implies “Stereo-On-Demand”. By default, the DWM will be Monomode as mentioned <strong>in</strong> the above section. DWM will switch to Stereo mode onlywhen a stereo application is launched by the user (on-demand). Note that theDWM may thus be <strong>in</strong> Mono or Stereo mode when this checkbox is checked.• Set to Disabled (uncheckedunchecked): DWM will be <strong>in</strong> Mono mode if the user hasunchecked this sett<strong>in</strong>g. Stereo applications will present <strong>in</strong> Mono mode <strong>in</strong> thiscase.System builders are encouraged to test their stereo driver packages with the abovesett<strong>in</strong>gs to ensure correct functionality.October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。Stereo 3D functionality can be enabled only on DirectX 10–capable hardware andhigher. However, s<strong>in</strong>ce Direct3D 11 APIs work on DirectX 9.x and 10.x hardware, allWDDM v1.2 drivers must support and be tested thoroughly to ensure Direct3D 11APIs work on all <strong>W<strong>in</strong>dows</strong> 8 hardware.Although Stereoscopic 3D is an “optional” WDDM v1.2 feature, Direct3D 11 APIsupport is required on all <strong>W<strong>in</strong>dows</strong> 8 hardware. So WDDM v1.2 drivers (Full Graphicsand Render devices) must support Direct3D 11 APIs by add<strong>in</strong>g support for crossprocessshar<strong>in</strong>g of texture arrays. This is to ensure that Stereo applications don’t havefailures <strong>in</strong> mono modes. For more <strong>in</strong>formation on this requirement, please refer tothe WHCK documentation on “Device.Graphics…Stereoscopic 3D Array Support”.Other relevant WHCK requirements are “Device.Graphics…Process<strong>in</strong>g StereoscopicVideo Content” and “Device.<strong>Display</strong>.Monitor.Stereoscopic 3D Modes”.D3D11 Video Playback ImprovementsWith wider adoption of D3D10 technologies <strong>in</strong> ma<strong>in</strong>stream applications, someapplication developers would like to treat all content the same, which is challeng<strong>in</strong>gwith video on D3D9 API and all 2D and 3D content processed through the D3D10 or11 APIs. <strong>W<strong>in</strong>dows</strong> 8 will <strong>in</strong>troduce video on D3D11, whereby applications can use as<strong>in</strong>gle API to do all graphical operations <strong>in</strong> one complete API. Follow<strong>in</strong>g are the keybenefits:• D3D11 video simplifies <strong>in</strong>teroperability between Media Foundation and DirectXtechnologies.• Us<strong>in</strong>g multiple APIs is harder to program, so us<strong>in</strong>g video on D3D11 simplifies theprogramm<strong>in</strong>g experience and makes the program more efficient. The new APIprovides more flexibility <strong>in</strong> us<strong>in</strong>g decoded and processed video.• The new D3D11 API for Stereoscopic 3D video unpacks stereo frames <strong>in</strong>to leftandright-eye images.• Parity with DXVA2.0 and DXVA-HD <strong>in</strong> decod<strong>in</strong>g and video process<strong>in</strong>g capabilities.• Works <strong>in</strong> Session 0 for transcod<strong>in</strong>g scenarios.D3D11 API support is required on all <strong>W<strong>in</strong>dows</strong> 8 hardware. This feature is “required”for WDDM v1.2. For more <strong>in</strong>formation on the feature requirements, please refer tothe relevant WHCK documentation on “Device.Graphics…D3D11 Video Decode” and“Device.Graphics…D3D11 Video Process<strong>in</strong>g” requirements.Optimized Screen Rotation Support<strong>W<strong>in</strong>dows</strong> 8 ensures a flicker-free screen rotation experience by ensur<strong>in</strong>g that theoutput from the graphics adapter stays enabled dur<strong>in</strong>g rotational mode change.Traditionally on desktops and laptops systems, screen rotation is not a frequentlyutilized scenario. On <strong>W<strong>in</strong>dows</strong> 8 there are new form factor devices where screenrotation is utilized as a ma<strong>in</strong>stream scenario. <strong>W<strong>in</strong>dows</strong> 8 enables optimizations to thedisplay <strong>in</strong>frastructure and the WDDM driver to ensure the monitor synch staysenabled dur<strong>in</strong>g this transition.In addition to the changes <strong>in</strong> the OS, the follow<strong>in</strong>g documented DDI(DxgkDdiUpdateActiveVidPnPresentPath) is utilized to set rotation. This DDI has beenused to update the Gamma Ramp, but was always documented to allow updat<strong>in</strong>gOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。other aspects of the VidPn paths. This DDI already supports rotation and should workcorrectly on most drivers. Go<strong>in</strong>g forward, this documented DDI will be utilized thisway for enabl<strong>in</strong>g smooth rotation.End users can experience the smooth rotation transition when the follow<strong>in</strong>g are true:• The platform is runn<strong>in</strong>g a WDDM 1.2.• The desktop composition manager is on and actively compos<strong>in</strong>g.• The mode change request is determ<strong>in</strong>ed to be “compatible” for do<strong>in</strong>g the smoothmode transition. Two modes are compatible if they have the same dimensions(width and height), topology, refresh rates, pixel formats, and stride, and differonly <strong>in</strong> screen orientation (that is, are rotated).This feature is “required” on all WDDM v1.2 drivers that support rotated modes.Conta<strong>in</strong>er ID support for displays (visually represent<strong>in</strong>g devices that areembedded with<strong>in</strong> a device)In recent years, display manufacturers have started <strong>in</strong>troduc<strong>in</strong>g various newcapabilities <strong>in</strong> the monitor devices to provide a better user experience. In particular,USB hubs are popular connectors on monitors for connect<strong>in</strong>g mouse and keyboard.Also, connectors like HDMI support audio and therefore often audio speakers areembedded <strong>in</strong> monitors as well. Many new display devices also support touchcapabilities. This provides a great user experience by reduc<strong>in</strong>g wire clutter on theuser desktops.At the same time it’s important to visually represent the connectivity and state ofthese devices to the user <strong>in</strong> an <strong>in</strong>tuitive way. Dur<strong>in</strong>g <strong>W<strong>in</strong>dows</strong> 7, Microsoft <strong>in</strong>troducedthe concept of the “Devices and Pr<strong>in</strong>ters” page. As illustrated <strong>in</strong> figure 1.4, TheDevices and Pr<strong>in</strong>ters folder shows the user the <strong>in</strong>stalled devices that are connected tothe PC, mak<strong>in</strong>g it a handy way to check on a pr<strong>in</strong>ter, music player, camera, mouse, ordigital picture frame (just to name a few). At the same time, it also groups thosedevices that are conta<strong>in</strong>ed with<strong>in</strong> the same piece of hardware to make it easier forusers to discover all their drivers.October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。Figure 1-4. Visual representation of the Devices and Pr<strong>in</strong>ters FolderThe devices are grouped if they conta<strong>in</strong> the same conta<strong>in</strong>er ID. Dur<strong>in</strong>g <strong>W<strong>in</strong>dows</strong> 7Microsoft <strong>in</strong>troduced the concept of conta<strong>in</strong>er ID for devices. Per MSDN, “A conta<strong>in</strong>erID is a system-supplied device identification str<strong>in</strong>g that uniquely groups the functionaldevices associated with a s<strong>in</strong>gle-function or multifunction device <strong>in</strong>stalled <strong>in</strong> thecomputer.”For the concept of conta<strong>in</strong>er ID to be successful, all the device classes <strong>in</strong> <strong>W<strong>in</strong>dows</strong>must support it and the entire ecosystem needs to implement it <strong>in</strong> their hardware. In<strong>W<strong>in</strong>dows</strong> 7, if multiple monitors that support audio are plugged <strong>in</strong>, it is not easy to forthe user to determ<strong>in</strong>e which display maps to which audio end po<strong>in</strong>ts. The same existsfor touch digitizers. In <strong>W<strong>in</strong>dows</strong> 8, the display device class adds support for conta<strong>in</strong>erID. This will make it possible for all the functions of a display device to report thesame conta<strong>in</strong>er ID and get visually paired <strong>in</strong> the <strong>W<strong>in</strong>dows</strong> UI and the APIs.To demonstrate the work flow, consider a monitor with audio speakers embedded.The follow<strong>in</strong>g is the work flow:1. User connects the monitor us<strong>in</strong>g a HDMI cable.2. WDDM driver reports the presence of display device to the <strong>W<strong>in</strong>dows</strong> graphicsstack.3. <strong>W<strong>in</strong>dows</strong> graphics stack queries WDDM driver for the Conta<strong>in</strong>er ID, us<strong>in</strong>g thenew DDIs <strong>in</strong>troduced <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8.4. Graphics driver queries the monitor for the conta<strong>in</strong>er ID and passes it back to<strong>W<strong>in</strong>dows</strong>.5. At the same time the audio driver must pass the exact same conta<strong>in</strong>er ID tothe <strong>W<strong>in</strong>dows</strong> audio stack.6. Now if viewed <strong>in</strong> the Devices and Pr<strong>in</strong>ters, the display and speakers will getgrouped together.October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。In some cases, it is possible that the display device does not conta<strong>in</strong> a conta<strong>in</strong>er ID. Insuch a case, <strong>W<strong>in</strong>dows</strong> will automatically generate a unique conta<strong>in</strong>er ID us<strong>in</strong>g themanufacturer ID, product ID and serial number obta<strong>in</strong>ed from the EDID. Becausethese values are unique, it will ensure that the conta<strong>in</strong>er ID is also unique. <strong>W<strong>in</strong>dows</strong> 8provides a new DDI that passes the same <strong>in</strong>formation to the WDDM driver so that itcan be passed to the audio driver to generate the same conta<strong>in</strong>er ID.This feature is “required” on WDDM v1.2 drivers (Full Graphics and <strong>Display</strong> Onlydevices). For more <strong>in</strong>formation on the feature requirements, please refer to therelevant WHCK documentation on “Device.Graphics…Conta<strong>in</strong>er ID Support”.Seamless handoff of the display control between <strong>W<strong>in</strong>dows</strong> and theWDDM graphics driverThere are a few scenarios where the ownership of driv<strong>in</strong>g the display is transitionedbetween <strong>W<strong>in</strong>dows</strong> operat<strong>in</strong>g system, WDDM graphics driver and firmware. Currently,these transitions are associated with hardware or the software gett<strong>in</strong>g reset orreconfigured. This can cause screen flashes and flickers. The follow<strong>in</strong>g are thescenarios where such glitches can be seen today:1. From firmware to <strong>W<strong>in</strong>dows</strong> operat<strong>in</strong>g system:a. Transition<strong>in</strong>g a system from a low power state (shutdown, sleep,hibernate) to an active state2. From <strong>W<strong>in</strong>dows</strong> operat<strong>in</strong>g system to WDDM graphics driver:a. Transition<strong>in</strong>g a system from a lower power state (shutdown, sleep,hibernate) to an active stateb. <strong>Driver</strong> upgradec. Manually/programmatically enable the driver3. From WDDM graphics driver to <strong>W<strong>in</strong>dows</strong> operat<strong>in</strong>g system:a. <strong>Driver</strong> upgradeb. Bugcheckc. Manually/programmatically disable the driverThe glitch is most noticeable <strong>in</strong> the “bug check” case that causes a transition from ahigh resolution to a low color and lower-resolution mode (resolution falls back to 640x 480 at 4 bits per pixel). The <strong>in</strong>terface goes <strong>in</strong>to a text-only mode with a bluebackground.The glitches caused dur<strong>in</strong>g these scenarios are not an ideal user experience. However,with advances <strong>in</strong> the hardware it is now possible to elim<strong>in</strong>ate some of these flashesand provide a fast and fluid transition. <strong>W<strong>in</strong>dows</strong> 8 <strong>in</strong>troduces updates to the WDDMto enable such a smooth transition.From Firmware to <strong>W<strong>in</strong>dows</strong> operat<strong>in</strong>g systemAll <strong>W<strong>in</strong>dows</strong> 8 systems targeted for client SKUs are required to support a graphicsmode via UEFI GOP. The UEFI GOP is also required to set the native tim<strong>in</strong>g and nativeresolution on the <strong>in</strong>tegrated panel of the system. When <strong>W<strong>in</strong>dows</strong> is ready to takeover the ownership of the display, the UEFI GOP will hand over a frame buffer thatcan be used to scan out to the display. At this time <strong>W<strong>in</strong>dows</strong> will not attempt to resetOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。the display tim<strong>in</strong>gs or the resolution. <strong>W<strong>in</strong>dows</strong> will simply use the provided framebuffer, elim<strong>in</strong>at<strong>in</strong>g one screen flash. For more <strong>in</strong>formation on this “system” WHCKrequirement, please refer to the WHCK documentation for “System…FirmwareUEFI.display”From <strong>W<strong>in</strong>dows</strong> operat<strong>in</strong>g system to WDDM graphics driverWhen <strong>W<strong>in</strong>dows</strong> hands over ownership of the display to the WDDM graphics driver, itis <strong>in</strong>dicated by a PnP start of the device by call<strong>in</strong>g the DxgkDdiStartDevice DDI. At thistime, typically the screen is blanked as the WDDM graphics driver takes over thedisplay control. <strong>W<strong>in</strong>dows</strong> 8 <strong>in</strong>troduces a new API that allows the driver to query the<strong>W<strong>in</strong>dows</strong> operat<strong>in</strong>g system for the exact state of the current frame buffer. With this<strong>in</strong>formation, it is possible for the driver to keep the display controller active and notcause a re-sync of the monitor. Because the driver also has detailed <strong>in</strong>formationabout the frame buffer, it is possible to perform a smoother transition.From WDDM graphics driver to <strong>W<strong>in</strong>dows</strong> operat<strong>in</strong>g systemWhen the WDDM graphics driver wants to hand over display control to the <strong>W<strong>in</strong>dows</strong>operat<strong>in</strong>g system, it is <strong>in</strong>dicated by a PnP stop of the device by call<strong>in</strong>g theDxgkDdiStopDevice. At this time, typically the screen is blanked as the <strong>W<strong>in</strong>dows</strong>operat<strong>in</strong>g system take over the display control. <strong>W<strong>in</strong>dows</strong> 8 <strong>in</strong>troduces a new DDI thatrequires the WDDM driver to setup a frame buffer configured for scan out. The<strong>W<strong>in</strong>dows</strong> operat<strong>in</strong>g system can render <strong>in</strong>to this frame buffer while it is <strong>in</strong> control ofthe display. This makes it possible to perform a smooth transition. For more technical<strong>in</strong>formation of this hand off, please refer to the relevant WHCK documentation on“Device.Graphics…PnP Stop Start Support”.Tak<strong>in</strong>g over the display control without disabl<strong>in</strong>g the WDDM graphics driverSometimes, the operat<strong>in</strong>g system experiences an unrecoverable error and has to“bug check” the system. In such a case, there are certa<strong>in</strong> cases where the <strong>W<strong>in</strong>dows</strong>operat<strong>in</strong>g system has to take over the display control but does not have the ability tostop the WDDM graphics driver. This is particularly true when the operat<strong>in</strong>g system isexperienc<strong>in</strong>g an unrecoverable error and needs to “bug check” the system.<strong>W<strong>in</strong>dows</strong> 8 provides two new <strong>in</strong>terfaces (DxgkDdiSystem<strong>Display</strong>Enable andDxgkDdiSystem<strong>Display</strong>Write) that allow the system to seamlessly transition <strong>in</strong>to astate where <strong>W<strong>in</strong>dows</strong> is able to display the error screen while ma<strong>in</strong>ta<strong>in</strong><strong>in</strong>g thegraphical <strong>in</strong>terface at a high resolution and color depth. This will elim<strong>in</strong>ate the jarr<strong>in</strong>guser experience <strong>in</strong> this error case.This feature is “required” on WDDM v1.2 drivers (Full Graphics and <strong>Display</strong> Only). Formore <strong>in</strong>formation on the feature requirements, please refer to the relevant WHCKdocumentation on “Device.Graphics…<strong>Display</strong> Output Control”.<strong>Driver</strong> optimizations that can help reduce power consumptionEnergy efficiency has become a key dist<strong>in</strong>guish<strong>in</strong>g feature for system builders today.The follow<strong>in</strong>g two features emphasize the optimizations that can be made on WDDMv1.2 drivers to reduce the energy footpr<strong>in</strong>t on <strong>W<strong>in</strong>dows</strong> 8 based platforms.• DirectFlipOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。• GPU power management of idle and active powerDirectFlipThis feature allows for special optimizations to the composition model to reducepower consumption. The follow<strong>in</strong>g scenarios benefit from the DirectFlip optimization:• To ensure optimal power consumption for video playback and other full screenscenarios, provid<strong>in</strong>g DirectFlip enables a m<strong>in</strong>imum amount of memory bandwidthfor display<strong>in</strong>g full-screen content while ensur<strong>in</strong>g smooth transitions between fullscreenapplications, other applications, and the desktop environment.• The user wants to view a video or run an application that covers the entire screen.When the user enters or exits the application or notifications appear over theapplication, no mode change is required and the experience is smooth.Furthermore, the user enjoys extended battery life on mobile devices becausememory bandwidth requirements are reduced for full screen applications likevideo.This feature is “required” for all “Full Graphics” WDDM v1.2 drivers. For more<strong>in</strong>formation on the feature requirements, please refer to the relevant WHCKdocumentation on “Device.Graphics…DirectFlip” requirements.GPU power management of idle and active power<strong>W<strong>in</strong>dows</strong> 8 will provide new GPU power management <strong>in</strong>frastructure that will allowWDDM v1.2 drivers to power manage <strong>in</strong>dividual devices or a set of devices. The new<strong>in</strong>frastructure will provide a standardized mechanism to support F-state and P-statepower management <strong>in</strong> collaboration with the operat<strong>in</strong>g system.The key scenarios for this are:• Mobile form factor device is able to go <strong>in</strong>to idle and save power due to <strong>in</strong>dividualsystem components shutt<strong>in</strong>g down if not <strong>in</strong> use.• New <strong>W<strong>in</strong>dows</strong> System-on-Chip (SoC)–based devices behave like consumerdevices and mobile phones where they turn on immediately when needed, sav<strong>in</strong>genergy.This feature is “optional” for all WDDM v1.2 drivers. For more <strong>in</strong>formation on thefeature requirements, please refer to the relevant WHCK documentation on“Device.Graphics…Runtime Power Management” requirements.Advances to the display Infrastructure<strong>W<strong>in</strong>dows</strong> 8 has further enhancements and optimizations to the display <strong>in</strong>frastructureto further improve the user experience. Key <strong>in</strong>vestments <strong>in</strong>clude the follow<strong>in</strong>g:• Microsoft Basic <strong>Display</strong> <strong>Driver</strong>• Desktop Duplication API• Support for headless systemsOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。Microsoft Basic <strong>Display</strong> <strong>Driver</strong>On <strong>W<strong>in</strong>dows</strong> 8, The Microsoft Basic <strong>Display</strong> <strong>Driver</strong> will be the <strong>in</strong>-box display driverthat will replace both the XDDM VGA Save and VGA PnP drivers. Follow<strong>in</strong>g are thekey benefits of this change:• MSBDD helps enable a consistent end user and developer experience, because itis compatible with the newer versions of DirectX APIs and technologies such asthe “Desktop Composition”.• Server scenarios can benefit from the higher functionality (specifically, featureslike reboot-less updates, dynamic start and stop, and so on) provided by theWDDM driver model.• MSBDD will support Unified Extensible Firmware Interface (UEFI) Graphics OutputProtocol (GOP).• MSBDD will work on both XDDM and WDDM hardware.The Microsoft Basic <strong>Display</strong> <strong>Driver</strong> is the default <strong>in</strong>-box display driver that is loadeddur<strong>in</strong>g setup, <strong>in</strong> safe mode, <strong>in</strong> the absence of an IHV graphics driver or when the<strong>in</strong>box <strong>in</strong>stalled graphics IHV driver is not work<strong>in</strong>g or is disabled. The primary purposeof this driver is to enable <strong>W<strong>in</strong>dows</strong> to write to the display controller’s l<strong>in</strong>ear framebuffer.This driver can either use the video BIOS to manage modes/resolutions on a s<strong>in</strong>glemonitor, or on UEFI platforms this driver <strong>in</strong>herits the l<strong>in</strong>ear frame buffer set dur<strong>in</strong>gboot, and no mode/resolution changes are possible.As represented <strong>in</strong> Figure 1-5, the follow<strong>in</strong>g are the scenarios where MSBDD will getutilized:• Server: The MSBDD will be usable on server configurations that lack WDDMcapablegraphics hardware.• <strong>W<strong>in</strong>dows</strong> setup: In the early phases of OS setup just before the f<strong>in</strong>al boot, onlythe MSBDD is loaded:• User has an old platform that is currently <strong>in</strong> work<strong>in</strong>g condition though it hasno <strong>in</strong>-box graphics driver support on <strong>W<strong>in</strong>dows</strong> 8; user upgrades to <strong>W<strong>in</strong>dows</strong> 8and uses the MSBDD for the setup, <strong>in</strong>stallation; and retriev<strong>in</strong>g an IHV driver ifone is available.• <strong>Driver</strong> <strong>in</strong>stallation:• When a user is <strong>in</strong>stall<strong>in</strong>g a new WDDM IHV driver, the MSBDD is utilizeddur<strong>in</strong>g the transition (from the po<strong>in</strong>t when the old WDDM IHV driver isun<strong>in</strong>stalled to the po<strong>in</strong>t before the new IHV driver is <strong>in</strong>stalled).• When a user is fac<strong>in</strong>g problems <strong>in</strong>stall<strong>in</strong>g the latest WDDM IHV driver, theuser/system could choose to disable the current graphics driver and fallbackto us<strong>in</strong>g the MSBDD.• <strong>Driver</strong> upgrade: With MSBDD, there is no need to go through a system rebootwhen upgrad<strong>in</strong>g to the IHV-recommended driver.October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。• Safe mode: In this mode, only trusted drivers get loaded which is the MicrosoftBasic <strong>Display</strong> <strong>Driver</strong> (MSBDD).Safe ModeServer<strong>W<strong>in</strong>dows</strong>SetupMicrosoftBasic<strong>Display</strong><strong>Driver</strong><strong>Driver</strong>Upgrade<strong>Driver</strong>InstallationFigure 1-5. Scenarios supported by Microsoft Basic <strong>Display</strong> <strong>Driver</strong>Desktop Duplication API<strong>W<strong>in</strong>dows</strong> 8 <strong>in</strong>troduces a new DXGI-based API that will make it easier for ISVs tosupport desktop collaboration and remote desktop access scenarios. Suchapplications are widely used <strong>in</strong> enterprise and educational scenarios. Theseapplications share a common requirement: access to the contents of a desktop withthe ability to transport the contents to a remote location. The new DesktopDuplication APIs will provide access to the desktop contents.Currently there is no <strong>W<strong>in</strong>dows</strong> API that allows an application to implement thisscenario seamlessly. Therefore, applications use mirror drivers, screen scrapp<strong>in</strong>g, andother proprietary means to access the contents of the desktop. However, thesemethods have a set of limitations:• It can be challeng<strong>in</strong>g to optimize the performance.• It is possible that these solutions don’t support newer graphics-render<strong>in</strong>g APIsbecause they are released after the shipp<strong>in</strong>g of the product.• The operat<strong>in</strong>g system does not always provide rich metadata to assist with theoptimization.• Not all solutions are compatible with the desktop composition <strong>in</strong>troduced s<strong>in</strong>ce<strong>W<strong>in</strong>dows</strong> Vista.<strong>W<strong>in</strong>dows</strong> 8 <strong>in</strong>troduces a new DXGI-based API called Desktop Duplication API. This APIprovides access to the contents of the desktop via bitmaps and associated metadataOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。for optimizations. This API works with the Aero theme enabled and is not dependenton the graphics API used by the applications. If the user is able to view the applicationon the local console then it will be remotable. This means that even full screenDirectX applications can be duplicated. The API does provide protection aga<strong>in</strong>staccess<strong>in</strong>g protected video content.The API allows an application to ask <strong>W<strong>in</strong>dows</strong> to provide access to the contents of thedesktop along monitor boundaries. The application may choose to duplicate one ormore of the active displays.When an application requests duplication:• <strong>W<strong>in</strong>dows</strong> renders the desktop and provides a copy to the application.• Each rendered frame is placed <strong>in</strong> GPU memory.• Each rendered frame comes with metadata:• Dirty region• Screen-to-screen moves• Mouse cursor <strong>in</strong>formation• Application is provided access to frame and metadata.• Application is responsible for process<strong>in</strong>g each frame:• Application may choose to optimize based on dirty region.• Application may choose to use hardware acceleration to process move andmouse data.• Application may choose to use hardware acceleration for compression beforestream<strong>in</strong>g out.For detailed documentation and samples, please refer to the <strong>W<strong>in</strong>dows</strong> SoftwareDevelopment Kit.Support for headless systems<strong>W<strong>in</strong>dows</strong> 8 will have support for boot<strong>in</strong>g without any graphics hardware, and this willbe accomplished with a stub display output if no display devices are found. This stubdisplay is implemented as part of the <strong>in</strong>-box Microsoft Basic <strong>Display</strong> <strong>Driver</strong>. The stubdisplay is used when no PnP driver is available, so this doesn’t require any third-partydrivers and it works for both normal operation and for system crashes, so nohardware or firmware support is required to fake a display device.On architectures <strong>in</strong> which VGA has previously been the norm, the Basic <strong>Display</strong> <strong>Driver</strong>requires positive confirmation that VGA is not present; otherwise it assumes thatVGA hardware is available and that the system is not headless. System firmwareshould set the VGA Not Present flag <strong>in</strong> the IAPC_BOOT_ARCH field of FADT and ifthere is any VBIOS, it should implement an empty mode list through the VESA BIOSExtensions (VBE). The <strong>in</strong>tent is that these mechanisms should work to <strong>in</strong>dicate thatVGA is not present even if the system implements a VBIOS with <strong>in</strong>t 10h mode 12hsupport for compatibility with previous versions of <strong>W<strong>in</strong>dows</strong>. In the absence of VBEsupport, the Basic <strong>Display</strong> <strong>Driver</strong> will use a display <strong>in</strong>itialized by the boot loader so aheadless system should not represent a work<strong>in</strong>g display through UEFI GOP.October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。PART 2:Direct3D Features & RequirementsIn this part:Introduction.................................................................................................................. 30DirectX feature improvements on <strong>W<strong>in</strong>dows</strong> 8......................................................... 30Pixel formats (5551, 565, 4444)........................................................................... 31Double-precision shader functionality................................................................. 32Sum of absolute differences............................................................................. 33Target-<strong>in</strong>dependent rasterization (TIR)................................................................33SampleCount =1 (Limited TIR on 10, 10.1 & 11)...............................................33No overwrite and discard..................................................................................... 34Render<strong>in</strong>g content on a tile-based deferred-render<strong>in</strong>g (TBDR) architecture...34Updat<strong>in</strong>g resources on a TBDR architecture.....................................................34UAVs at every stage..............................................................................................34Cross-process shar<strong>in</strong>g of texture arrays (for support<strong>in</strong>g Stereoscopic 3D)..........35Unordered access views with multi-sample anti-alias sample access................. 35Logic ops............................................................................................................... 36Improved control of constant buffers.................................................................. 36Partial constant buffer updates........................................................................ 36Offsett<strong>in</strong>g constant buffer updates.................................................................. 36Clearview.............................................................................................................. 37Tileable copy flag..................................................................................................37Same-surface blits................................................................................................ 37Software requirements.............................................................................................38Hardware requirements........................................................................................... 39October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。IntroductionDirect3D offers a rich collection of 3D graphics APIs, widely used by softwareapplications for complex visualization and game development. Depend<strong>in</strong>g on thecapability of the graphics adapter, Direct3D allows applications to utilize hardwareacceleration for the entire 3D render<strong>in</strong>g pipel<strong>in</strong>e or for partial acceleration. Newerversions of the Direct3D APIs like Direct3D 9Ex and Direct3D 10 are available onlyfrom <strong>W<strong>in</strong>dows</strong> Vista onwards, because WDDM provides the display driver <strong>in</strong>terfacesneeded for the functionality. Figure 2-1 illustrates the <strong>in</strong>cremental versions ofDirect3D APIs supported on the various versions of WDDM.WDDM v1.2 D3D11.1WDDM v1.1 D3D11D310.1WDDM v1.0D3D9.xD3D10Figure 2-1. Direct3D APIs supported on the various versions of WDDMThe follow<strong>in</strong>g sections elaborate on the feature improvements, and <strong>W<strong>in</strong>dows</strong> 8Direct3D software and hardware requirements.DirectX feature improvements on <strong>W<strong>in</strong>dows</strong> 8<strong>W<strong>in</strong>dows</strong> 8 <strong>in</strong>cludes DirectX feature improvements that benefit developers, end usersand system manufacturers <strong>in</strong> the follow<strong>in</strong>g areas:• Higher performance for DirectX applications on lower-power hardwareconfigurations: Pixel formats (5551, 565, 4444)• High Level Shader model performance improvements that can enable developersto do more on the GPU without <strong>in</strong>volv<strong>in</strong>g the CPU: Double-precision shaderfunctionality• Higher performance anti-alias<strong>in</strong>g path for D2D applications: Target-<strong>in</strong>dependentrasterization• Higher performance for Direct3D11.1 applications on mobile platforms andpower constra<strong>in</strong>t devices that use tile-based renderers: No overwrite and discardOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。• Added capabilities to enable shader debugg<strong>in</strong>g at all shader stages on DirectX11.1 hardware: UAVs at every stage• Enabl<strong>in</strong>g Direct3D 11 applications to implement high-quality render<strong>in</strong>g algorithmswithout need<strong>in</strong>g to allocate memory for large numbers of samples: Unorderedaccess views with multi-sample anti-alias sample access• Improvements to deferred shad<strong>in</strong>g techniques: Logic ops• Efficient buffer management for game developers: Improved control of constantbuffersPixel formats (5551, 565, 4444)To better support graphics <strong>in</strong> low-power configurations us<strong>in</strong>g DirectX, the follow<strong>in</strong>gDirectX9 pixel formats must be supported <strong>in</strong> Direct3D for <strong>W<strong>in</strong>dows</strong> 8:• DXGI_FORMAT_B5G6R5_UNORM• DXGI_FORMAT_B5G5R5A1_UNORM• DXGI_FORMAT_B4G4R4A4_UNORMThese additional formats will provide <strong>in</strong>creased performance on lower-powerhardware <strong>in</strong> DirectX applications. These formats are supported on all GPUs to date.Table 2.1 describes the required support for these formats depend<strong>in</strong>g on thehardware feature level.Table 2.1 Required format support depend<strong>in</strong>g on hardware feature levelsCapability FeatureLevel 9_xFeatureLevel 10.0FeatureLevel10.1FeatureLevel11+Typed No required require requireBufferInputAssemblerVertexBufferdNo optional optionalTexture1D No required requiredTexture2D required required requiredTexture3D No required requiredTextureCub required required requireedShader ld* No required requiredShader required required requiresample*d(withfilter<strong>in</strong>g)doptionalrequiredrequiredrequiredrequiredrequiredrequiredOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。CapabilityFeatureLevel 9_xFeatureLevel 10.0FeatureLevel10.1FeatureLevel11+Shadergather4No No No requiredMipmap required required requiredrequiredMipmapAuto-GenerationRenderTargetBlendableRenderTargetrequiredfor 565,optionalfor 4444,5551requiredfor 565,no for4444,5551requiredfor 565,no for4444,5551requiredfor 565,optionalfor 4444,5551requiredfor 565,optionalfor 4444,5551requiredfor 565,optionalfor 4444,5551required for565,optional for4444,5551required for565,optional for4444,5551required for565,optional for4444,5551UAV TypedStoreCPULockable4x MSAA optional optional required for565,optional for4444,5551required for565,optional for4444,5551required for565,optional for4444,5551required for565,optional for4444,5551No No No optionalrequired required require required drequired for565,optional for4444,55518x MSAA optional optional optionalrequired for565,optional for4444,5551October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。CapabilityOther MSAASampleCountMultisample ResolveMultisample LoadFeatureLevel 9_xFeatureLevel 10.0FeatureLevel10.1optional optional optionalrequired(if MSAAsupported)for 565,no for4444,5551Norequired(if MSAAsupported) for565,optionalfor 4444,5551required(if MSAAsupported) for565,optionalfor 4444,5551)required for565,optional for4444,5551required for565,optional for4444,5551FeatureLevel11+optionalrequired for565,optional for4444,5551required for565,optional for4444,5551Double-precision shader functionalityWDDM 1.2 drivers that support double precision are now required to supportadditional double-precision float<strong>in</strong>g-po<strong>in</strong>t <strong>in</strong>structions <strong>in</strong> HLSL shader model 5 <strong>in</strong> allshader stages. The new <strong>in</strong>structions are: Double-Precision Reciprocal, DoublePrecision Divide, and Double Precision Fused Multiply-Add. Now that the runtimecan pass these <strong>in</strong>structions directly to the driver, the implementation is able tooptimize their performance, or implement them as specialized s<strong>in</strong>gle <strong>in</strong>structions <strong>in</strong>hardware.Note: Developers must ensure that they are runn<strong>in</strong>g with FEATURE_LEVEL_11 orhigher with double-precision support (D3D11_FEATURE_DOUBLES), and on a WDDMv1.2 driver, <strong>in</strong> order to use these features.Sum of absolute differencesImage process<strong>in</strong>g is a critical application <strong>in</strong> modern devices. A common operation ispattern match<strong>in</strong>g or search. Video-encod<strong>in</strong>g operations typically search for match<strong>in</strong>gsquare tiles (typically 8x8 or 16x16), and image recognition algorithms search formore general shapes identified by a bit mask. To improve the performance of thesescenarios, a new <strong>in</strong>tr<strong>in</strong>sic has been added to HLSL for Shader <strong>Model</strong> 5.0 <strong>in</strong> all shaderstages. This <strong>in</strong>tr<strong>in</strong>sic msad4() corresponds to and generates a group of MSAD<strong>in</strong>structions <strong>in</strong> the shader IL. All WDDM 1.2 drivers must support this <strong>in</strong>structioneither directly <strong>in</strong> hardware, or as a set of other <strong>in</strong>structions (emulated).October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。Notes:• Ideally, the MSAD <strong>in</strong>struction should be implemented such that overflow results<strong>in</strong> saturation, not <strong>in</strong> a wrap behavior. However, for this release, developers arewarned that overflow behavior is undef<strong>in</strong>ed.• Developers must check to ensure that they are runn<strong>in</strong>g with FEATURE_LEVEL_11or higher on a WDDM v1.2 driver to use this feature. Developers must not relyon result accuracy for accumulation values that overflow (that is, go above65535).Target-<strong>in</strong>dependent rasterization (TIR)This feature provides a high performance anti-alias<strong>in</strong>g path for Direct2D usagescenarios <strong>in</strong>volv<strong>in</strong>g high-quality anti-alias<strong>in</strong>g of structured graphics. TIR enablesDirect2D to move the rasterization step from the CPU to the GPU while stillpreserv<strong>in</strong>g the Direct2D anti-alias<strong>in</strong>g semantics and quality. Us<strong>in</strong>g this capability, thesoftware layer can evaluate a large number of sub-pixel sample positions forcoverage, yet only allocate the memory required for a smaller number ofsamples. This enables the performance advantage of us<strong>in</strong>g the GPU to render butreta<strong>in</strong><strong>in</strong>g the image quality of a CPU-rendered implementation. This allows a s<strong>in</strong>glesample to be broadcast to multiple samples of a multi-sample anti-aliased rendertarget.SampleCount =1 (Limited TIR on 10, 10.1 & 11)D3D10.0 - D3D11.0 hardware (and Feature Level 10_0 - 11_0) supportsForcedSampleCount set to 1 (and any sample count for Render Target View) alongwith the described limitations (for example, no depth/stencil).For 10_0, 10_1 and 11_0 hardware, when ForcedSampleCount is set to 1, l<strong>in</strong>erender<strong>in</strong>g cannot be configured to 2-triangle (quadrilateral)–based mode (that is, theMultisampleEnable state cannot be set to true). This limitation isn't present for 11_1hardware. Note the nam<strong>in</strong>g of the 'MultisampleEnable' state is mislead<strong>in</strong>g because itno longer has anyth<strong>in</strong>g to do with enabl<strong>in</strong>g multisampl<strong>in</strong>g; <strong>in</strong>stead it is now one of thecontrols along with AntialiasedL<strong>in</strong>eEnable for select<strong>in</strong>g l<strong>in</strong>e-render<strong>in</strong>g mode.This limited form of target-<strong>in</strong>dependent rasterization, ForcedSampleCount = 1, closelymatches a mode that was present <strong>in</strong> D3D10.0 but due to API changes becameunavailable for D3D10.1 and D3D11 (and Feature Levels 10_1 and 11_0). In D3D10.0this mode was the center-sampled render<strong>in</strong>g even on an MSAA surface that wasavailable when MultisampleEnable was set to false (and this could be toggled bytoggl<strong>in</strong>g MultisampleEnable). In D3D10.1+, MultisampleEnable no longer affectsmultisampl<strong>in</strong>g (despite the name) and only controls l<strong>in</strong>e-render<strong>in</strong>g behavior.No overwrite and discardRender<strong>in</strong>g content on a tile-based deferred-render<strong>in</strong>g (TBDR) architectureRender targets <strong>in</strong> Direct3D 11.1 can now support a discard behavior via a new set ofresource APIs. Developers will need to be aware of this capability and call anadditional Discard() method to run more efficiently on TBDR architectures (with nopenalty to traditional graphics hardware). This will improve performance on mobileplatforms and other power-constra<strong>in</strong>ed devices that use tiled renderers.October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。Updat<strong>in</strong>g resources on a TBDR architectureBecause TBDR architectures complete multiple passes over the same commandbuffer, there needs to be special care to tell the driver when a portion of a subresourcewas not modified dur<strong>in</strong>g a previous draw call. Hav<strong>in</strong>g a NO_OVERWRITEusage on UpdateSubResource can help the driver <strong>in</strong> manag<strong>in</strong>g resources where noprevious draw calls were made to a region of a texture. This simply requires that thedeveloper <strong>in</strong>form the driver of the application’s <strong>in</strong>tent of either discard<strong>in</strong>g theexist<strong>in</strong>g data, or protect<strong>in</strong>g it from overwrite. This will enable more efficientrender<strong>in</strong>g on TBDR architectures while <strong>in</strong>troduc<strong>in</strong>g no penalties when run ontraditional desktop hardware.New variants of the Direct3D 11 UpdateSubresource() and CopySubresourceRegionsAPIs (which both update a portion of a GPU surface) provide an addition Flags fieldwhere NO_OVERWRITE or DISCARD can be specified.These APIs will drive not only the Direct3D 11.1 DDI but also Direct3D 9 DDIs. So newdrivers for any DX9+ hardware are required to support revised BLT, BUFBLT, VOLBLT,and TEXBLT DDIs add<strong>in</strong>g the flags discussed here.These are also required to be supported for all Direct3D 10+ hardware with Direct3D11.1 drivers.UAVs at every stageIn Direct3D11, the number of UAVs was limited to eight at the Compute Shader andto eight comb<strong>in</strong>ed (RTVs + UAVs) at the Pixel Shader. In DX11.1 the number that canbe bound has been <strong>in</strong>creased. For DirectCompute the limit is now 64, and forgraphics the comb<strong>in</strong>ed total bound at the output merger is 64 (that is, graphics canhave 64 m<strong>in</strong>us the up-to-eight potentially used by RTVs).Unordered access views can now be accessed from any shader stage, but still comeout of the total for the graphics pipel<strong>in</strong>e.Add<strong>in</strong>g UAVs at every shader stage allows developers to add debugg<strong>in</strong>g <strong>in</strong>formationto the pipel<strong>in</strong>e. This ease of development will make <strong>W<strong>in</strong>dows</strong> a more desirableplatform for writ<strong>in</strong>g GPU-accelerated applications.This requires a DX11.1 feature level.Cross-process shar<strong>in</strong>g of texture arrays (for support<strong>in</strong>g Stereoscopic 3D)While Stereoscopic 3D is an “optional” WDDM v1.2 system feature, there isunderly<strong>in</strong>g <strong>in</strong>frastructure that must be implemented by all WDDM v1.2 device driversregardless of whether they support the Stereoscopic 3D system feature.DirectX 10 (or greater)–capable graphics hardware must support cross-processshar<strong>in</strong>g of texture arrays. This provides a basis for enabl<strong>in</strong>g Stereoscopic 3D. TheWDDM v1.2 Direct3D DDIs require support of arrayed buffers as render targets<strong>in</strong>dependent of hardware feature level.This ensures that Stereo applications won’t have failures <strong>in</strong> mono modes. Forexample: Even for cases when Stereo is not enabled on the system, applicationsshould still be able to create Stereo swap cha<strong>in</strong>s or arrayed buffers as render targetsOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。and then call Present() – <strong>in</strong> that case, only the left view is displayed (or if the “prefer”right DXGI present flag is set, only the right view).Hence WDDM v1.2 drivers (Full Graphics & Render devices) must support Direct3D 11APIs by add<strong>in</strong>g support for cross process shar<strong>in</strong>g of texture arrays. In earlier versionscross-process shared resources could be only s<strong>in</strong>gle-layer surfaces. In <strong>W<strong>in</strong>dows</strong> 8, themaximum size of a shared array is two elements (as is sufficient for stereo). For more<strong>in</strong>formation on this requirement, please refer to the WHCK documentation on“Device.Graphics…Stereoscopic 3D Array Support”. Other relevant WHCKrequirements are “Device.Graphics…Process<strong>in</strong>g Stereoscopic Video Content” and“Device.<strong>Display</strong>.Monitor.Stereoscopic 3D Modes”.Unordered access views with multi-sample anti-alias sample accessDirect3D 11 allowed rasterization to unordered access views (UAVs) with noRTVs/DSVs bound. Even though UAVs can have arbitrary sizes, the implementation isable to operate the rasterizer us<strong>in</strong>g the pixel dimensions of the viewport/scissorrectangle. The sample pattern for DirectX11 hardware is s<strong>in</strong>gle sample only. TheDirectX 11.1 hardware specification expands to allow multiple samples. This is avariation of target-<strong>in</strong>dependent rasterization where only UAVs are bound for output.UAV-only render<strong>in</strong>g with multisampl<strong>in</strong>g at the rasterizer is now possible by key<strong>in</strong>g offthe ForcedSampleCount state described earlier, with the sample patterns limited to 0,1, 4, and 8 (not 16, which TIR supports). (The UAVs themselves are not multi-sampled<strong>in</strong> terms of allocation.) A sett<strong>in</strong>g of 0 is equivalent to the sett<strong>in</strong>g 1 - s<strong>in</strong>gle samplerasterization.Shaders can request pixel-frequency <strong>in</strong>vocation with UAV-only render<strong>in</strong>g. Howeverrequest<strong>in</strong>g sample-frequency <strong>in</strong>vocation is <strong>in</strong>valid (produces undef<strong>in</strong>ed shad<strong>in</strong>gresults).The SampleMask rasterizer state does not affect rasterization behavior at allhere.Support for this feature is available on DirectX 11.0+ hardware <strong>in</strong>clud<strong>in</strong>g hardwarethat does not support full 11_1 level of target-<strong>in</strong>dependent rasterization with RTVs.The driver can report that it supports UAV-only multi-sample anti-alias sample access(MSAA) render<strong>in</strong>g (imply<strong>in</strong>g 4 and 8 samples are both supported). All DirectX 11+hardware supports 1. If the hardware can do full 11_1 target-<strong>in</strong>dependentrasterization with RTVs (which requires 16-sample support), then UAV-only MSAArasterization support is required (mean<strong>in</strong>g 4 and 8 samples <strong>in</strong> the UAV-only case).This feature enables applications to implement high quality render<strong>in</strong>g algorithmssuch as analytic AA without need<strong>in</strong>g to allocate memory for large numbers of samples.Logic opsAllow<strong>in</strong>g for logic operations at the output merger allows software developers toperform some operations on images that are currently not possible. For example,they can compute masks much more effectively and easily and also implementmodern deferred-shad<strong>in</strong>g techniques for 3-D render<strong>in</strong>g.October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。Although this functionality exists <strong>in</strong> most 3D hardware, it is not currently as general asthe color blend<strong>in</strong>g is. As a result, the configuration of logic ops is constra<strong>in</strong>ed <strong>in</strong> thefollow<strong>in</strong>g ways:• When logic ops are used <strong>in</strong> the first RT blend desc, IndependentBlendEnable mustbe set to false, so that the same logic op applies to all RTs.• When logic ops are used, all RenderTargets bound must have a UINT or SINTformat (undef<strong>in</strong>ed render<strong>in</strong>g otherwise).WDDM v1.2 drivers (Full Graphics & Render devices) must support logic ops.Improved control of constant buffersPartial constant buffer updatesConstant buffers today require monolithic copies from source to dest<strong>in</strong>ation dur<strong>in</strong>gupdates that clobber the entire buffer. Where it is desired to update only a portion ofthe constant buffer, an offset for the writes is ideal. This ability to random-accesswrite <strong>in</strong>to a constant buffer has been requested by game developers and makesconstant buffer management much more natural and efficient. These capabilitieswere already supported for other buffer types, and are now added to constantbuffers <strong>in</strong> WDDM1.2 drivers.This feature must be supported for all Direct3D 10+ hardware with Direct3D 11.1drivers.For the developer, this is emulated on DX9 hardware so it works on all feature levels.Note: Either the NO_OVERWRITE or DISCARD flag must be specified.Offsett<strong>in</strong>g constant buffer updatesA common desire for high-performance game eng<strong>in</strong>es is to collect a large batch ofconstant buffer updates for constants to be referenced by separate Draw*() calls,each need<strong>in</strong>g its own constants, all at once. This is facilitated by allow<strong>in</strong>g theapplication to create a large buffer and then po<strong>in</strong>t<strong>in</strong>g <strong>in</strong>dividual shaders to regionswith<strong>in</strong> it (like a view, but without hav<strong>in</strong>g to make a whole object to describe the view).Constant buffers now can be created with a size larger than the maximum constantbuffer size addressable by an <strong>in</strong>dividual shader (at most 4096 16-byte elements -65kB, where each "element" is one four-component shader constant). The constantbuffer resource size is now limited only by the size of memory allocation the system iscapable of handl<strong>in</strong>g.When a constant buffer larger than 4096 elements is bound to the pipel<strong>in</strong>e via*SetShaderConstants() APIs such as VSSetShaderConstants(), it appears to the shaderas if it is only 4096 elements <strong>in</strong> size.A new variant of the *SetShaderConstants() APIs, *SetShaderConstants1() allows a"FirstConstant" and "ConstantCount" to be specified along with the b<strong>in</strong>d<strong>in</strong>g. Whenthe shader accesses a constant buffer bound this way it will appear as if it starts atthe specified "FirstConstant" offset (where 1 means 16 bytes) and has a size def<strong>in</strong>edby ConstantCount (number of 16-byte constants). This is basically a lightweightOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。"View" of a region of a larger constant buffer. (Both FirstConstant and ConstantCountmust be a multiple of 16).This feature must be supported by all WDDM v1.2 drivers for Direct3D 10+ hardware.The Direct3D 11 runtime emulates the appropriate behavior for Feature Level 9_x.ClearviewThis feature enables the implementation to perform an efficient clear operation on avideo memory resource, clear<strong>in</strong>g multiple rects <strong>in</strong> a s<strong>in</strong>gle API/DDI call. The API<strong>in</strong>cludes support for rectangles def<strong>in</strong><strong>in</strong>g a subset of the resource to be cleared. Thiscapability was supported <strong>in</strong> the DX9 DDI, and is now required for <strong>W<strong>in</strong>dows</strong> 8 drivers(WDDM 1.2). This approach results <strong>in</strong> improved performance for 2D operations suchas those used <strong>in</strong> imag<strong>in</strong>g and UI.Tileable copy flagTileable copy allows an application to notify the implementation that the imagesource and dest<strong>in</strong>ation are pixel aligned and will participate <strong>in</strong> no cross-pixelexchange of <strong>in</strong>formation <strong>in</strong> a subsequent render<strong>in</strong>g pass. This enables significantperformance improvements on some implementations that benefit from cach<strong>in</strong>gsubsets of the image data dur<strong>in</strong>g the copy operation. This capability was supported <strong>in</strong>the DX9 DDI, and is now required for <strong>W<strong>in</strong>dows</strong> 8 drivers (WDDM 1.2).Same-surface blitsMany UI operations such as scroll<strong>in</strong>g require transferr<strong>in</strong>g image data from oneportion of an image to another. This feature adds support for a copy operationwhere both source rectangle and dest<strong>in</strong>ation rectangle are <strong>in</strong> the sameimage/resource. In the case of overlapp<strong>in</strong>g source and dest<strong>in</strong>ation rectangles, thesituation must be handled correctly by the implementation/driver. This was alreadyrequired by the DX9 DDI and is now required <strong>in</strong> WDDM v1.2 for all hardware. Thisapproach results <strong>in</strong> significant performance improvements of key UI scenarios.Software requirementsFor <strong>W<strong>in</strong>dows</strong> 8, <strong>in</strong>dependent hardware vendors must write a WDDM v1.2 drivercapable of support<strong>in</strong>g the relevant Direct3D “feature level” user-mode driver (UMD)DDIs. For <strong>in</strong>stance, Direct3D 9–capable hardware must at least support the Direct3Dversion 9 DDI. These software requirements vary based on the DirectX hardware levelas specified on Table 2.2 below.Table 2.2 DirectX Software RequirementsDirectX HardwareSoftware RequirementsD3D9 Required: WDDM v1.2Required: D3D9 - UMD DDID3D10 Required: WDDM v1.2Required: D3D9 - UMD DDIRequired: D3D10- UMD DDIRequired: D3D11.1 - UMD DDIOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。DirectX HardwareSoftware RequirementsD3D10.1 Required: WDDM v1.2Required: D3D9 - UMD DDIRequired: D3D10- UMD DDIRequired: D3D10.1- UMD DDIRequired: D3D11.1 - UMD DDID3D11 Required: WDDM v1.2Required: D3D9 - UMD DDIRequired: D3D10- UMD DDIRequired: D3D10.1- UMD DDIRequired: D3D11 - UMD DDIRequired: D3D11.1 - UMD DDID3D11.1 Required: WDDM v1.2Required: D3D9 - UMD DDIRequired: D3D10- UMD DDIRequired: D3D10.1- UMD DDIRequired: D3D11 - UMD DDIRequired: D3D11.1 - UMD DDITable 2.3 elaborates on the new functionality that is exposed via User-mode driver(UMD) DDI changes on <strong>W<strong>in</strong>dows</strong> 8.Table 2.3 New functionality exposed via UMD changes <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8Software Spec ChangesD3D9 - UMD DDI exposes the follow<strong>in</strong>g new features <strong>in</strong> W<strong>in</strong>dow 8RequiredNo overwrite and discardRequiredTileable copy flagD3D11.1 - UMD DDI exposes the follow<strong>in</strong>g new features <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8 across FL 10, 10.1,11, and 11.1RequiredNo overwrite and discardRequiredSupport for cross-process shar<strong>in</strong>g of texture arrays (<strong>in</strong>clud<strong>in</strong>gStereoscopic 3D)RequiredTileable copy flagRequiredClearViewIf Implemented Logic opsRequiredPixel formats (5551, 565, 4444) - exact support varies across featurelevelRequiredSame surface BlitsRequiredPartial constant buffer updatesRequiredOffset constant buffer b<strong>in</strong>dRequiredImproved resource shar<strong>in</strong>gRequired SampleCount=1 (limited TIR on 10, 10.1, and 11)D3D11.1 - UMD DDI exposes the follow<strong>in</strong>g new features for feature level 11 & 11.1RequiredUAV-MSAAIf Implemented Double-precision shader functionalityRequiredMasked sum of absolute differences (MSAD)D3D11.1 - UMD DDI exposes the follow<strong>in</strong>g new features for feature level 11.1RequiredUAVs at every stageOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。Software Spec ChangesRequiredRequiredUAV-MSAA (at 16 samples)TIRHardware requirementsIndependent hardware vendors must follow the <strong>W<strong>in</strong>dows</strong> 8 Direct3D render<strong>in</strong>grequirements for hardware as specified on table 2.4 below and refer to the DirectXfeature level hardware DDK documentation for specifics.Table 2.4 Direct3D Render<strong>in</strong>g Requirements for HardwareDirectX HardwareVersionRequired/OptionalW<strong>in</strong>dow8 Render<strong>in</strong>g RequirementsD3D9 Required D3D9 HW SpecD3D10 Required D3D9 HW SpecRequired D3D10 HW SpecD3D10.1 Required D3D9 HW SpecRequired D3D10 HW SpecRequired D3D10.1 HW SpecD3D11 Required D3D9 HW SpecRequired D3D10 HW SpecRequired D3D10.1 HW SpecRequired D3D11 HW SpecD3D11.1 Required D3D9 HW SpecRequired D3D10 HW SpecRequired D3D10.1 HW SpecRequired D3D11 HW SpecRequired D3D11.1 HW SpecTable 2.5 provides guidance on the Direct3D hardware spec updates for <strong>W<strong>in</strong>dows</strong> 8.Table 2.5 Direct3D Render<strong>in</strong>g Requirements for HardwareHardware Spec ChangesD3D10 HW Spec changes for W<strong>in</strong>dow 8RequiredPixel formats (5551, 565, 4444) *RequiredSame-surface blits*If ImplementedLogic opsD3D10.1 HW Spec changes for <strong>W<strong>in</strong>dows</strong> 8RequiredPixel formats (5551, 565, 4444) *October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。Hardware Spec ChangesRequiredSame-surface blits*If Implemented Logic opsD3D11 HW Spec changes for <strong>W<strong>in</strong>dows</strong> 8RequiredPixel formats (5551, 565, 4444) *RequiredSame-surface blits *If Implemented UAV-MSAAIf Implemented Thread<strong>in</strong>g concurrent createsIf Implemented Thread<strong>in</strong>g command listsIf Implemented Double-precision supportIf Implemented Logic opsD3D11.1 HW Spec for <strong>W<strong>in</strong>dows</strong> 8RequiredRequiredRequiredRequiredRequiredRequiredIf ImplementedIf ImplementedIf ImplementedLogic opsPixel formats (5551, 565, 4444) *Same-surface blits *UAVs at every stageUAV-MSAATIRThread<strong>in</strong>g concurrent createsThread<strong>in</strong>g Command ListsDouble-precision support* Already <strong>in</strong> the Direct3D 9 hardware specification but previously weren’t exposed<strong>in</strong> Direct3D 10.October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。PART 3:Graphics INF RequirementsIn this part:Introduction.................................................................................................................. 43Updated Feature score directive.............................................................................. 43Updated friendly name.............................................................................................45SKU differentiation directive.................................................................................... 46SKU differentiation for device drivers.................................................................. 46General UNICODE requirement................................................................................47Installed display drivers directive............................................................................. 48Copy flags to support PNP stop directive................................................................. 48<strong>Driver</strong>\services start type directive.......................................................................... 49Capability override sett<strong>in</strong>gs to disable OpenGL........................................................49[Version] section directives...................................................................................... 49[SourceDiskNames] section directives......................................................................50General x64 directives.............................................................................................. 50General <strong>in</strong>stall section directives..............................................................................51[Str<strong>in</strong>g] section changes for localized str<strong>in</strong>gs........................................................... 51<strong>Driver</strong> DLL for display adapter or chipset has properly formatted file version........52October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。IntroductionWDDM drivers <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8 will require INF changes to the graphics driver. The mostnotable change is <strong>in</strong> the feature score. Newer WDDM v1.2 drivers will require ahigher feature score than exist<strong>in</strong>g WDDM drivers.Follow<strong>in</strong>g is the list of all relevant INF requirements for <strong>W<strong>in</strong>dows</strong> 8 graphics drivers.This section elaborates on each one of these:• Updated feature score for all <strong>W<strong>in</strong>dows</strong> 8 display drivers• Updated friendly name for WDDM v1.2 display drivers• SKU differentiation directive for all <strong>W<strong>in</strong>dows</strong> 8 display drivers• General requirement that the INF encoded as UNICODE for all <strong>W<strong>in</strong>dows</strong> 8 displaydrivers• Installed<strong>Display</strong><strong>Driver</strong>s directive• Copy flag for the user-mode driver b<strong>in</strong>ary• <strong>Driver</strong>/Services Start Type directive• CapabilityOverride sett<strong>in</strong>gs• Version section directive• SourceDiskNames directive• x64 architecture directive• General <strong>in</strong>stall section directives• Str<strong>in</strong>g section changes for localized str<strong>in</strong>gs• <strong>Driver</strong> DLL for display adapter or chipset has properly formatted file versionUpdated Feature score directiveThis is a new general <strong>in</strong>stallation sett<strong>in</strong>g that is required for all <strong>W<strong>in</strong>dows</strong> 8 <strong>Display</strong><strong>Driver</strong> <strong>Model</strong> drivers. Table 3.1 shows the values that apply for <strong>W<strong>in</strong>dows</strong> 8 (keychanges highlighted <strong>in</strong> red).Table 3.1 Feature Scores for WDDM versions<strong>Driver</strong> <strong>Model</strong>Feature Score<strong>W<strong>in</strong>dows</strong> 8 WHQLE0<strong>W<strong>in</strong>dows</strong> 8 Pre-Release <strong>Driver</strong><strong>W<strong>in</strong>dows</strong> 7 WHQL<strong>W<strong>in</strong>dows</strong> 7 Inbox<strong>W<strong>in</strong>dows</strong> Vista WHQL<strong>W<strong>in</strong>dows</strong> Vista InboxMicrosoft Basic <strong>Display</strong> <strong>Driver</strong>XDDM 3 rd partyXDDM Inbox <strong>in</strong> <strong>W<strong>in</strong>dows</strong> VistaVGAE3E6ECF6F8FBFC (Not used <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8)FD (Not used <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8)FE (Not used <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8)October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。<strong>Driver</strong> <strong>Model</strong>Default or No ScoreUnsigned driversFeature ScoreFFNo feature score = FFNote: IHVs should not <strong>in</strong>sert the feature score for their XDDM drivers. Microsoft willapply the appropriate feature score through the Class Installer or <strong>in</strong> the <strong>in</strong>-box XDDMdriver INFs.Each operat<strong>in</strong>g system release <strong>in</strong>troduces a new feature score “value”. For <strong>W<strong>in</strong>dows</strong>8 this is “E3” for <strong>in</strong>-box drivers and “E0” for WHQL drivers. The feature score is usedby the operat<strong>in</strong>g system when decid<strong>in</strong>g which driver to <strong>in</strong>stall when multiple possibledrivers exist. The <strong>in</strong>tent is that a driver with a higher ranked feature score is chosenbecause it is considered “better”.All <strong>W<strong>in</strong>dows</strong> 8 <strong>in</strong>-box driver devices have a higher ranked feature score than allexist<strong>in</strong>g <strong>W<strong>in</strong>dows</strong> 7 drivers, because the <strong>in</strong>-box drivers have been tested on <strong>W<strong>in</strong>dows</strong>8 and that the exist<strong>in</strong>g <strong>W<strong>in</strong>dows</strong> 7 drivers have not. This will result <strong>in</strong> the <strong>in</strong>-boxWidows 8 driver replac<strong>in</strong>g exist<strong>in</strong>g <strong>W<strong>in</strong>dows</strong> 7 drivers. An IHV may use the “E0”feature score with a <strong>W<strong>in</strong>dows</strong> 7 driver if:• The driver has been tested on <strong>W<strong>in</strong>dows</strong> 8.• The driver has “fixes” that make it better than the Inbox driver.• The driver is <strong>in</strong>tended to be reta<strong>in</strong>ed on upgrade to <strong>W<strong>in</strong>dows</strong> 8.Here are the elements used to choose the best match on a driver <strong>in</strong> order from mostto least significant:1. Signaturea. Signedb. Unsigned2. Scopea. Specificb. Basic - DNF_BASIC_DRIVER3. Signature scorea. With<strong>in</strong> signedi. #def<strong>in</strong>e SIGNERSCORE_LOGO_PREMIUM 0x0D000001ii.#def<strong>in</strong>e SIGNERSCORE_LOGO_STANDARD 0x0D000002iii. #def<strong>in</strong>e SIGNERSCORE_INBOX 0x0D000003iv. #def<strong>in</strong>e SIGNERSCORE_UNCLASSIFIED 0x0D000004 //UNCLASSIFIED == INBOX == STANDARD == PREMIUM whenthe SIGNERSCORE_MASK filter is appliedv.#def<strong>in</strong>e SIGNERSCORE_WHQL 0x0D000005 // baseWHQL.vi. #def<strong>in</strong>e SIGNERSCORE_AUTHENTICODE 0x0F000000b. With<strong>in</strong> unsignedi. #def<strong>in</strong>e SIGNERSCORE_UNSIGNED 0x80000000ii.#def<strong>in</strong>e SIGNERSCORE_W9X_SUSPECT 0xC0000000iii. #def<strong>in</strong>e SIGNERSCORE_UNKNOWN 0xFF0000004. Feature Score, for displaya. <strong>W<strong>in</strong>dows</strong> 8 WHQL E0b. <strong>W<strong>in</strong>dows</strong> 8 Pre-Release <strong>Driver</strong> E3October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。c. <strong>W<strong>in</strong>dows</strong> 7 WHQL E6d. <strong>W<strong>in</strong>dows</strong> 7 Inbox ECe. <strong>W<strong>in</strong>dows</strong> Vista WHQL F6f. <strong>W<strong>in</strong>dows</strong> Vista Inbox F8g. Microsoft Basic <strong>Display</strong> <strong>Driver</strong> FBh. XDDM 3rd party FC (Not used <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8)i. XDDM Inbox <strong>in</strong> <strong>W<strong>in</strong>dows</strong> Vista FD (Not used <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8)j. VGA FE (Not used <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8)k. Default or No Score FFl. Unsigned drivers FFm. No Feature score FF5. Match type (INF matches are listed under the models section asDescription=Install Section, HWID, CompatID. With 0 or 1 HW IDs and 0 ormore CompatIDs)a. Device HardwareID == INF HardwareIDb. Device HardwareID == INF CompatIDc. Device CompatID == INF HardwareIDd. Device CompatID == INF CompatID6. Match ranka. Priority of match with<strong>in</strong> list of matches from device7. <strong>Driver</strong> date8. <strong>Driver</strong> version numberUpdated friendly nameThis is a localizable str<strong>in</strong>g name requirement for all <strong>W<strong>in</strong>dows</strong> 8 <strong>in</strong>-box display driverINFs. All <strong>W<strong>in</strong>dows</strong> 8 <strong>in</strong>-box drivers are to use the E3 feature score, regardless offriendly name. The friendly name will reflect the driver model supported by the INFper below.For WDDM 1.2 drivers that were tested on <strong>W<strong>in</strong>dows</strong> 8 and are be<strong>in</strong>g <strong>in</strong>cluded <strong>in</strong> thebox <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8, (Microsoft Corporation – WDDM v1.2) must be appended to thedevice name, as shown <strong>in</strong> the follow<strong>in</strong>g example.;; Localizable Str<strong>in</strong>gs;IHV_DeviceName.XXX = “Foo Device Name (Microsoft Corporation – WDDM v1.2)”Note: To easily highlight drivers for test<strong>in</strong>g only, that are go<strong>in</strong>g to enable <strong>W<strong>in</strong>dows</strong> 8–specific optional features, “optimized for <strong>W<strong>in</strong>dows</strong> 8”, I strongly suggest the follow<strong>in</strong>gso that end users can easily see that it’s not a standard <strong>W<strong>in</strong>dows</strong> 8 driver. (Thisshould make bugs easier to triage as well).For example: WDDM v1.2 specific workIHV_DeviceName.XXX = “Foo Device Name (Eng<strong>in</strong>eer<strong>in</strong>g Sample – WDDM v1.2)”For WDDM 1.1 drivers that were tested on <strong>W<strong>in</strong>dows</strong> 8 and are be<strong>in</strong>g <strong>in</strong>cluded <strong>in</strong> thebox <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8, (Microsoft Corporation – WDDM v1.1) must be appended to thedevice name, as shown <strong>in</strong> the follow<strong>in</strong>g example.October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。;; Localizable Str<strong>in</strong>gs;IHV_DeviceName.XXX = “Foo Device Name (Microsoft Corporation – WDDM v1.1)”For WDDM 1.0 drivers that were tested on <strong>W<strong>in</strong>dows</strong> 8 and are be<strong>in</strong>g <strong>in</strong>cluded <strong>in</strong> thebox <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8, (Microsoft Corporation – WDDM v1.0) must be appended to thedevice name, as shown <strong>in</strong> the follow<strong>in</strong>g example.;; Localizable Str<strong>in</strong>gs;IHV_DeviceName.XXX = “Foo Device Name (Microsoft Corporation – WDDM v1.0)”SKU differentiation directiveAs of <strong>W<strong>in</strong>dows</strong> Server 2008 and <strong>W<strong>in</strong>dows</strong> Vista SP1, the <strong>in</strong>-box display driver INFswere modified to <strong>in</strong>clude a new value that represented the drivers as “Client Only”and that they would not <strong>in</strong>stall on “Server SKUs”. This new directive is now requiredfor all display drivers <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8.In <strong>W<strong>in</strong>dows</strong> Vista RTM the follow<strong>in</strong>g values were used.X86:[Manufacturer]%ATI% = ATI.Mfg[ATI.Mfg]In Vista SP1\Server 2008 the follow<strong>in</strong>g values were used;X86:[Manufacturer]%ATI% = ATI.Mfg,NTx86...1[ATI.Mfg.NTx86...1]X64:[Manufacturer]%ATI% = ATI.Mfg,NTamd64...1[ATI.Mfg.NTamd64...1]For <strong>W<strong>in</strong>dows</strong> 8, the same values used for <strong>W<strong>in</strong>dows</strong> Vista SP1 and <strong>W<strong>in</strong>dows</strong> Server2008 are to be used.October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。SKU differentiation for device driversIHVs can use “ProductType” INF values to <strong>in</strong>dicate that a given INF is valid only forserver or client platforms. This works on <strong>W<strong>in</strong>dows</strong> XP and later operat<strong>in</strong>g systemsand the changes are relatively simple to implement.This means that even if a client-only driver package is present <strong>in</strong> the driver store of aserver system, that driver would not be <strong>in</strong>stallable. To do so, someone would have tohack the INF and re-import the driver package as unsigned.Details: The “INF Manufacturer Section” description <strong>in</strong> the DDK shows add“TargetOSVersion” to filter device <strong>in</strong>stallations based on various criteria. One of thesecriteria is “ProductType”, which can be used to specify a category of SKUs that thepackage can be <strong>in</strong>stalled on. These are the values def<strong>in</strong>ed for ProductType:0x0000001 (VER_NT_WORKSTATION)0x0000002 (VER_NT_DOMAIN_CONTROLLER)0x0000003 (VER_NT_SERVER)For any given architecture, say x64, here is how a typical INF would be decorated to<strong>in</strong>stall on any SKU:[Manufacturer]%MSFT%=<strong>Model</strong>s,amd64[<strong>Model</strong>s.NTamd64]In order to restrict this INF to <strong>in</strong>stall on client only, you need to add aProductType of “1” to the decoration. The number may be expressed as decimal orhexadecimal… the documentation shows hexadecimal, but I will use decimal <strong>in</strong> theexample for simplicity.[Manufacturer]%MSFT%=<strong>Model</strong>s,amd64...1; models section for workstation[<strong>Model</strong>s.NTamd64...1...1]For server, the syntax breaks it down to <strong>in</strong>stall on a client and a pla<strong>in</strong> server. Eachof these has its own product type… unfortunately the INF syntax needs you tospecify both to cover both cases. Thus you need to duplicate the entire modelssection to really cover the server SKU:[Manufacturer]%MSFT%=<strong>Model</strong>s,amd64...1...1amd64...3...3October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。; models section for client[<strong>Model</strong>s.NTamd64...1...1]IHV_DeviceName.XXX = “Foo Generic Device Name (Microsoft Corporation –WDDM v1.2)”IHV_DeviceName.YYY = “Foo Enthusiast Device Name (Microsoft Corporation –WDDM v1.2)”; models section for Server[<strong>Model</strong>s.NTamd64...3...3]IHV_DeviceName.XXX = “Foo Generic Name (Microsoft Corporation – WDDMv1.2)”IHV_DeviceName.ZZZ = “Foo Datacenter Name (Microsoft Corporation – WDDMv1.2)”General UNICODE requirementINF files should be saved, encoded as UNICODE; they must not be ANSI.To check for UNICODE <strong>in</strong> INF files1. Use Notepad to open the INF file.2. On the File menu, click Save As.3. If “ANSI” appears <strong>in</strong> the Encod<strong>in</strong>g field of the dialog box, change the encod<strong>in</strong>g to“Unicode” and save the file under a new name.Figure 3-1 shows the Save As dialog box for a file that has ANSI encod<strong>in</strong>g.Figure 3-1. Save As Dialog Box that has ANSI encod<strong>in</strong>gThe proper default value is shown below on Figure 3-2.Figure 3-2. Save As Dialog Box that has Unicode encod<strong>in</strong>gInstalled display drivers directiveOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。This is a new software device sett<strong>in</strong>g that gives the proper name for the UMD<strong>in</strong>stalled as part of this driver package.HKR,, Installed<strong>Display</strong><strong>Driver</strong>s,%REG_MULTI_SZ%, UserMode<strong>Driver</strong>Name1,UserMode<strong>Driver</strong>Name2, UserMode<strong>Driver</strong>NameWow1, UserMode<strong>Driver</strong>NameWow2For example:X86:HKR,, Installed<strong>Display</strong><strong>Driver</strong>s,%REG_MULTI_SZ%, r200umdX64:HKR,, Installed<strong>Display</strong><strong>Driver</strong>s,r200umd64, r200umd64va%REG_MULTI_SZ%, r200umd, r200umdva,Copy flags to support PNP stop directiveThis is a new file section flag that is required for <strong>W<strong>in</strong>dows</strong> Vista <strong>Display</strong> <strong>Driver</strong> <strong>Model</strong><strong>in</strong> order to support reboot-less driver upgrades.Note: This is required only for the user-mode driver b<strong>in</strong>aries, not the kernel-modedriver entry.For example:;; File sections;[r200.M<strong>in</strong>iport]r200.sys[r200.<strong>Display</strong>]r200umd.dll,,,0x00004000r200umd2.dll,,,0x00004000; COPYFLG_IN_USE_TRY_RENAME; COPYFLG_IN_USE_TRY_RENAME<strong>Driver</strong>\services start type directiveThis is a service <strong>in</strong>stallation sett<strong>in</strong>g requirement for all display drivers. WDDM driversare PnP so must be demand started, StartType =3.For example:;; Service Installation Section;October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。[R200_Service_Inst]ServiceType = 1 ; SERVICE_KERNEL_DRIVERStartType = 3 ; SERVICE_DEMAND_STARTErrorControl = 0 ; SERVICE_ERROR_IGNORELoadOrderGroup = VideoServiceB<strong>in</strong>ary = %12%\r200.sysCapability override sett<strong>in</strong>gs to disable OpenGLThis is a software device sett<strong>in</strong>g for all <strong>in</strong>-box display INFs to ensure that no <strong>in</strong>-boxdrivers are exposed to possible <strong>in</strong>teroperability issues with out-of-box OpenGL ICDs.For example:[R200_SoftwareDeviceSett<strong>in</strong>gs]HKR,, CapabilityOverride, %REG_DWORD%, 0x8[Version] section directivesAll <strong>in</strong>box drivers must NOT reference the layout.<strong>in</strong>f file.All <strong>in</strong>box drivers must NOT reference any catalog files.For example:[Version]Signature="$<strong>W<strong>in</strong>dows</strong> NT$"Provider=%MSFTMSFT%ClassGUID={4D36E968-E325-11CE-BFC1-08002BE10318}Class=<strong>Display</strong><strong>Driver</strong>Ver=11/22/2004, 6.14.10.7000Note:no l<strong>in</strong>e item for LayoutFile=layout.<strong>in</strong>fno l<strong>in</strong>e item for CatalogFile=delta.catWHQL <strong>Display</strong> <strong>Driver</strong>s must NOT reference the layout.<strong>in</strong>f file.For example:[Version]Signature="$<strong>W<strong>in</strong>dows</strong> NT$"Provider=%IHVIHV%ClassGUID={4D36E968-E325-11CE-BFC1-08002BE10318}Class=<strong>Display</strong><strong>Driver</strong>Ver=11/22/2004, 6.14.10.7000Note:October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。no l<strong>in</strong>e item for LayoutFile=layout.<strong>in</strong>f[SourceDiskNames] section directivesOn <strong>W<strong>in</strong>dows</strong> Vista and later versions of <strong>W<strong>in</strong>dows</strong>, <strong>in</strong>-box INFs use the [SourceDisks]directives. However, the values of these sections were changed from what is typicallynoted <strong>in</strong> an IHV production driver package today.For example, IHV production drivers:[SourceDisksNames]1 = %DiskID1%[SourceDisksFiles]r200.sys = 1r200umd.dll = 1The <strong>W<strong>in</strong>dows</strong> Inbox INF requirement:[SourceDisksNames]3426=w<strong>in</strong>dows cd[SourceDisksFiles]IHVKDM.sys = 3426IHVUMD.dll = 3426IHVVID.dll = 3426[SignatureAttributes] Section Directives:On Vista and subsequent OS’s, <strong>in</strong>box INFs use the [SignatureAttributes] directives.There is no need to reference your m<strong>in</strong>iport (.sys) file.For example:[SignatureAttributes]IHVUMD1.dll=SignatureAttributes.PETrustIHVUMD2.dll=SignatureAttributes.PETrust[SignatureAttributes.PETrust]PETrust=trueGeneral x64 directivesThis is a general rem<strong>in</strong>der for what changes are needed to properly decorate the INFfor use on 64-bit <strong>W<strong>in</strong>dows</strong>.For example:[Dest<strong>in</strong>ationDirs]DefaultDestDir = 11October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。R200.M<strong>in</strong>iport = 12 ; driversR200.<strong>Display</strong> = 11 ; system32R200.DispWow = 10, SysWow64[Manufacturer]%ATI% = ATI.Mfg, NTamd64[ATI.Mfg.NTamd64][R200_RV200]FeatureScore=F8CopyFiles=R200.M<strong>in</strong>iport, R200.<strong>Display</strong>, R200.DispWowAddReg = R200_SoftwareDeviceSett<strong>in</strong>gsAddReg = R200_RV200_SoftwareDeviceSett<strong>in</strong>gsDelReg = R200_RemoveDeviceSett<strong>in</strong>gs; File sections;[r200.M<strong>in</strong>iport]r200.sys[r200.<strong>Display</strong>]r200umd.dll,,,0x00004000; COPYFLG_IN_USE_TRY_RENAME[R200.DispWow]r2umd32.dll,,,0x00004000; COPYFLG_IN_USE_TRY_RENAMEGeneral <strong>in</strong>stall section directivesThis is a general rem<strong>in</strong>der that all references to out-of-box or production/retailb<strong>in</strong>aries, services, regadd, or delreg sections that are normally part of your retailWHQL driver packages are not listed <strong>in</strong> the <strong>W<strong>in</strong>dows</strong> <strong>in</strong>-box driver packages.It’s hard to list examples for this because it varies so much per vendor, but the rule ofthumb is to not refer to anyth<strong>in</strong>g required by your OpenGL ICDs, OpenCL, ControlPanel, Help files, out-of-box services, poll<strong>in</strong>g applications, and so on.[Str<strong>in</strong>g] section changes for localized str<strong>in</strong>gsThis INF requirement is <strong>in</strong> place to ensure that pseudo-localized builds work. Therequirement is to del<strong>in</strong>eate localizable versus non-localizable str<strong>in</strong>gs with<strong>in</strong> thestr<strong>in</strong>gs section us<strong>in</strong>g these specific examples given below.For a BAD example of this (no preface of what is localized or not):October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。[Str<strong>in</strong>gs]REG_MULTI_SZREG_DWORD= 0x00010000= 0x00010001MSFT = "Microsoft"IHV = "Contoso, Ltd"For a GOOD example of this (note the new l<strong>in</strong>es <strong>in</strong> red):[Str<strong>in</strong>gs];LocalizableMSFT = "Microsoft"IHV = "Contoso, Ltd";Non-LocalizableREG_MULTI_SZREG_DWORD= 0x00010000= 0x00010001<strong>Driver</strong> DLL for display adapter or chipset has properly formatted fileversionThe file version of the display driver DLLs must be of the form A.BB.CC.DDDD:• The A field must be set to 9 for WDDM 1.2 drivers on <strong>W<strong>in</strong>dows</strong> 8.• The A field must be set to 8 for WDDM 1.1 drivers on <strong>W<strong>in</strong>dows</strong> 7.• The A field must be set to 7 for WDDM 1.0 drivers on <strong>W<strong>in</strong>dows</strong> Vista.• The A field must be set to 6 for XDDM drivers on <strong>W<strong>in</strong>dows</strong> Vista.For <strong>W<strong>in</strong>dows</strong> 7 and earlier (WDDM 1.1 and earlier) drivers the BB field must be set tothe DDI version that the driver supports:• DirectX 9 drivers (which expose any of the D3DDEVCAPS2_* caps) must set BB to14.• DirectX 10 drivers must set BB to 15.• Direct3D 11-DDI driver on Direct3D 10 hardware must set BB to 16.• Direct3D 11-DDI driver on Direct3D 11 hardware must set BB to 17.For <strong>W<strong>in</strong>dows</strong> 8 (WDDM 1.2) drivers the BB field must be set to the highest DirectXfeature level supported by the driver on the graphics hardware covered by the driver:• A Feature Level 9 driver must set BB to 14.• A Feature Level 10 driver must set BB to 15.• A Feature Level 11 driver must set BB to 17.• A Feature Level 11_1 driver must set BB to 18.October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。Because for WDDM 1.2 drivers we are sett<strong>in</strong>g BB to reflect feature level supported,irrespective of hardware DX level, 16 is not used, as it was specific to D3D11-DDI onDX10 hardware for WDDM 1.1 drivers.The CC field can be equal to any value between 01 and 9999.The DDDD field can be set to any numerical value between 0 and 9999.For example:• <strong>W<strong>in</strong>dows</strong> Vista DirectX 9.0–compatible WDDM drivers can use the range7.14.01.0000 to 7.14.9999.9999.• <strong>W<strong>in</strong>dows</strong> 7 DirectX 10.0–compatible WDDM 1.1 drivers can use the range8.15.01.0000 to 8.15.9999.9999.• <strong>W<strong>in</strong>dows</strong> 8 WDDM 1.2 drivers on DX10 hardware would be 9.15.01.0000 to9.15.9999.9999.Recommendation (this will become a requirement <strong>in</strong> a future release): It is stronglyrecommend that the <strong>Driver</strong>Ver <strong>in</strong> the display driver .INF file also conform to theabove DLL version-number<strong>in</strong>g requirement, except that for <strong>W<strong>in</strong>dows</strong> 8, WDDM 1.2drivers, the BB field <strong>in</strong> the INF <strong>Driver</strong>Ver must be set for the highest DirectX featurelevel supported by the driver on the graphics hardware listed <strong>in</strong> the INF.October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。PART 4:Installation ScenariosIn this part:Install.........................................................................................................................54Upgrade.................................................................................................................... 54Down level................................................................................................................ 54October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。InstallUpgradeDown level<strong>W<strong>in</strong>dows</strong> 8 ma<strong>in</strong>ta<strong>in</strong>s compatibility with older driver models with the exception ofXDDM. <strong>W<strong>in</strong>dows</strong> Vista– and <strong>W<strong>in</strong>dows</strong> 7–certified WDDM v1 and v1.1 drivers will<strong>in</strong>stall on <strong>W<strong>in</strong>dows</strong> 8 systems (for devices with no <strong>W<strong>in</strong>dows</strong> 8 <strong>in</strong>-box WDDM IHVdriver). XDDM hardware drivers will not load on <strong>W<strong>in</strong>dows</strong> 8 systems. Graphics IHVswill be shipp<strong>in</strong>g WDDM v1.2 drivers that will fully exploit the graphics improvementsmade <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8 and support all available features thereon.Table 4.1 illustrates the upgrade experience from <strong>W<strong>in</strong>dows</strong> 7 client or <strong>W<strong>in</strong>dows</strong>Server 2008 R2 to <strong>W<strong>in</strong>dows</strong> 8. If a WDDM driver exists, it is migrated to the new OS.However, an <strong>in</strong>-box IHV driver will outrank a migrated IHV driver unless the migrateddriver is a WDDM WHQL driver with a higher-ranked feature score. XDDM driversand VGA drivers will not be reta<strong>in</strong>ed. The system will default to the Microsoft Basic<strong>Display</strong> <strong>Driver</strong> (MSBDD) on devices with no <strong>W<strong>in</strong>dows</strong> 8 <strong>in</strong>-box WDDM IHV driver.Table 4.1 <strong>Driver</strong> upgrade experience on <strong>W<strong>in</strong>dows</strong> 8Current OSTarget OSCurrent<strong>Driver</strong><strong>W<strong>in</strong>dows</strong> 7 <strong>W<strong>in</strong>dows</strong> 8 WDDM IHVclient or<strong>Driver</strong><strong>W<strong>in</strong>dows</strong>Server 2008 R2XDDM IHV<strong>Driver</strong>MS VGA<strong>Driver</strong><strong>Driver</strong> Installed<strong>W<strong>in</strong>dows</strong> 8 <strong>in</strong>-box WDDM IHVdriver OR migrated WDDM IHV driver (fordevices with no <strong>in</strong>-box <strong>W<strong>in</strong>dows</strong> 8 driver)<strong>W<strong>in</strong>dows</strong> 8 <strong>in</strong>-box WDDM IHVdriver OR MSBDD (for devices with no <strong>in</strong>-box<strong>W<strong>in</strong>dows</strong> 8 driver)<strong>W<strong>in</strong>dows</strong> 8 <strong>in</strong>-box WDDM IHVdriver OR MSBDD (for devices with no <strong>in</strong>-box<strong>W<strong>in</strong>dows</strong> 8 driver)Note: The INF for <strong>in</strong>-box drivers must have the same feature score for all devices.Feature score must be associated with the <strong>W<strong>in</strong>dows</strong> OS version the driver was testedon, not the DDI version of the device.An IHV may choose to create a unified driver package that is a WDDM 1.2 driver on<strong>W<strong>in</strong>dows</strong> 8, but appears like a WDDM 1.1 or 1.0 driver on previous OS releases.October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。PART 5:WDDM v1.2 <strong>Driver</strong> EnforcementGuidel<strong>in</strong>esIn this part:WDDM v1.2 <strong>Driver</strong> Enforcement..............................................................................56User experience when a driver fails the dxgkrnl validation..................................... 56WDDM driver and feature caps................................................................................56Best practices................................................................................................................ 57Resources...................................................................................................................... 58Glossary.........................................................................................................................58October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。WDDM v1.2 <strong>Driver</strong> EnforcementThere will be dxgkrnl validation enforced <strong>in</strong> the <strong>W<strong>in</strong>dows</strong> 8 operat<strong>in</strong>g system forcheck<strong>in</strong>g whether the mandatory v1.2 features are supported by the WDDM v1.2driver. WDDM v1.2 has both mandatory and optional features. The driver must set allthe mandatory feature caps to claim itself as a “WDDM v1.2 driver”, while the drivercan implement any comb<strong>in</strong>ation (or none) of the optional features. A non-WDDMv1.2 driver must report none of the WDDM v1.2 features.User experience when a driver fails the dxgkrnl validationIf a driver has wrongfully claimed itself as “WDDM v1.2” or has implemented partialfeatures (only some of the mandatory features), then it will fail to create an adapterand the system will fall back to the Microsoft Basic <strong>Display</strong> <strong>Driver</strong>.WDDM driver and feature capsTable 5.1 lists the requirements for a driver to specify to <strong>W<strong>in</strong>dows</strong> the “WDDM <strong>Driver</strong>Type” and version. Table 5-2 lists all the feature caps (visible to dxgkrnl) that WDDMv1.2 drivers are required to set.Table 5.1 WDDM <strong>Driver</strong> RequirementsWDDM driver typeDDI requirementsFull Graphics<strong>Display</strong>-OnlyRender-OnlyImplement all the Render-specific and the <strong>Display</strong>-specificrequired DDIsImplement all the <strong>Display</strong>-specific DDIs and return a null po<strong>in</strong>terfor all the Render-specific DDIsImplement all the Render-specific DDIs and return a null po<strong>in</strong>terfor all the <strong>Display</strong>-specific DDIsORImplement all the DDIs for a full WDDM driver but reportDISPLAY_ADAPTER_INFO::NumVidPnSources = 0 andDISPLAY_ADAPTER_INFO::NumVidPnTargets = 0Table 5.2 WDDM v1.2 Feature CapsFeatureWDDM <strong>Driver</strong> TypeFeature CapsFullGraphicsRenderOnly<strong>Display</strong>OnlyWDDMM M M DXGK_DRIVERCAPS::WDDMVersionversionBugcheck and MNA M DXGK_DRIVERCAPS::SupportNonVGAPnP Stopsupport forNon VGAOptimizedscreenrotationSupportMNA M DXGK_DRIVERCAPS::SupportSmoothRotationOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。FeatureGPUPreemptionFlipOnVSyncMmIoWDDM <strong>Driver</strong> TypeM M NAM M NATDRImprovementsM M NAOptimiz<strong>in</strong>g the O O NAgraphics stackto improveperformanceon sleep &resumeStereoscopic ONANA3D: New<strong>in</strong>frastructureto process andpresentstereoscopiccontentDirectFlip M NANAGDI Hardwareacceleration(This is arequiredWDDM v1.1feature)GPU powermanagementof idle andactive powerBest practicesM M NAFeature CapsDXGK_DRIVERCAPS::PreemptionCapsDXGK_FLIPCAPS::FlipOnVSyncMmIoFlipOnVSyncMmIo is NOT a newfeature; this is already documentedand has been available s<strong>in</strong>ce <strong>W<strong>in</strong>dows</strong>Vista; the requirement here is to setFlipOnVSyncMmIo capDXGK_DRIVERCAPS::SupportPerEng<strong>in</strong>eTDRDXGK_SEGMENTDESCRIPTOR3::FlagsD3DKMDT_VIDPN_SOURCE_MODE_TYPEDXGK_DRIVERCAPS::SupportDirectFlipDXGK_PRESENTATIONCAPS::SupportKernelModeCommandBufferO O O If this feature is supported the DDIfunctions must be supported(SetPowerComponentFState andPowerRuntimeControlRequest)As expla<strong>in</strong>ed <strong>in</strong> this document, to deliver the best experience on <strong>W<strong>in</strong>dows</strong> 8,<strong>W<strong>in</strong>dows</strong> takes advantage of the graphics hardware paired with a <strong>W<strong>in</strong>dows</strong> 8–optimized WDDM v1.2 driver. This section summarizes the best practices.System manufacturers:Ensure the follow<strong>in</strong>g cases are fully tested and work well with your systemconfigurations:• Compatible with Microsoft Basic <strong>Display</strong> <strong>Driver</strong>October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。• Reboot-less updates on serversDesign new servers with WDDM hardware and adopt the relevant WDDM drivertype that best suits your customer’s needs.Work with graphics hardware vendors to get certified WDDM v1.2 drivers forvalidation.For headless systems:• System firmware should set the VGA Not Present flag <strong>in</strong> theIAPC_BOOT_ARCH field of FADT and if there is any VBIOS, it shouldimplement an empty mode list through the VESA BIOS Extensions (VBE).• In the absence of VBE support, the headless system should not represent awork<strong>in</strong>g display through UEFI GOP.Refer to the <strong>W<strong>in</strong>dows</strong> 8 logo requirements kit for validation and test<strong>in</strong>g<strong>in</strong>formation.Test a variety of hardware configurations on both desktops and mobile systemsto ensure a solid end-user experience <strong>in</strong> <strong>W<strong>in</strong>dows</strong> 8.Graphics hardware vendors:Work with Microsoft to develop <strong>W<strong>in</strong>dows</strong> 8 WDDM v1.2 drivers.Test prerelease <strong>W<strong>in</strong>dows</strong> 8 WDDM v1.2 drivers on the prerelease versions of<strong>W<strong>in</strong>dows</strong> 8.Provide updated WDDM v1.x drivers to Microsoft for deployment through<strong>W<strong>in</strong>dows</strong> Update.In addition to the <strong>W<strong>in</strong>dows</strong> certification test suite, validate graphics and gam<strong>in</strong>gperformance, application compatibility, and various self-host scenarios on eachASIC family. Test WDDM v1.0 and v1.1 drivers on prerelease versions of <strong>W<strong>in</strong>dows</strong> 8.Make the full retail package for WDDM v1.2 drivers available as early as possible.Independent software vendors (ISVs):Test exist<strong>in</strong>g and upcom<strong>in</strong>g DirectX games with WDDM v1.2 drivers on prereleaseversions of <strong>W<strong>in</strong>dows</strong> 8. Test <strong>in</strong>dividual applications on prerelease versions of <strong>W<strong>in</strong>dows</strong> 8.Take advantage of the <strong>W<strong>in</strong>dows</strong> 8 DirectX feature improvements.ResourcesNew Reference Topics for <strong>W<strong>in</strong>dows</strong> Developer PreviewDirectX Developer CenterTimeout detection and recovery of GPUs through WDDMOctober 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。GlossaryDirect2DMicrosoft’s 2D API that uses the render<strong>in</strong>g power of the GPU through DirectXgraphics.DWMDesktop W<strong>in</strong>dow Manager. The <strong>W<strong>in</strong>dows</strong> component that presents the contentsof the desktop.DxgKrnl.sysThe <strong>W<strong>in</strong>dows</strong> kernel portion of the WDDM graphics stack. It resides <strong>in</strong> the kerneland provides a variety of services, <strong>in</strong>clud<strong>in</strong>g communications with the kernelmodeWDDM video driver.DXVADirectX Video Acceleration.Direct3D 10 Level 9 (also called Feature Level 9)The Microsoft Direct3D 10 driver that uses the DirectX 10 API on DirectX 9hardware.headless systemThe term “headless” is utilized <strong>in</strong> this document to refer to a server systemconfiguration that operates without the presence of locally attached keyboard,mouse, and video graphics devices. These systems can host applications that oneor more remote client mach<strong>in</strong>es can access, so it really does not require user<strong>in</strong>teraction at the local console.HLSLHigh Level Shad<strong>in</strong>g Language for DirectX. Us<strong>in</strong>g HLSL, C-like programmableshaders can be created for the Direct3D pipel<strong>in</strong>e.TBDRTile-Based Deferred Render<strong>in</strong>g.WDDMThe <strong>W<strong>in</strong>dows</strong> <strong>Display</strong> <strong>Driver</strong> <strong>Model</strong> (WDDM) was <strong>in</strong>troduced beg<strong>in</strong>n<strong>in</strong>g with<strong>W<strong>in</strong>dows</strong> Vista as a replacement to the <strong>W<strong>in</strong>dows</strong> XP <strong>Display</strong> <strong>Driver</strong> <strong>Model</strong>(XDDM).WDDM v1This is the first version of the <strong>W<strong>in</strong>dows</strong> <strong>Display</strong> <strong>Driver</strong> <strong>Model</strong>. WDDM v1 driversfrom various graphics hardware vendors shipped with <strong>W<strong>in</strong>dows</strong> Vista.WDDM v1.1This is the optimized WDDM v1.1 driver version that shipped for <strong>W<strong>in</strong>dows</strong> 7. Itconta<strong>in</strong>s several enhancements to the first version of WDDM. WDDM v1.1 driverssupport additional features on <strong>W<strong>in</strong>dows</strong> 7 that WDDM v1 drivers do not support.WDDM v1.2WDDM driver version optimized for <strong>W<strong>in</strong>dows</strong> 8. The WDDM driver model thatenables <strong>W<strong>in</strong>dows</strong> 8 features is referred to as WDDM v1.2. WDDM v1.2 is asuperset of WDDM 1.1, and WDDM 1.0October 11, 2011© 2011 Microsoft. All rights reserved.


PART 2:Direct3D Features & Requirements - 错 误 ! 未 定 义 书 签 。WHCK<strong>W<strong>in</strong>dows</strong> Hardware Certification Kit, previously known as <strong>W<strong>in</strong>dows</strong> Logo Kit(WLK).XDDMThe <strong>W<strong>in</strong>dows</strong> 2000/XP display driver model.October 11, 2011© 2011 Microsoft. All rights reserved.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!