指定 DMA 缓冲区的段

显示微型端口驱动程序可以指定可从中分配 DMA 缓冲区的光圈段。 DMA 缓冲区也可以分配为连续锁定的系统内存。

当应用程序需要 DMA 缓冲区时,视频内存管理器会分配和销毁这些缓冲区。 因此,视频内存管理器需要一组可以分配 DMA 缓冲区的段。 请注意,段集可能只包含一个段。

当 Microsoft DirectX 图形内核子系统调用显示微型端口驱动程序的 DxgkDdiCreateDevice 函数来创建图形上下文设备时,显示微型端口驱动程序可以指定视频内存管理器可从中分配 DMA 缓冲区的段集。 如果显示微型端口驱动程序将 DXGK_DEVICEINFO 结构的 DmaBufferSegmentSet 成员设置为 0,则视频内存管理器将为 DMA 缓冲区分配连续非分页内存;在这种情况下,显示微型端口驱动程序必须使用 PCI 周期访问内存,并且必须通过 DMA 直接从内存的物理地址发送数据。 如果显示微型端口驱动程序将 DmaBufferSegmentSet 设置为非零,则视频内存管理器将分配可分页内存并将页面映射到指定的光圈段。 光圈段内的页面在调用其 DxgkDdiSubmitCommand 函数时显示给显示微型端口驱动程序。

请注意,基本视频内存管理器模型不支持本地视频内存中的 DMA 缓冲区。