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

另请参阅

DxgkddiResumeContext

DXGKARG_SUSPENDCONTEXT