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
Header d3dumddi.h (包括 D3dumddi.h)

请参阅

D3D10_DDI_RESOURCE_MISC_FLAG

pfnRenderCb

pfnSubmitCommandCb