структура 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 . Начинается со значения 1 для контекстов, связанных с однопоточными DDIs в пользовательском режиме, и диапазонов до значения 0x80000001 для контекстов, связанных с DDIs в режиме пользователя со свободным потоком. Драйвер отображения пользовательского режима должен увеличивать значение для каждого вызова 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 .

Несмотря на имя, в дополнение к основным в среде выполнения должны содержаться выделения, которые считаются выделениями 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