D3DDDICB_SUBMITCOMMAND结构 (d3dumddi.h)
D3DDDICB_SUBMITCOMMAND 结构用于在支持图形处理单元(GPU)虚拟寻址的上下文上提交命令缓冲区。
语法
typedef struct _D3DDDICB_SUBMITCOMMAND {
D3DGPU_VIRTUAL_ADDRESS Commands;
UINT CommandLength;
D3DDDICB_SUBMITCOMMANDFLAGS Flags;
UINT BroadcastContextCount;
HANDLE BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT];
VOID *pPrivateDriverData;
UINT PrivateDriverDataSize;
UINT NumPrimaries;
D3DKMT_HANDLE WrittenPrimaries[D3DDDI_MAX_WRITTEN_PRIMARIES];
D3DDDI_MARKERLOGTYPE MarkerLogType;
UINT RenderCBSequence;
union {
struct {
UINT FirstAPISequenceNumberHigh;
UINT CompletedAPISequenceNumberLow0Size;
UINT CompletedAPISequenceNumberLow1Size;
UINT BegunAPISequenceNumberLow0Size;
UINT BegunAPISequenceNumberLow1Size;
};
UINT BatchedMarkerDataCount;
};
union {
struct {
const UINT *pCompletedAPISequenceNumberLow0;
const UINT *pCompletedAPISequenceNumberLow1;
const UINT *pBegunAPISequenceNumberLow0;
const UINT *pBegunAPISequenceNumberLow1;
};
const D3DDDI_BATCHEDMARKERDATA *pBatchedMarkerData;
};
UINT Reserved;
UINT NumHistoryBuffers;
D3DKMT_HANDLE *HistoryBufferArray;
HANDLE hSyncToken;
void *pReserved;
} D3DDDICB_SUBMITCOMMAND;
成员
Commands
要提交到上下文以供执行的命令的 GPU 虚拟地址。 此信息在命令提交期间提供给内核模式驱动程序,也用于调试目的。
CommandLength
指定提交到 GPU 的命令的长度(以字节为单位)。 此信息在命令提交期间提供给内核模式驱动程序,也用于调试目的。
Flags
D3DDDICB_SUBMITCOMMANDFLAGS 结构的实例。
BroadcastContextCount
指定应提交到的这些命令的上下文数。 此计数必须至少为 1。
BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT]
指定要执行指定命令的上下文的句柄。
pPrivateDriverData
指向作为此提交的一部分传递给内核模式驱动程序的驱动程序专用数据的指针。
PrivateDriverDataSize
要传递的专用驱动程序数据信息的大小。 此大小必须小于内核模式驱动程序为提交专用驱动程序数据请求的大小。
NumPrimaries
指定提交命令写入到的初选缓冲区和交换链后缓冲区的数目。 这等于 WrittenPrimaries 数组中的分配数。
WrittenPrimaries[D3DDDI_MAX_WRITTEN_PRIMARIES]
由提交命令写入到的初选缓冲区和交换链后缓冲区的句柄数组。
MarkerLogType
一个 D3DDDI_MARKERLOGTYPE 枚举,指示用户模式显示驱动程序支持的 Windows 事件跟踪(ETW)日志中的标记类型。
RenderCBSequence
每个 pfnRenderCb 函数调用的唯一标识符。 对于与单线程用户模式 DDI 关联的上下文,从值 1 开始,范围为与自由线程用户模式 DDI 关联的上下文的0x80000001值。 用户模式显示驱动程序必须递增每个 pfnRenderCb 在任何引擎上调用的值。
FirstAPISequenceNumberHigh
由驱动程序用来传递上下文的 API 序列号。
CompletedAPISequenceNumberLow0Size
由驱动程序用来传递上下文的 API 序列号。
CompletedAPISequenceNumberLow1Size
由驱动程序用来传递上下文的 API 序列号。
BegunAPISequenceNumberLow0Size
由驱动程序用来传递上下文的 API 序列号。
BegunAPISequenceNumberLow1Size
由驱动程序用来传递上下文的 API 序列号。
BatchedMarkerDataCount
由驱动程序用来传递上下文的批处理标记数据计数。
pCompletedAPISequenceNumberLow0
驱动程序用于传递上下文的 API 序列号的指针。
pCompletedAPISequenceNumberLow1
驱动程序用于传递上下文的 API 序列号的指针。
pBegunAPISequenceNumberLow0
驱动程序用于传递上下文的 API 序列号的指针。
pBegunAPISequenceNumberLow1
驱动程序用于传递上下文的 API 序列号的指针。
pBatchedMarkerData
驱动程序用于传递上下文的批处理标记数据的指针。
Reserved
此成员是保留的,应设置为零。
NumHistoryBuffers
历史记录缓冲区数。
HistoryBufferArray
指向历史记录缓冲区数组的指针。
hSyncToken
pReserved
言论
pfnSubmitCommandCb 代码路径不再为用户模式驱动程序提供分配列表,以提供将在此命令期间读取和写入的分配列表。 但是,必须同步某些在分配列表的情况下通常无法知道的写入。 为此,专门为要写入和用于显示内容的图面提供新的小型分配列表。 应使用 WrittenPrimaries 数组来提供此类分配。
尽管名称如此,WrittenPrimaries 必须包含 SwapChainBackBuffer 分配的分配(除了主要副本)。 这可通过 D3D10_DDI_RESOURCE_MISC_FLAG中的新标志向用户模式驱动程序公开。 运行时将在调用期间向用户模式驱动程序提供 D3DWDDM2_0DDI_RESOURCE_MISC_DISPLAYABLE_SURFACE 标志,以创建作为 FlipEx 交换链 或 主创建的资源或堆。 驱动程序可以使用此标志来确定应放入 Microsoft Direct3D 11 的 WrittenPrimaries 列表中的所有分配。 其他运行时未更改。
如果驱动程序收到对具有此标志 CreateResource 的调用,则应将分配添加到此列表的每个 pfnSubmitCommandCb 写入图面的调用。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 10 |
支持的最低服务器 | Windows Server 2016 |
标头 | d3dumddi.h (包括 D3dumddi.h) |