首页 > 代码库 > 第十七篇:曲径通幽处,禅房花木深--初探WDDM驱动学习笔记(一)

第十七篇:曲径通幽处,禅房花木深--初探WDDM驱动学习笔记(一)

正好需要对WINDOWS的WDDM有所了解, 于是就翻了下MSDN.

微软对设备驱动的框架设计非常周全.

无论WDDM, AVSTREAM, 还是USB STACK, STORAGE, 以及其它技术类型的设备驱动, 都是以port/miniport, class/miniclass的形式展开, 微软将经过严密设计,开发,测试的port/class驱动提供给IHV,而IHV只需要把工作重心放到mini驱动的开发上去, 大大降低了项目风险, 人力成本,以及时间成本.


AVSTREAM是PCTV的框架, 通过微软设计的FILTER(factory), PIN(factory)来组建具体设备的的Graph/Topology.

IHV只需要开发基于KS.sys miniport驱动程序.

USB stack则更加展示了port/miniport的优势, 对于usb1.1的OHCI, UHCI及usb2.0的EHCI, 它们都基于usbport.sys驱动运行, 免去了大量重复相同的开发工作(对于微软自己来讲).

usb3.0 stack并未延用原来的usbport.sys, 原因主要在于, 从2.0到3.0完全放弃了原来的EHCI的接口规范, 采用了xHCI的标准, 将任务的调度工作由CPU转交给xHC, 这是USB子系统的一大进步.

WDDM也类似, DirectX graphics kernel subsystem集成了port驱动的应有功能, 同时负责了显存管理与GPU的调度任务, 将与底层硬件无关的工作尽可能地抽离, 大大降低了display miniport driver的开发工作.


为了了解WDDM的相关内容, 先从WDDM1.3的新内容开始.

具体请参照:

http://msdn.microsoft.com/en-us/library/dn265512(v=vs.85).aspx


Enumerating GPU engine capabilities

GPU Node架构
BDA(broadcast driver architecture)中也有Node的概念, 但GPU Node从概念上来讲,似乎较BDA NODE更加清楚.
一个GPU NODE就是一个或者多个( if that node is associated with multiple adapters—such as in linked display adapter (LDA) configuration, where multiple physical GPUs are linked to form a single, faster, virtual GPU.)相同engines 的逻辑表示.

GPU上engines的类型主要有:
3D
VIDEO_DECODE
VIDEO_ENCODE
VIDEO_PROCESSING
SCENE_ASSEMBLY
COPY
OVERLAY

其中, video processing 包括
Such processing can include RGB surface conversion, filtering, stretching, color correction, deinterlacing, or other steps that are required before the final image is rendered to the display screen.

scene包括:
vertex processing of 3-D workloads