DXGK_CONTEXTINFO 结构 (d3dkmddi.h)
DXGK_CONTEXTINFO结构描述设备上下文。
语法
typedef struct _DXGK_CONTEXTINFO {
UINT DmaBufferSize;
UINT DmaBufferSegmentSet;
UINT DmaBufferPrivateDataSize;
UINT AllocationListSize;
UINT PatchLocationListSize;
UINT Reserved;
DXGK_CONTEXTINFO_CAPS Caps;
ULONG PagingCompanionNodeId;
} DXGK_CONTEXTINFO;
成员
DmaBufferSize
通过直接内存访问 (DMA) 发送到图形处理单元 (GPU) 的硬件命令缓冲区的大小(以字节为单位)。
创建上下文后,DMA 缓冲区可以增大和收缩;但是,DMA 缓冲区的收缩不能小于 DmaBufferSize 指定的起始大小。
DmaBufferSegmentSet
应让 GPU 访问 DMA 缓冲区的段的标识符。
DmaBufferPrivateDataSize
与每个 DMA 缓冲区关联的驻留驱动程序专用数据结构的大小(以字节为单位)。 此专用数据结构的内存是从非分页池分配的。 如果驱动程序在 DmaBufferPrivateDataSize 中指定零,则不为专用数据结构分配内存。
创建 DMA 缓冲区时,与 DMA 缓冲区关联的专用数据结构将初始化为零。 在 DMA 缓冲区的生存期内,视频内存管理器永远不会访问与 DMA 缓冲区关联的专用数据结构。
AllocationListSize
分配数组中的起始元素数 (即 ) DXGK_ALLOCATIONLIST 结构的数组。 此数字是驱动程序在调用驱动程序的 DxgkDdiPresent 和 DxgkDdiRender 函数时请求在DXGKARG_PRESENT的 pAllocationList 成员中的起始分配数,DXGKARG_RENDER结构。
创建上下文后,分配列表可以增大和收缩;但是,分配列表的收缩不能小于 AllocationListSize 指定的起始大小。
PatchLocationListSize
修补程序位置数组中的起始元素数 (,即用户模式和内核模式下设备) D3DDDI_PATCHLOCATIONLIST结构的数组 。 此数字是驱动程序在调用其 DxgkDdiRender 函数时请求位于 DXGKARG_RENDER 结构的 pPatchLocationListIn 成员中的修补程序位置的起始数目。
创建上下文后,修补程序位置列表可以增长和收缩;但是,修补程序位置列表的收缩不能小于 PatchLocationListSize 指定的起始大小。
Reserved
此成员为保留成员,应设置为零。
此成员从 Windows 7 开始可用。
Caps
描述上下文支持的可选功能。
从 Windows 10 开始支持。
PagingCompanionNodeId
指定要用于此上下文分页伴侣的引擎的从零开始的引擎标识符。
从 Windows 10 开始支持。
注解
显示微型端口驱动程序指定 DmaBufferSize 和 AllocationListSize 成员的值,以确保:
- Microsoft DirectX 图形子系统只能使用一个直接内存访问 (DMA) 缓冲区来显示 (,方法是使用显示微型端口驱动程序的 DxgkDdiPresent 函数) 至少一个 RECT 结构,适用于所有方案。
- DMA 和分配列表缓冲区的大小足以容纳至少一个不能跨多个缓冲区拆分的命令。
- DMA 和分配列表缓冲区的大小足以避免设置和 DMA 开销。
如果驱动程序将 DmaBufferSegmentSet 设置为 0,则视频内存管理器会为 DMA 缓冲区分配连续的分页锁定内存(即映射的写入组合内存)。 因此,GPU 必须在不允许 AGP 光圈外发生的 AGP 传输的计算机上使用 PCI 周期来访问 DMA 缓冲区。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
标头 | d3dkmddi.h (包括 D3dkmddi.h) |