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)

另请参阅

D3D10_DDI_RESOURCE_MISC_FLAG

pfnRenderCb

pfnSubmitCommandCb