Monitor Hot Plug Detection(MSDN翻译)
Monitor Hot Plug Detection
显卡上的Video output被看作是显卡的一个子设备。而monitor或者其他连接到output上的外部显示设备不会当作一个子设备。在初始化时,KMD的DxgkDdiQueryChildRelations函数给每个子设备指定一个类型和HPD awareness值。类型是DXGK_CHILD_DEVICE_TYPE枚举中的一个值。
TypeVideoOutput
TypeOther
HPD awareness值是DXGK_CHILD_DEVICE_HPD_AWARENESS枚举中的一个值
HpdAwarenessAlwaysConnected
HpdAwarenessInterruptible
HpdAwarenessPolled
TypeVideoOutput类型且任何 HPD awareness 值不为HpdAwarenessAlwaysConnected 的子设备被称作video output connector。
如果KMD不能确定monitor是否被连接到了Video output上,驱动应该模拟一个可中断设备的行为,HPD awareness值被设置为HpdAwarenessInterruptible。如果KMD需要指定一个可终端monitor被连接到Video output上时,例如当用户键入切换到television视图的快捷键时,驱动应该调用DxgkCbIndicateChildStatus函数,其中ChildStatus.HotPlug.Connected 参数为TRUE。
OS会请求KMD报告所有的HPD awareness值为HpdAwarenessPolled的Video output connector的状态,该请求没有固定轮询间隔,而是系统认为需要更新可用显示设备及其mode时进行请求。例如,当笔记本连接到docking时,OS需要知道是否一个monitor被连接到了docking的video output上。OS会通过为每个HPD awareness值为HpdAwarenessPolled的子设备调用KMD的DxgkDdiQueryChildStatus函数来完成此请求。
对于每个HPD awareness为HpdAwarenessInterruptible的Video output connector, KMD会在外部显示设备插入或者拔出的时候负责通知操作系统。KMD的中断处理代码调用显示端口驱动的DxgkCbIndicateChildStatus函数来上报video output连接或者断开的外部显示设备。当笔记本插入docking时,KMD的DxgkDdiNofityAcpiEvent中必须为每个docking上的HPD awareness 值为HpdAwarenessInterruptible 的Video output调用DxgkCbIndicateChildStatus。
在笔记本在docking上时,如果HPD awareness 值为HpdAwarenessPolled的output变为无效时(例如合上盖),KMD的DxgkDdiNotiryAcpiEvent函数中必须调用DxgkCbIndicateChildStatus来上报output上的连接状态。
在笔记本上Video output关联到嵌入显示panel是一个特殊的情况。OS需要知道盖子的状态是打开还是盖上。这时连接的意思代表着盖子打开,而断开代表着盖子合上。在笔记本上关联着嵌入显示显示器的Video output的HPD awareness 值为HpdAwarenessInterruptible。但是这不意味着显卡会在盖子打开或合上时会产生一个中断,而是由ACPI BIOS在盖子打开或者合上时产生一个中断。这个中断会导致系统调用KMD的DxgkDdiNotifyAcpiEvent,其中会调用DxgkCbIndicateChildStatus上报盖子的状态。KMD通过设置DXGK_CHILD_STATUS结构中HotPlug.Connected成员上报状态,True为Open,False为Close。DXGK_CHILD_STATUS为DxgkCbIndicateChildStatus 的一个参数。
下列描述了当一个monitor连接到HD15 connector上的后续操作,假设这个connector的HPD awarenesss值为HpdAwarenessPolled。
当monitor连接到显卡的HD15 connector上时。显卡并不会检测到相应的hot-plug事件。
应用程序会在某时请求一个显示设备的列表。
对于显卡上的每个HPD awareness 值为HpdAwarenessPolled的Video output connector,VidPN管理器调用KMD的DxgkDdiQueryChildStatus函数来确定是否连接有外部显示设备。当DxgkDdiQueryChildStatus调用询问HD15 connector时,驱动会上报此时的确有一个外部显示设备相连。
下列描述了当一个monitor连接到DVI connector上的后续操作,假设这个connector的HPD awarenesss值为HpdAwarenessInterruptible。
平面显示器连接到显卡上DVI connector。
显卡会检测到hot-plug事件,然后生成一个中断。
这个中断由KMD的DxgkDdiInterruptRoutine处理,其中调用会创建一个DPC(Deferred procedure call)。之后KMD得DPC routine会被调用。
DPC回调传入DXGK_CHILD_STATUS给显示端口驱动DxgkCbIndicateChildStatus上报DVI connector的状态。DXGK_CHILD_STATUS的ChildUid成员标识了这个DVI connector,HotPlug.Connected成员为TRUE标识了该connector上有一个外接的显示设备。
假设DVI connector支持一个三个分支的转接器:DVI, HD15和S-Video。这时KMD会线枚举这这个物理DVI connector上的三个子设备: DVI-on-DVI,HD15-on-DVI,和 S-Video-on-DVI。每个子设备会拥有一个TypeVideoOutput 类型和为HpdAwarenessInterruptible的HPD awareness 值。下列描述了当一个monitor连接到HD15这个分支时的操作步骤
显卡检测到了hot-plug事件并产生一个中断。
KMD的DxgkDdiInterruptRoutine处理这个中断,其中调度一个DPC,接下来KMD的DPC回调被调用。
DPC回调确定了这个hot-plug事件由HD15这个分支产生(HD15-on-DVI)。
DPC回调传入DXGK_CHILD_STATUS给DxgkCbIndicateChildStatus上报HD15-on-DVI Video output的状态。DXGK_CHILD_STATUS的ChildUid成员标识了这个video output 以及HotPlug.Connected 成员为TRUE表示了有外部设备连接到了这个output上。
下面描述了合上盖时笔记本的一些操作步骤
笔记本合上盖时,会产生一个ACPI事件,接下来KMD的DxgkDdiNotifyAcpiEvent会被调用。
DxgkDdiNofifyAcpiEvent中将DXGK_CHILD_STATUS参数传给显示端口驱动的DxgkCbIndicateChildStatus 回调来上报内建显示显示面板的子设备状态。DxgkDdiNotifyAcpiEvent 会设置 DXGK_CHILD_STATUS的成员HotPlug.Connected 为FALSE。
Monitor Hot Plug Detection(MSDN翻译)相关推荐
- A Survey of Deep Learning-based Object Detection论文翻译 + 阅读笔记
A Survey of Deep Learning-based Object Detection论文翻译 + 阅读笔记 //2022.1.7 日下午16:00开始阅读 双阶段检测器示意图 单阶段检测器 ...
- Feature Pyramid Networks for Object Detection论文翻译——中文版
文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 声明:作者翻译论文仅为学习,如有侵权请联系作者删除博文,谢谢! 翻译论文汇总:https://github.com ...
- Feature Pyramid Networks for Object Detection论文翻译——中英文对照
文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 声明:作者翻译论文仅为学习,如有侵权请联系作者删除博文,谢谢! 翻译论文汇总:https://github.com ...
- Heatmap-based Vanishing Point boosts Lane Detection 论文翻译
基于热力图消失点增强车道线检测 论文:Heatmap-based Vanishing Point boosts Lane Detection 摘要 基于视觉的车道线检测(LD)是自动驾驶技术的关键部分 ...
- CreateFont()函数的MSDN翻译
函数功能:该函数创建一种有特殊性的逻辑字体,此逻辑字体可以在后面被任何设备选择. 函数原型:HFONT CreateFont(int nHeight, int nWidth, int nEscapem ...
- FCOS:Fully Convolutional One-Stage Object Detection 论文翻译(非解读)
全卷积单级目标检测器 摘要: 1.介绍 2.相关工作 3.方法 3.1. 全卷积单级目标探测器 3.2. FCOS的FPN多级预测 3.3. Center-ness for FCOS 4. 实验 4. ...
- USB device hot plug detection
refer to http://usb.baiheee.com/usb_article/usb_spec/usb_plug_detect.html. 自己玩了玩. connect 1.5K resis ...
- 输入法编程指南(根据msdn翻译)
2006-01-14 作者 不祥 Windows 95输入法编辑器(IME) 原著:Microsoft 翻译:TBsoft Software Studio 一.关于Windows 95混合语言IME ...
- Driver residency in WDDM 2.0(MSDN翻译)
Driver residency in WDDM 2.0 这节描述了WDDM v2的一些驱动residency的一些改变.这些功能在win10之后开始生效. (PS: residency 之前一直没有 ...
最新文章
- Linux下升级安装Python-2.7.8版本
- 网站排名优化看技巧!
- Vsphere 回收未消使用的磁盘空间
- 实验:交换机生成树协议STP--功能验证
- Matlab | Matlab从入门到放弃(14)——基于Matlab的多变量数据分析
- 泪目!连拿3份 offer,AI 程序员求职经历火爆 IT圈!
- P8U8 IT这块出书门槛相对比较低
- 阿里计算平台掌门人贾扬清:我对人工智能方向的一点浅见
- java中面向对象_java中的面向对象
- 《写给大家看的设计书》封面评选结果揭晓
- mysql 获取日期每行_我如何从MySQL表行获取日期和时间
- matlab实验是啥,实验一 MATLAB的实验环境及基本命令.ppt
- flutter自定义View(CustomPainter) 之 canvas的方法总结
- c语言答案网站,c语言习题及答案
- 多媒体技术简答题和论述题
- FastStone Capture 画图吸色工具
- 《计算机网络(第七版)谢希仁 编著》部分课后答案
- 基于FPGA的ROM-VGA图像处理(老师好帅系列)
- dropping incoming packet
- btwdins.exe