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(例如,在电源管理期间逐出整个帧缓冲区内容的分页作)。 分页作由 标志 成员中的 分页 位字段标志指示。
hContext
[in]如果驱动程序具有多引擎感知(即驱动程序支持创建上下文),则为提交请求源自的设备上下文的句柄。 上下文句柄提供给驱动程序的 DxgkDdiSubmitCommand 函数,该函数 DXGKARG_SUBMITCOMMAND 包含。
对于某些分页作,hContext 为 NULL(例如,在电源管理期间逐出整个帧缓冲区内容的分页作)。 分页作由 标志 成员中的 分页 位字段标志指示。
DmaBufferSegmentId
[in]DMA 缓冲区分页到的内存段的标识符。
如果驱动程序指示不通过将 DmaBufferSegmentSetDXGK_CONTEXTINFO 结构的成员设置为 0,则驱动程序指示在调用 驱动程序的 dxgkDdiCreateContext 函数时,该标识符可以为零。 如果 DmaBufferSegmentId 为零,则 DMA 缓冲区被分配为系统内存连续块。
DmaBufferPhysicalAddress
[in]PHYSICAL_ADDRESS数据类型(定义为LARGE_INTEGER),指示 DMA 缓冲区在其中分页的物理地址。
如果 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)拓扑路径中视频演示源的从零开始的标识号,用于翻转作。 仅当 Flip 或 FlipWithNoWait 位字段标志在 标志 成员中设置时,此成员才有效。
FlipInterval
[in]一个 D3DDDI_FLIPINTERVAL_TYPE类型的值,该值指示翻转间隔(即,如果翻转发生在零、一、二、三或四个垂直同步之后)。 FlipInterval 仅在 标志 成员中设置 Flip 位字段标志(即 true)时有效。
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) |