DXGK_DEVICEINFO 结构 (d3dkmddi.h)

DXGK_DEVICEINFO 结构描述 Microsoft DirectX 图形内核子系统需要从显示微型端口驱动程序获取的参数。

语法

typedef struct _DXGK_DEVICEINFO {
  [out] UINT                 DmaBufferSize;
  [out] UINT                 DmaBufferSegmentSet;
  [out] UINT                 DmaBufferPrivateDataSize;
  [out] UINT                 AllocationListSize;
  [out] UINT                 PatchLocationListSize;
  [out] DXGK_DEVICEINFOFLAGS Flags;
} DXGK_DEVICEINFO;

成员

[out] DmaBufferSize

通过直接内存访问 (DMA) 硬件发送的硬件命令缓冲区的大小(以字节为单位)。

创建设备后,DMA 缓冲区可以增大和收缩;但是,DMA 缓冲区永远不能收缩小于 DmaBufferSize 指定的起始大小。

[out] DmaBufferSegmentSet

应使 DMA 缓冲区可供图形处理单元访问的段的标识符 (GPU) 。

[out] DmaBufferPrivateDataSize

与每个 DMA 缓冲区关联的驻留驱动程序专用数据结构的大小(以字节为单位)。 此专用数据结构的内存是从非分页池分配的。 如果驱动程序在 DmaBufferPrivateDataSize 中指定零,则不为专用数据结构分配内存。

创建 DMA 缓冲区时,与 DMA 缓冲区关联的专用数据结构初始化为零。 在 DMA 缓冲区的生存期内,视频内存管理器永远不会访问与 DMA 缓冲区关联的专用数据结构。

[out] AllocationListSize

分配数组中的起始元素数 (即) DXGK_ALLOCATIONLIST 结构的数组。 此数字是驱动程序请求在 DXGKARG_PRESENTpAllocationList 成员中的起始分配数,并在调用驱动程序的 DxgkDdiPresentDxgkDdiRender 函数时DXGKARG_RENDER结构。

创建设备后,分配列表可以增大和收缩;但是,分配列表永远不能收缩小于 AllocationListSize 指定的起始大小。

[out] PatchLocationListSize

修补程序位置数组中的起始元素数 (,即用户模式和内核模式下设备) D3DDDI_PATCHLOCATIONLIST结构的数组 。 此数字是驱动程序在其 DxgkDdiRender 函数的调用中请求位于 DXGKARG_RENDER 结构的 pPatchLocationListIn 成员中的修补程序位置起始数。

创建设备后,修补程序位置列表可以增大和收缩;但是,修补程序位置列表永远不能缩小到 PatchLocationListSize 指定的起始大小。

[out] Flags

一个DXGK_DEVICEINFOFLAGS结构,用于在位字段标志中标识有关设备的信息。

注解

显示微型端口驱动程序指定 DmaBufferSizeAllocationListSize 成员的值,以保证以下各项:

  • DirectX 图形子系统只能使用一个 DMA 缓冲区来显示 (,方法是使用显示微型端口驱动程序的 DxgkDdiPresent 函数) 所有方案的至少一个 RECT 结构。
  • DMA 和分配列表缓冲区的大小足以容纳至少一个不能跨多个缓冲区拆分的命令。
  • DMA 和分配列表缓冲区的大小足以避免设置和 DMA 开销。
显示微型端口驱动程序只能指定 DmaBufferSegmentSet 成员中的光圈段;如果驱动程序指定内存段,则会发生设备创建失败。

如果驱动程序将 DmaBufferSegmentSet 设置为 0,则视频内存管理器会为 DMA 缓冲区分配连续的分页锁定内存,该内存是映射的写合并内存。 因此,GPU 必须在不允许 AGP 光圈外进行 AGP 传输的系统上使用 PCI 周期访问 DMA 缓冲区。

要求

要求
最低受支持的客户端 Windows Vista
标头 d3dkmddi.h (包括 D3dkmddi.h)

另请参阅

D3DDDI_PATCHLOCATIONLIST

DXGKARG_PRESENT

DXGKARG_RENDER

DXGK_ALLOCATIONLIST

DXGK_DEVICEINFOFLAGS

DxgkDdiCreateDevice

DxgkDdiPresent

DxgkDdiRender