структура DXGKARG_SUBMITCOMMAND (d3dkmddi.h)

Структура DXGKARG_SUBMITCOMMAND описывает буфер прямого доступа к памяти (DMA), который драйвер мини-порта дисплея отправляет аппаратному блоку выполнения команд во время вызова DxgkDdiSubmitCommand.

Синтаксис

typedef struct _DXGKARG_SUBMITCOMMAND {
  union {
    HANDLE hDevice;
    HANDLE hContext;
  };
  UINT                           DmaBufferSegmentId;
  PHYSICAL_ADDRESS               DmaBufferPhysicalAddress;
  UINT                           DmaBufferSize;
  UINT                           DmaBufferSubmissionStartOffset;
  UINT                           DmaBufferSubmissionEndOffset;
  VOID                           *pDmaBufferPrivateData;
  UINT                           DmaBufferPrivateDataSize;
  UINT                           DmaBufferPrivateDataSubmissionStartOffset;
  UINT                           DmaBufferPrivateDataSubmissionEndOffset;
  UINT                           SubmissionFenceId;
  D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
  D3DDDI_FLIPINTERVAL_TYPE       FlipInterval;
  DXGK_SUBMITCOMMANDFLAGS        Flags;
  UINT                           EngineOrdinal;
  D3DGPU_VIRTUAL_ADDRESS         DmaBufferVirtualAddress;
  UINT                           NodeOrdinal;
} DXGKARG_SUBMITCOMMAND;

Члены

hDevice

[in] Если драйвер не поддерживает несколько подсистем (т. е. драйвер не поддерживает создание контекста), hDevice — это дескриптор устройства отображения (графический контекст), от которого был создан запрос на отправку. Дескриптор устройства предоставляется для функции DxgkDdiSubmitCommand драйвера в объединении, которое содержит DXGKARG_SUBMITCOMMAND .

Для некоторых операций подкачки hDevice имеет значение NULL (например, операции разбиения по страницам, которые вытесляют содержимое всего буфера кадра во время управления питанием). Операции разбиения по страницам обозначаются флагом битового поля разбиения по страницам в элементе Flags .

hContext

[in] Если драйвер поддерживает несколько подсистем (то есть драйвер поддерживает создание контекста), дескриптор для контекста устройства, из которого был получен запрос на отправку. Дескриптор контекста предоставляется функции DxgkDdiSubmitCommand драйвера в объединении, которое содержит DXGKARG_SUBMITCOMMAND .

Для некоторых операций подкачки hContext имеет значение NULL (например, операции разбиения по страницам, которые вытесляют содержимое всего буфера кадра во время управления питанием). Операции разбиения по страницам обозначаются флагом битового поля разбиения по страницам в элементе Flags .

DmaBufferSegmentId

[in] Идентификатор сегмента памяти, в который был помещен буфер DMA.

Идентификатор может быть равен нулю, если драйвер указал, что не сопоставляет буфер DMA с сегментом, задав членУ DmaBufferSegmentSet структуры DXGK_CONTEXTINFO значение 0 в вызове функции DxgkDdiCreateContext драйвера. Если значение DmaBufferSegmentId равно нулю, буфер DMA был выделен как непрерывный блок системной памяти.

DmaBufferPhysicalAddress

[in] Тип данных PHYSICAL_ADDRESS (который определяется как LARGE_INTEGER), указывающий физический адрес, в котором был выгружается буфер DMA.

Если значение DmaBufferSegmentId равно нулю, DmaBufferPhysicalAddress — это физический адрес в системной памяти, где находится буфер DMA.

Если значение DmaBufferSegmentId не равно нулю , DmaBufferPhysicalAddress — физический адрес сегмента для буфера DMA; То есть адрес указывает на физический адрес сегмента диафрагмы , который представляет собой непрерывное адресное пространство, определенное в физической памяти (DXGK_SEGMENTDESCRIPTOR. BaseAddress + DmaBuffer.SegmentOffset).

Обратите внимание, что DmaBufferPhysicalAddress всегда ссылается на начало буфера DMA, несмотря на то, что драйверу может потребоваться исправление или отправка раздела буфера DMA, который не содержит начало буфера DMA (то есть, если член DmaBufferSubmissionStartOffset не имеет нуля).

DmaBufferSize

[in] Размер буфера DMA (в байтах).

DmaBufferSize представляет всю длину буфера DMA; Однако запрос на исправление или отправку может относиться только к части буфера DMA.

DmaBufferSubmissionStartOffset

[in] Смещение (в байтах) от начала буфера DMA до начала части буфера DMA, требующей исправления или отправки. Смещение, полученное во время исправления, соответствует смещению, полученному во время отправки.

DmaBufferSubmissionEndOffset

[in] Смещение (в байтах) от начала буфера DMA до конца части буфера DMA, требующей исправления или отправки. Смещение, полученное во время исправления, соответствует смещению, полученному во время отправки.

pDmaBufferPrivateData

[in] Указатель на частные данные, находящиеся в драйвере, связанные с буфером DMA, который был заполнен во время функции DxgkDdiRender, DxgkDdiPresent или DxgkDdiPatch .

Для операций разбиения по страницам один буфер подкачки используется для нескольких независимых отправок. В этом сценарии драйвер может указать , возвращая соответствующий указатель данных частного драйвера в вызове функции DxgkDdiBuildPagingBuffer , чтобы иметь либо один частный диапазон данных драйвера для всех отправок, либо один для каждой отправки.

DmaBufferPrivateDataSize

[in] Размер данных частного драйвера, на которые указывает pDmaBufferPrivateData , в байтах.

DmaBufferPrivateDataSize представляет всю длину буфера данных частного драйвера; однако часть, связанная с текущей отправкой, может быть меньше.

KMD не должен проверять личные данные, если этот элемент равен нулю.

DmaBufferPrivateDataSubmissionStartOffset

[in] Смещение (в байтах) от начала частных данных буфера DMA, указанного pDmaBufferPrivateData , до начала части частных данных, связанной с текущей отправкой. Значение DmaBufferPrivateDataSubmissionStartOffset всегда равно нулю для непашного запроса.

DmaBufferPrivateDataSubmissionEndOffset

[in] Смещение (в байтах) от начала частных данных буфера DMA, указанного pDmaBufferPrivateData , до конца части частных данных, связанной с текущей отправкой.

SubmissionFenceId

[in] Уникальный идентификатор, который драйвер может записать в команду ограждения в кольцевом буфере, который представляет собой буфер, в котором буферы DMA помещаются в очередь для выполнения графического модуля обработки (GPU). Дополнительные сведения об этих типах идентификаторов см. в разделе Предоставление идентификаторов ограждения.

VidPnSourceId

[in] Отсчитываемый от нуля идентификационный номер источника видеотрансляции в пути к топологии сети видеотрансляции (VidPN) для операции переворачивания. Этот элемент действителен, только если в элементе Flags установлен флаг битового поля Flip или FlipWithNoWait.

FlipInterval

[in] D3DDDI_FLIPINTERVAL_TYPE типизированное значение, указывающее интервал переворачивания (т. е. если переворачивание происходит после нулевой, одной, двух, трех или четырех вертикальных синхронизаций). FlipInterval действителен, только если в элементе Flags установлен флаг битового поля Flip (то есть TRUE).

Flags

[in] Структура DXGK_SUBMITCOMMANDFLAGS , определяющая сведения о буфере DMA для отправки.

EngineOrdinal

[in] Зарезервирован для будущего использования.

DmaBufferVirtualAddress

Этот элемент зарезервирован и должен иметь нулевое значение. Поддерживается начиная с Windows 7.

NodeOrdinal

Отсчитываемый от нуля индекс узла, для который создается контекст. Идентифицирует узел, если контекст имеет значение NULL. Поддерживается начиная с Windows 8.

Комментарии

Функция DxgkDdiSubmitCommand драйвера мини-порта дисплея должна учитывать, что несколько процессов могут получить доступ к объекту устройства, указанному элементом hDevice одновременно.

Требования

Требование Значение
Минимальная версия клиента Windows Vista (WDDM 1.0)
Верхняя часть d3dkmddi.h (включая D3dkmddi.h)

См. также раздел

D3DDDI_FLIPINTERVAL_TYPE

DXGK_CONTEXTINFO

DXGK_SUBMITCOMMANDFLAGS

DxgkCbNotifyDpc

DxgkCbNotifyInterrupt

DxgkDdiBuildPagingBuffer

DxgkDdiCreateContext

DxgkDdiPatch

DxgkDdiPresent

DxgkDdiRender

DxgkDdiSubmitCommand