第十七篇:曲径通幽处,禅房花木深--初探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

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

时间: 2024-10-06 00:12:33

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

第十七篇:实例分析(3)--初探WDDM驱动学习笔记(十)

续: 还是记录一下, BltFuncs.cpp中的函数作用: CONVERT_32BPP_TO_16BPP 是将32bit的pixel转换成16bit的形式. 输入是DWORD 32位中, BYTE 0,1,2分别是RGB分量, 而BYTE3则是不用的 为了不减少color的范围, 所以,都是取RGB8,8,8的高RGB5, 6, 5位, 然后将这16位构成一个pixel. CONVERT_16BPP_TO_32BPP是将16bit的pixel转换成32bit的形式 输入是WORD 16BIT中

第十七篇:实例分析(4)--初探WDDM驱动学习笔记(十一)

感觉有必要把 KMDDOD_INITIALIZATION_DATA 中的这些函数指针的意思解释一下, 以便进一步的深入代码. DxgkDdiAddDevice 前面已经说过, 这个函数的主要内容是,将BASIC_DISPLAY_DRIVER实例指针存在context中, 以便后期使用, 支持多实例. DxgkDdiStartDevice 取得设备信息, 往注册表中加入内容, 从POST设备中获取FRAME BUFFER以及相关信息(DxgkCbAcquirePostDisplayOwnershi

第十七篇:博采众长--初探WDDM驱动学习笔记(七)

基于WDDM驱动的DirectX视频加速重定向框架设计与实现 现在的研究生的论文, 真正质量高的, 少之又少, 开题开得特别大, 动不动就要搞个大课题, 从绪论开始到真正自己所做的内容之间, 是东拼西凑地抄概念, 抄公式, 达到字数篇幅的要求, 而自己正真做了什么, 有哪些实际感受, 做出的内容, 相比前面的东拼西凑就几点内容, 之后就草草结束, 步入感谢的段落. 原因不光只有学生自己, 所谓的读研, 如果没有一个环境, 学生有再大的愿望, 再强的毅力, 到头来也只是空无奈. 有些导师要写书,

嵌入式驱动学习笔记

驱动学习笔记 输入子系统概念介绍 嵌入式驱动学习笔记,布布扣,bubuko.com

八、蜂鸣器驱动--学习笔记

第八章.蜂鸣器驱动--学习笔记 蜂鸣器是 S3C6410 开发板上带的一个硬件设备.可以通过向寄存器写入特定的值来控制蜂鸣器 发出尖叫声.本节将介绍蜂鸣器实现原犁,并实现一个完整的蜂呜器驱动(可以打开和关闭蜂鸣器).PWM驱动的实现方式不同于LED驱动,PWM驱动将由多个文件组成.这也是大多数i n u x驱动的标准实现方式.也就是说--个复杂的驱动不太可能将所有的代码都放在…个文件中.最好将相关的代码放在相应的文件中.在编译L i n u x驱动时将这些文件进行联合编译.本节将介绍把Li n

linux 驱动学习笔记01--Linux 内核的编译

由于用的学习材料是<linux设备驱动开发详解(第二版)>,所以linux驱动学习笔记大部分文字描述来自于这本书,学习笔记系列用于自己学习理解的一种查阅和复习方式. #make config(基于文本的最为传统的配置界面,不推荐使用)#make menuconfig(基于文本菜单的配置界面)#make xconfig(要求 QT 被安装)#make gconfig(要求 GTK+被安装)在配置 Linux 2.6 内核所使用的 make config. make menuconfig. mak

wince7下SD host驱动学习笔记

SD驱动框架: wince系统中sd驱动框架如下图所示,软件部分总体上可以分为3个层.最底层的是SD Host Controller Driver(sdhc.dll),这一层就是对硬件SD控制器直接操作的驱动层.在系统移植时,这一层驱动就需要根据实际处理器的SD控制器做修改.中间一层是SD Bus Driver(sdbus.dll),顾名思义是SD总线的驱动代码,负责SD HOST层和Client层之间的通信.它由微软实现,在系统移植时这一层一般不需要修改.最顶层为Client层,这一层会根据不

0915-----Linux设备驱动 学习笔记----------一个简单的字符设备驱动程序

0.前言 研究生生活一切都在步入正轨,我也开始了新的学习,因为实在不想搞存储,所以就决定跟师兄学习设备驱动,看了两星期书,终于有点头绪了,开始记录吧! 1.准备工作 a)查看内核版本 uname -r b)安装内核源码树(http://www.cnblogs.com/Jezze/archive/2011/12/23/2299871.html) 在www.linux.org上下载源码编译,这里是.xz格式,需要安装解压工具,xz-utils: 解压方法示例:xz -d linux-3.1-rc4.

LCD驱动学习笔记

通过这几天的学习发现驱动的框架感觉都差不多,一般分为以下几个步骤: 分配一个结构体 struct x *x = amlloc(); 设置结构体的参数 硬件寄存器 file_operations 注册 卸载 不同之处就是设置这一环节,lcd的驱动的框架就是这么回事,只不过设置的各项参数比较多. lcd的设置项包括 固定参数 可变参数 操作函数 硬件.寄存器 设置显存(framebuffer) 使能lcd