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 中消失,并且 OS 可以自由销毁上下文或移动其内存。 与 WDDM 2.3 或更早版本不同,WDDM 2.4 计划模式中不存在单独的 NULL 上下文开关命令(以前由 DxgkDdiSubmitCommandVirtual中的 ContextSwitch 标志指示),因为 DxgkddiSuspendContext 应该执行此作。
要求
要求 | 价值 |
---|---|
标头 | d3dkmddi.h |