Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Структура DXGKARG_SUBMITCOMMAND описывает буфер DMA, который драйвер мини-порта дисплея (KMD) отправляет в аппаратную единицу выполнения команд во время вызова функции 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 сети для операции переверки. Этот элемент действителен только в том случае, если флаг bit-field Flip или FlipWithNoWait установлен в элементе Flags.
FlipInterval
[in] Значение D3DDDI_FLIPINTERVAL_TYPEтипа, указывающее интервал переверки (то есть, если перевернуть происходит после нуля, одного, двух, трех или четырех вертикальных синхронизаций). FlipInterval действителен только в том случае, если флаг " Флип-битовое поле" установлен (т. е. TRUE) в элементе Flags .
Flags
[in] Структура DXGK_SUBMITCOMMANDFLAGS , которая определяет сведения о буфере DMA для отправки.
EngineOrdinal
[in] Зарезервировано для дальнейшего использования.
DmaBufferVirtualAddress
Этот элемент зарезервирован и должен иметь значение нулю. Поддерживается начиная с Windows 7.
NodeOrdinal
Отсчитываемый от нуля индекс узла, для который создается контекст. Определяет узел, если контекст имеет значение NULL. Поддерживается начиная с Windows 8.
Замечания
Функция dxgkDdiSubmitCommand драйвера мини-порта дисплея должна учитывать, что несколько процессов могут получить доступ к объекту устройства, указанному элементом hDevice одновременно.
Требования
Требование | Ценность |
---|---|
Минимальный поддерживаемый клиент | Windows Vista (WDDM 1.0) |
Заголовок | d3dkmddi.h (include D3dkmddi.h) |