DXGKARG_SUBMITCOMMAND 结构 (d3dkmddi.h)
DXGKARG_SUBMITCOMMAND 结构描述显示微型端口驱动程序在调用 DxgkDdiSubmitCommand 期间提交到硬件命令执行单元的直接内存访问 (DMA) 缓冲区。
语法
typedef struct _DXGKARG_SUBMITCOMMAND {
union {
HANDLE hDevice;
HANDLE hContext;
};
UINT DmaBufferSegmentId;
PHYSICAL_ADDRESS DmaBufferPhysicalAddress;
UINT DmaBufferSize;
UINT DmaBufferSubmissionStartOffset;
UINT DmaBufferSubmissionEndOffset;
VOID *pDmaBufferPrivateData;
UINT DmaBufferPrivateDataSize;
UINT DmaBufferPrivateDataSubmissionStartOffset;
UINT DmaBufferPrivateDataSubmissionEndOffset;
UINT SubmissionFenceId;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
DXGK_SUBMITCOMMANDFLAGS Flags;
UINT EngineOrdinal;
D3DGPU_VIRTUAL_ADDRESS DmaBufferVirtualAddress;
UINT NodeOrdinal;
} DXGKARG_SUBMITCOMMAND;
成员
hDevice
[in]如果驱动程序不是多引擎感知 (即驱动程序不支持) 创建上下文, 则 hDevice 是显示设备的句柄, (图形上下文) 提交请求源自。 设备句柄将提供给驱动程序的 DxgkDdiSubmitCommand 函数 DXGKARG_SUBMITCOMMAND包含的 联合中。
对于某些分页操作, hDevice 为 NULL (例如,在电源管理) 期间逐出整个帧缓冲区内容的分页操作。 分页操作由 Flags 成员中的分页位字段标志指示。
hContext
[in]如果驱动程序是多引擎感知 (即,驱动程序支持上下文创建) ,这是提交请求源自的设备上下文的句柄。 上下文句柄在DXGKARG_SUBMITCOMMAND包含的联合中向驱动程序的 DxgkDdiSubmitCommand 函数提供。
对于某些分页操作, hContext (为 NULL,例如,在电源管理) 期间逐出整个帧缓冲区内容的分页操作。 分页操作由 Flags 成员中的分页位字段标志指示。
DmaBufferSegmentId
[in]DMA 缓冲区分页到的内存段的标识符。
如果在调用驱动程序的 DxgkDdiCreateContext 函数时,驱动程序指示不通过将 DXGK_CONTEXTINFO 结构的 DmaBufferSegmentSet 成员设置为 0,则标识符可以为零。 如果 DmaBufferSegmentId 为零,则 DMA 缓冲区分配为系统内存的连续块。
DmaBufferPhysicalAddress
[in]PHYSICAL_ADDRESS数据类型 (定义为指示 DMA 缓冲区分页的物理地址LARGE_INTEGER) 。
如果 DmaBufferSegmentId 为零, 则 DmaBufferPhysicalAddress 是 DMA 缓冲区所在的系统内存中的物理地址。
如果 DmaBufferSegmentId 为非零, 则 DmaBufferPhysicalAddress 是 DMA 缓冲区的段物理地址;也就是说,地址指向 光圈段 的物理地址,该地址是物理内存中定义的连续地址空间 (DXGK_SEGMENTDESCRIPTOR。BaseAddress + DmaBuffer.SegmentOffset) 。
请注意, DmaBufferPhysicalAddress 始终引用 DMA 缓冲区的开头,即使驱动程序可能需要修补或提交不包含 DMA 缓冲区开头的 DMA 缓冲区 ((如果 DmaBufferSubmissionStartOffset 成员为非零) )。
DmaBufferSize
[in]DMA 缓冲区的大小(以字节为单位)。
DmaBufferSize 表示 DMA 缓冲区的整个长度;但是,修补或提交请求可能仅引用 DMA 缓冲区的一部分。
DmaBufferSubmissionStartOffset
[in]从 DMA 缓冲区的开头到需要修补或提交的 DMA 缓冲区部分开头的偏移量(以字节为单位)。 修补时收到的偏移量与提交时收到的偏移量匹配。
DmaBufferSubmissionEndOffset
[in]从 DMA 缓冲区的开头到需要修补或提交的 DMA 缓冲区部分末尾的偏移量(以字节为单位)。 修补时收到的偏移量与提交时收到的偏移量匹配。
pDmaBufferPrivateData
[in]指向与 DxgkDdiRender、DxgkDdiPresent 或 DxgkDdiPatch 函数期间填充的 DMA 缓冲区关联的驻留驱动程序专用数据的指针。
对于分页操作,单个分页缓冲区用于多个独立提交。 在这种情况下,驱动程序可以通过在调用其 DxgkDdiBuildPagingBuffer 函数时返回相应的专用驱动程序数据指针来指示所有提交的单个驱动程序专用数据范围,或者为每个提交指定一个驱动程序专用数据范围。
DmaBufferPrivateDataSize
[in] pDmaBufferPrivateData 指向的专用驱动程序数据的大小(以字节为单位)。
DmaBufferPrivateDataSize 表示专用驱动程序数据缓冲区的整个长度;但是,与当前提交关联的部分可能较小。
当此成员为零时,KMD 不应验证专用数据。
DmaBufferPrivateDataSubmissionStartOffset
[in]从 pDmaBufferPrivateData 指定的 DMA 缓冲区专用数据的开头到与当前提交关联的私有数据部分开头的偏移量(以字节为单位)。 对于非分页请求,DmaBufferPrivateDataSubmissionStartOffset 始终为零。
DmaBufferPrivateDataSubmissionEndOffset
[in]从 pDmaBufferPrivateData 指定的 DMA 缓冲区专用数据的开头到与当前提交关联的私有数据部分末尾的偏移量(以字节为单位)。
SubmissionFenceId
[in]驱动程序可以写入环形缓冲区中的围栏命令的唯一标识符,该缓冲区是 DMA 缓冲区排队等待图形处理单元 (GPU) 运行的缓冲区。 有关这些类型的标识符的详细信息,请参阅 提供围栏标识符。
VidPnSourceId
[in]视频呈现网络路径中视频呈现源的从零开始的标识号 (用于翻转操作的 VidPN) 拓扑。 仅当 Flags 成员中设置了 Flip 或 FlipWithNoWait 位字段标志时,此成员才有效。
FlipInterval
[in] 一个D3DDDI_FLIPINTERVAL_TYPE类型的值,指示翻转间隔 (即,如果翻转发生在零、一、二、三或四个垂直同步) 之后。 仅当 Flip 位字段标志设置 (即 Flags 成员中的 TRUE) 时,FlipInterval 才有效。
Flags
[in]一个 DXGK_SUBMITCOMMANDFLAGS 结构,用于标识有关要提交的 DMA 缓冲区的信息。
EngineOrdinal
[in] 保留供将来使用。
DmaBufferVirtualAddress
此成员是保留成员,应设置为零。 从 Windows 7 开始受支持。
NodeOrdinal
为其创建上下文的节点的从零开始的索引。 标识上下文为 NULL 时的节点。 从 Windows 8 开始支持。
注解
显示微型端口驱动程序的 DxgkDdiSubmitCommand 函数必须知道多个进程可以访问 hDevice 成员同时指定的设备对象。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista (WDDM 1.0) |
标头 | d3dkmddi.h (包括 D3dkmddi.h) |