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

指示用户模式显示驱动程序支持的 Windows (ETW 事件跟踪) 日志中的标记类型的D3DDDI_MARKERLOGTYPE枚举。

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 的 写入主 列表的所有分配。 其他运行时未更改。

如果驱动程序收到具有此标志的 CreateResource 调用,则应在写入图面的每个 pfnSubmitCommandCb 调用上将分配添加到此列表中。

要求

要求
最低受支持的客户端 Windows 10
最低受支持的服务器 Windows Server 2016
标头 d3dumddi.h (包括 D3dumddi.h)

另请参阅

D3D10_DDI_RESOURCE_MISC_FLAG

pfnRenderCb

pfnSubmitCommandCb