DXGKCB_CREATECONTEXTALLOCATION回调函数 (d3dkmddi.h)

DXGKCB_CREATECONTEXTALLOCATION 分配 GPU 上下文或特定于设备的上下文。

语法

DXGKCB_CREATECONTEXTALLOCATION DxgkcbCreatecontextallocation;

NTSTATUS DxgkcbCreatecontextallocation(
  [in/out] INOUT_PDXGKARGCB_CREATECONTEXTALLOCATION unnamedParam1
)
{...}

参数

[in/out] unnamedParam1

指向 DXGKARGCB_CREATECONTEXTALLOCATION 结构的指针,该结构指定要分配的上下文的属性。

返回值

如果成功,DXGKCB_CREATECONTEXTALLOCATION 将返回 STATUS_SUCCESS 。 否则,它将返回 Ntstatus.h 中定义的错误代码之一。

注解

从 WDDM 1.2 开始,显示微型端口驱动程序可以分配特定于 GPU 的上下文 (GPU 上下文分配) 或特定于设备的上下文 (设备上下文分配) 。

GPU 上下文分配允许 GPU 存储执行期间被抢占的 DMA 缓冲区中的上下文状态。 驱动程序创建与 GPU 上下文关联的分配,以在必要时保存其状态。 操作系统确保在将来自此上下文的命令放入 GPU 的硬件执行队列之前,上下文分配处于驻留状态。 上下文将保持驻留状态,直到来自另一个上下文的命令放置在硬件执行队列中。

此外,操作系统支持延迟 GPU 上下文切换,方法是在完成属于上下文的命令后,假定 GPU 上保留硬件上下文状态。 这样,只有在将来自不同上下文的命令提交到硬件队列时,才会在 GPU 上切换上下文。

DXGKCB_XXX 函数由 Dxgkrnl 实现。 若要使用此回调函数,请设置 DXGKARGCB_ALLOCATEPAGESFORMDL 的成员,然后通过 DXGKRNL_INTERFACE调用 DxgkCbCreateContextAllocation

GPU 上下文分配

只能对非系统上下文进行 GPU 上下文分配。 显示微型端口驱动程序通过调用 DxgkDdiCreateContext 来创建这些上下文。 若要创建非系统上下文,驱动程序将 DXGK_CREATECONTEXTFLAGS 结构的 SystemContext 成员设置为零,并在 pCreateContext 参数中传递指向此结构的指针。

设备上下文分配遵循类似的模型,不同之处在于,对于属于其关联的设备的任何上下文,设备上下文分配将保持驻留状态。 此模型允许驱动程序使用 GPU 上下文分配来存储 GPU 上下文保存区域 (CSA) 数据,并使用设备上下文分配来存储页表数据。

设备上下文分配

只能对非系统设备进行设备上下文分配。 显示微型端口驱动程序通过调用 DxgkDdiCreateDevice 创建这些设备。 若要创建非系统设备,驱动程序将 DXGK_CREATEDEVICEFLAGS 结构的 Flags.SystemDevice 成员设置为零,并在 pCreateDevice 参数中传递指向此结构的指针。

显示微型端口驱动程序调用 DXGKCB_DESTROYCONTEXTALLOCATION 以释放通过 DxgkCbCreateContextAllocation 分配的上下文资源。

目标上下文分配的虚拟地址

若要确保操作系统为目标上下文分配设置有效的 (非 NULL) 虚拟地址, (DXGKARG_BUILDPAGINGBUFFER 结构) 的 InitContextResource-Destination-VirtualAddress>> 成员,当显示微型端口驱动程序调用 DxgkCbCreateContextAllocation 时,它必须:

要求

要求
最低受支持的客户端 Windows 8 (WDDM 1.2)
最低受支持的服务器 Windows Server 2012
目标平台 桌面
标头 d3dkmddi.h (包括 D3dkmddi.h)
IRQL PASSIVE_LEVEL

另请参阅

DXGK_ALLOCATIONINFOFLAGS

DXGK_CREATECONTEXTFLAGS

DXGK_CREATEDEVICEFLAGS

DXGKARG_BUILDPAGINGBUFFER

DXGKARGCB_CREATECONTEXTALLOCATION

DXGKCB_DESTROYCONTEXTALLOCATION

DxgkDdiCreateContext

DxgkDdiCreateDevice

DXGKRNL_INTERFACE