DXGKDDI_SUSPENDCONTEXT回调函数 (d3dkmddi.h)
DxgkddiSuspendContext 指示 GPU 挂起上下文。 如果 GPU 未确认 TDR 中的暂停完成 (超时检测和恢复) 超时,OS 将检测引擎超时并执行引擎重置。
语法
DXGKDDI_SUSPENDCONTEXT DxgkddiSuspendcontext;
NTSTATUS DxgkddiSuspendcontext(
IN_CONST_HANDLE hAdapter,
IN_CONST_PDXGKARG_SUSPENDCONTEXT pSuspendContext
)
{...}
参数
hAdapter
[in]要抢占并标记为挂起的硬件上下文。 这种类型的抢占请求没有宽限期,预计 GPU 会尽快接受。
pSuspendContext
[in]指向包含此函数的其他参数 的 DXGKARG_SUSPENDCONTEXT 结构的指针。
返回值
如果在此调用时上下文已挂起,DxgkddiSuspendContext 将返回STATUS_SUCCESS。 否则,此值设置为 STATUS_PENDING,当通过中断向 contextSuspendFence 发出信号时,暂停操作将完成。
注解
通过在 DRIVER_INITIALIZATION_DATA 中设置此回调函数来注册此回调函数 的实现。
即使 GPU 可以启动轮循机制抢占,但 OS 仍需要一种方法来出于其他原因抢占上下文;例如,如果需要移动其分配或执行 GPU 电源转换。
当 OS 暂停上下文、不等待暂停确认、恢复并再次挂起上下文时,上下文挂起值是必需的。 暂停值将允许 OS 区分以前的暂停确认和最新的暂停确认。
暂停上下文后,假定对其的所有引用都从 GPU 消失,操作系统可以随意销毁上下文或移动其内存。 与 WDDM 2.3 或更早版本不同,以前由 DxgkDdiSubmitCommandVirtual 中的 ContextSwitch 标志指示的单独 NULL 上下文切换命令) (在 WDDM 2.4 计划模式下存在,因为 DxgkddiSuspendContext 应该执行此操作。
要求
要求 | 值 |
---|---|
Header | d3dkmddi.h |