struttura DXGKARG_SUBMITCOMMAND (d3dkmddi.h)

La struttura DXGKARG_SUBMITCOMMAND descrive il buffer DMA (Direct Memory Access) inviato da un driver miniport visualizzato all'unità di esecuzione dei comandi hardware durante una chiamata a DxgkDdiSubmitCommand.

Sintassi

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;

Members

hDevice

[in] Se il driver non è compatibile con più motori (ovvero il driver non supporta la creazione del contesto), hDevice è un handle per il dispositivo di visualizzazione (contesto grafico) da cui ha avuto origine la richiesta di invio. Un handle di dispositivo viene fornito alla funzione DxgkDdiSubmitCommand del driver nell'unione che DXGKARG_SUBMITCOMMAND contiene.

Per alcune operazioni di paging, hDevice è NULL (ad esempio, operazioni di paging che eliminano il contenuto dell'intero buffer frame durante il risparmio energia). Le operazioni di paging sono indicate dal flag di campo di bit paging nel membro Flags .

hContext

[in] Se il driver è compatibile con più motori( ovvero il driver supporta la creazione del contesto), un handle per il contesto di dispositivo da cui ha avuto origine la richiesta di invio. Un handle di contesto viene fornito alla funzione DxgkDdiSubmitCommand del driver nell'unione che DXGKARG_SUBMITCOMMAND contiene.

Per alcune operazioni di paging, hContext è NULL( ad esempio, operazioni di paging che eliminano il contenuto dell'intero buffer frame durante il risparmio energia). Le operazioni di paging sono indicate dal flag di campo di bit paging nel membro Flags .

DmaBufferSegmentId

[in] Identificatore del segmento di memoria in cui è stato eseguito il paging del buffer DMA.

L'identificatore può essere zero se il driver indica di non eseguire il mapping del buffer DMA nel segmento impostando il membro DmaBufferSegmentSet della struttura DXGK_CONTEXTINFO su 0 in una chiamata alla funzione DxgkDdiCreateContext del driver. Se DmaBufferSegmentId è zero, il buffer DMA è stato allocato come blocco contiguo di memoria di sistema.

DmaBufferPhysicalAddress

[in] Tipo di dati PHYSICAL_ADDRESS (definito come LARGE_INTEGER) che indica l'indirizzo fisico in cui è stato eseguito il paging del buffer DMA.

Se DmaBufferSegmentId è zero, DmaBufferPhysicalAddress è l'indirizzo fisico nella memoria di sistema in cui si trova il buffer DMA.

Se DmaBufferSegmentId è diverso da zero, DmaBufferPhysicalAddress è l'indirizzo fisico del segmento per il buffer DMA; ovvero l'indirizzo punta a un indirizzo fisico del segmento di apertura , ovvero uno spazio di indirizzi contiguo definito nella memoria fisica (DXGK_SEGMENTDESCRIPTOR. BaseAddress + DmaBuffer.SegmentOffset).

Si noti che DmaBufferPhysicalAddress fa sempre riferimento all'inizio del buffer DMA anche se il driver potrebbe essere necessario applicare patch o inviare una sezione del buffer DMA che non include l'inizio del buffer DMA, ovvero se il membro DmaBufferSubmissionStartOffset è diverso da zero.

DmaBufferSize

[in] Dimensione, in byte, del buffer DMA.

DmaBufferSize rappresenta l'intera lunghezza del buffer DMA; Tuttavia, la richiesta di applicare patch o inviare potrebbe fare riferimento solo a una parte del buffer DMA.

DmaBufferSubmissionStartOffset

[in] Offset, in byte, dall'inizio del buffer DMA all'inizio della parte del buffer DMA che richiede l'applicazione di patch o l'invio. L'offset ricevuto al momento della patch corrisponde all'offset ricevuto al momento dell'invio.

DmaBufferSubmissionEndOffset

[in] Offset, in byte, dall'inizio del buffer DMA alla fine della parte del buffer DMA che richiede l'applicazione di patch o l'invio. L'offset ricevuto al momento della patch corrisponde all'offset ricevuto al momento dell'invio.

pDmaBufferPrivateData

[in] Puntatore ai dati privati residenti dal driver associati al buffer DMA riempito durante la funzione DxgkDdiRender, DxgkDdiPresent o DxgkDdiPatch .

Per le operazioni di paging, viene usato un singolo buffer di paging per più invii indipendenti. In questo scenario, il driver può indicare, restituendo il puntatore dati del driver privato appropriato in una chiamata alla funzione DxgkDdiBuildPagingBuffer , in modo da avere un singolo intervallo di dati privati del driver per tutti gli invii o uno per ogni invio.

DmaBufferPrivateDataSize

[in] Dimensioni dei dati del driver privato a cui pDmaBufferPrivateData punta, in byte.

DmaBufferPrivateDataSize rappresenta l'intera lunghezza del buffer dei dati del driver privato; Tuttavia, la parte associata all'invio corrente potrebbe essere più piccola.

Il kmD non deve convalidare i dati privati quando questo membro è zero.

DmaBufferPrivateDataSubmissionStartOffset

[in] Offset, in byte, dall'inizio dei dati privati del buffer DMA che pDmaBufferPrivateData specifica all'inizio della parte dei dati privati associati all'invio corrente. DmaBufferPrivateDataSubmissionStartOffset è sempre zero per una richiesta non dipaging.

DmaBufferPrivateDataSubmissionEndOffset

[in] Offset, in byte, dall'inizio dei dati privati del buffer DMA specificati da pDmaBufferPrivateData alla fine della parte dei dati privati associati all'invio corrente.

SubmissionFenceId

[in] Identificatore univoco che il driver può scrivere nel comando di isolamento nel buffer circolare, ovvero il buffer in cui i buffer DMA vengono accodati per l'esecuzione dell'unità di elaborazione grafica (GPU). Per altre informazioni su questi tipi di identificatori, vedere Fornitura di identificatori di isolamento.

VidPnSourceId

[in] Numero di identificazione in base zero del video presente nell'origine in un percorso di una topologia di rete presente video (VidPN) per un'operazione di inversione. Questo membro è valido solo quando il flag di campo di bit Flip o FlipWithNoWait è impostato nel membro Flags .

FlipInterval

[in] Valore tipizzato D3DDDI_FLIPINTERVAL_TYPE che indica l'intervallo di capovolgimento, ovvero se l'inversione si verifica dopo zero, uno, due, tre o quattro sincronizzazioni verticali. FlipInterval è valido solo se il flag di campo di bit Flip è impostato (vale a dire TRUE) nel membro Flags .

Flags

[in] Struttura DXGK_SUBMITCOMMANDFLAGS che identifica le informazioni sul buffer DMA da inviare.

EngineOrdinal

[in] Riservato per un utilizzo futuro.

DmaBufferVirtualAddress

Questo membro è riservato e deve essere impostato su zero. Supportato a partire da Windows 7.

NodeOrdinal

Indice in base zero del nodo per cui viene creato il contesto. Identifica il nodo quando il contesto è NULL. Supportato a partire da Windows 8.

Commenti

La funzione DxgkDdiSubmitCommand del driver miniport di visualizzazione deve essere consapevole che più processi possono accedere all'oggetto dispositivo specificato dal membro hDevice contemporaneamente.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista (WDDM 1.0)
Intestazione d3dkmddi.h (include D3dkmddi.h)

Vedi anche

D3DDDI_FLIPINTERVAL_TYPE

DXGK_CONTEXTINFO

DXGK_SUBMITCOMMANDFLAGS

DxgkCbNotifyDpc

DxgkCbNotifyInterrupt

DxgkDdiBuildPagingBuffer

DxgkDdiCreateContext

DxgkDdiPatch

DxgkDdiPresent

DxgkDdiRender

DxgkDdiSubmitCommand