IT评测·应用市场-qidao123.com

标题: Windows 图形表现驱动开发-WDDM 3.2-用户模式工作提交(二) [打印本页]

作者: 花瓣小跑    时间: 2025-3-10 05:16
标题: Windows 图形表现驱动开发-WDDM 3.2-用户模式工作提交(二)
用户模式工作提交 API

添加了以下用户模式 API,以支持用户模式工作提交。

Ring内存和环形缓冲区分配的驻留模子

UMD 负责在创建Ring之前使环形缓冲区和环形缓冲区控制分配驻留。

硬件上下文挂起

当 OS 挂起硬件上下文时,Dxgkrnl 会保持Ring连接处于活动状态,并常驻环形缓冲区(工作队列)分配。 通过这种方式,UMD 可以继承排队工作到上下文;当上下文被挂起时,这项工作不会被安排。 一旦上下文被恢复和筹划,GPU 的上下文管理处理器 (CMP) 就会观察新的写入指针和工作提交。
此逻辑雷同于当前的内核模式提交逻辑,其中 UMD 可以使用挂起的上下文调用 D3DKMTSubmitCommand。 Dxgkrnl 将这个新命令排队到 HwQueue,但直到以后才气被安排。在硬件上下文挂起和恢复期间,会发生以下变乱序列。
挂起硬件上下文:

Dxgkrnl 调用 DxgkddiSuspendContext。
KMD 从 HW 筹划程序列表中删除上下文的所有 HWQueue。
Ring仍处于连接状态,环形缓冲区/环形缓冲区控制分配仍处于驻留状态。 UMD 可以将新命令写入此上下文的 HWQueue,但 GPU 不会处理它们,这雷同于当前内核模式命令提交到挂起的上下文。

假如 KMD 选择破坏挂起的 HWQueue 的Ring,则 UMD 将断开其连接。 UMD 可以尝试重新连接Ring,KMD 将为该队列分配一个新的Ring。 其目的不是使 UMD 停滞,而是允许它继承提交工作;一旦上下文恢复,HW 引擎最终可以处理这些工作。
恢复硬件上下文:
Dxgkrnl 调用 DxgkddiResumeContext。
KMD 将上下文的所有 HWQueue 添加到 HW 筹划程序的列表。

引擎 F 状态转换

在传统的内核模式工作提交中,Dxgkrnl 负责向 HWQueue 提交新命令,并监视来自 KMD 的完成停止。 因此,Dxgkrnl 可以完整地了解引擎何时处于活动状态和空闲状态。
在用户模式工作提交中,Dxgkrnl 使用 TDR 超时节奏监视 GPU 引擎是否正在举行。因此,假如值得在两秒的 TDR 超时时间之前启动到 F1 状态的转换,KMD 可以请求 OS 执行此操作。
为了促进这一做法,作出了以下改动:
DXGK_INTERRUPT_GPU_ENGINE_STATE_CHANGE 停止范例被添加到 DXGK_INTERRUPT_TYPE。 KMD 使用此停止通知 Dxgkrnl 引擎状态转换,这些转换需要 GPU 电源操作或超时恢复,比方 Active -> TransitionToF1 和 Active -> Hung。
EngineStateChange 停止数据结构被添加到 DXGKARGCB_NOTIFY_INTERRUPT_DATA。
添加了 DXGK_ENGINE_STATE 枚举来表示 EngineStateChange 的引擎状态转换。
当 KMD 引发 DXGK_INTERRUPT_GPU_ENGINE_STATE_CHANGE 停止时,EngineStateChange.NewState 设置为 DXGK_ENGINE_STATE_TRANSITION_TO_F1,Dxgkrnl 会断开此引擎上 HWQueue 的所有Ring的连接,然后启动 F0 到 F1 电源组件转换。
当 UMD 试图在 F1 状态下向 GPU 引擎提交新工作时,需要重新连接Ring,这反过来又会导致 Dxgkrnl 启动转换回 F0 电源状态。
引擎 D 状态转换

在 D0 到 D3 设备电源状态转换期间,Dxgkrnl 挂起 HWQueue,断开Ring(将Ring CPUVA 旋转到捏造页面),并将 DoorbellStatusCpuVirtualAddress Ring状态更新为 D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY。
假如 UMD 在 GPU 处于 D3 时调用 D3DKMTConnectDoorbell,则会强制 Dxgkrnl 将 GPU 叫醒到 D0。 Dxgkrnl 还负责恢复 HWQueue,并将Ring CPUVA 旋转到物理Ring位置。
变乱发生的顺序如下。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4