struttura DXGKARG_PRESENT (d3dkmddi.h)
La struttura DXGKARG_PRESENT descrive un'operazione di copia da origine a primaria.
Sintassi
typedef struct _DXGKARG_PRESENT {
[out] VOID *pDmaBuffer;
[in] UINT DmaSize;
[in] VOID *pDmaBufferPrivateData;
[in] UINT DmaBufferPrivateDataSize;
union {
[in] DXGK_ALLOCATIONLIST *pAllocationList;
[in] DXGK_PRESENTALLOCATIONINFO *pAllocationInfo;
[in] DXGK_PRESENTMULTIPLANEOVERLAYINFO *pPresentMultiPlaneOverlayInfo;
};
#if ...
[in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
#if ...
[in] UINT PatchLocationListOutSize;
[in] DXGK_ALLOCATIONLIST *pAllocationList;
#else
[in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
#endif
#else
[in] UINT PatchLocationListOutSize;
#endif
[in/out] UINT MultipassOffset;
[in] UINT Color;
[in] RECT DstRect;
[in] RECT SrcRect;
[in] UINT SubRectCnt;
[in] const RECT *pDstSubRects;
[in] D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
[in] DXGK_PRESENTFLAGS Flags;
[in] UINT DmaBufferSegmentId;
[in] PHYSICAL_ADDRESS DmaBufferPhysicalAddress;
[in] UINT Reserved;
D3DGPU_VIRTUAL_ADDRESS DmaBufferGpuVirtualAddress;
UINT NumSrcAllocations;
UINT NumDstAllocations;
UINT PrivateDriverDataSize;
PVOID pPrivateDriverData;
} DXGKARG_PRESENT;
Members
[out] pDmaBuffer
Puntatore all'inizio del buffer DMA, allineato a 4 KB. Questo buffer può essere inviato tramite DMA all'hardware grafico. Prima che il driver miniport di visualizzazione torni dalla funzione DxgkDdiPresent , il driver deve impostare pDmaBuffer sul byte vuoto successivo che segue l'ultimo byte a cui il driver ha scritto oppure il driver deve puntare alla posizione (un byte oltre lo spazio del buffer) se non è disponibile più spazio. Questa posizione sarebbe stata corretta se il buffer fosse sufficientemente grande.
[in] DmaSize
Dimensioni, in byte, del buffer DMA a cui punta pDmaBuffer .
[in] pDmaBufferPrivateData
Puntatore a una struttura di dati privati residenti nel driver associata al buffer DMA a cui punta pDmaBuffer .
[in] DmaBufferPrivateDataSize
Numero di byte che rimangono nella struttura di dati privati a cui pDmaBufferPrivateData punta per l'operazione corrente.
[in] pAllocationList
Matrice di strutture DXGK_ALLOCATIONLIST che descrivono l'origine, la destinazione o entrambi per l'operazione di copia. Il driver accede all'handle di allocazione di origine tramite il membro hDeviceSpecificAllocation dell'elemento pAllocationList[DXGK_PRESENT_SOURCE_INDEX] (ovvero l'elemento 1). Il driver accede all'handle di allocazione di destinazione tramite il membro hDeviceSpecificAllocation dell'elemento pAllocationList[DXGK_PRESENT_DESTINATION_INDEX] (ovvero l'elemento 2).
Gli handle specificati negli elementi dell'elenco di allocazione sono gli handle specifici del dispositivo restituiti dalla funzione DxgkDdiOpenAllocation del driver all'apertura delle allocazioni. Se un'origine o una destinazione non è presente per l'operazione, il membro hDeviceSpecificAllocation del rispettivo elemento è NULL. Questo membro è disponibile a partire da Windows 7.
Nota
Il membro hDeviceSpecificAllocation del primo elemento dell'elenco di allocazione (elemento 0) è sempre NULL.
[in] pAllocationInfo
Riservato per l'utilizzo nel sistema. Il driver miniport di visualizzazione deve ignorare questo membro. Questo membro è disponibile a partire da Windows 7.
[in] pPresentMultiPlaneOverlayInfo
Puntatore a una struttura di tipo DXGK_PRESENTMULTIPLANEOVERLAYINFO che specifica informazioni su un input VidPN e un piano di sovrapposizione da visualizzare.
Supportato a partire da Windows 8.
[in/out] pPatchLocationListOut
Matrice di strutture D3DDDI_PATCHLOCATIONLIST per l'elenco patch-location riempito dal driver miniport. Prima che il driver torni da una chiamata alla relativa funzione DxgkDdiPresent , il driver deve impostare pPatchLocationListOut sull'elemento D3DDDI_PATCHLOCATIONLIST successivo che segue l'ultimo elemento D3DDDI_PATCHLOCATIONLIST aggiornato dal driver.
[in] PatchLocationListOutSize
Numero di elementi nell'elenco patch-location specificato da pPatchLocationListOut . Il driver miniport di visualizzazione non è necessario per riempire tutti gli elementi nell'intero elenco; il driver deve usare solo gli elementi necessari per descrivere il percorso della patch all'interno del buffer DMA.
[in/out] MultipassOffset
Valore UINT che specifica lo stato di avanzamento dell'operazione di copia se la funzione DxgkDdiPresent del driver del miniport di visualizzazione deve restituire STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER per ottenere un nuovo buffer DMA. Quando la funzione DxgkDdiPresent del driver viene chiamata per la prima volta con un nuovo elenco RECT , MultipassOffset viene inizializzato su zero. Prima che il driver torni dalla chiamata DxgkDdiPresent , il driver imposta MultipassOffset per mostrare lo stato di avanzamento della copia per le successive chiamate DxgkDdiPresent con lo stesso buffer dei comandi. Il sottosistema kernel grafico Microsoft DirectX non modifica ulteriormente il valore.
[in] Color
Il colore A8R8G8B8 in un'operazione di riempimento dei colori, specificata dal flag di campo di bit ColorFill impostato nel membro Flags o da un'operazione con chiave di colore, specificata dal flag di bit SrcColorKey o DstColorKey . Si noti che solo uno dei flag di campo di bit ColorFill, SrcColorKey e DstColorKey viene impostato in qualsiasi momento.
Se il formato primario è pallido RGB, Color contiene l'indice della tavolozza anziché il valore D3DDDIFMT_A8R8G8B8 dal tipo di enumerazione D3DDDIFORMAT .
[in] DstRect
Struttura RECT per il rettangolo di destinazione utilizzato per calcolare il fattore di estensione.
[in] SrcRect
Struttura RECT per il rettangolo di origine utilizzato per calcolare il fattore di estensione.
[in] SubRectCnt
Numero di sotto rettangoli di destinazione nella matrice specificata da pDstSubRects .
[in] pDstSubRects
Matrice di strutture RECT per l'elenco dei sotto rettangoli di destinazione in cui viene copiata la funzione DxgkDdiPresent .
[in] FlipInterval
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.
[in] Flags
Struttura DXGK_PRESENTFLAGS che identifica, in flag di campo di bit, il tipo di operazione da eseguire. Si noti che i flag di campo di bit ColorFill, SrcColorKey e DstColorKey in Flags si escludono a vicenda.
[in] DmaBufferSegmentId
Identificatore del segmento di memoria in cui è stato eseguito il paging del buffer DMA. Se l'identificatore è zero, il buffer DMA non viene eseguito correttamente il paging.
[in] DmaBufferPhysicalAddress
Tipo di dati PHYSICAL_ADDRESS (definito come LARGE_INTEGER) che indica l'indirizzo fisico in cui è stato eseguito il paging del buffer DMA. Se l'indirizzo fisico è zero, il buffer DMA non viene eseguito correttamente il paging.
[in] Reserved
Riservato per l'utilizzo nel sistema. Il driver deve ignorare questo membro.
DmaBufferGpuVirtualAddress
Tipo di dati D3DGPU_VIRTUAL_ADDRESS che indica l'indirizzo virtuale in cui è stato eseguito il paging del buffer DMA. Se l'indirizzo fisico è zero, il buffer DMA non viene eseguito correttamente il paging.
NumSrcAllocations
Numero di allocazioni di contesto nell'origine.
NumDstAllocations
Numero di allocazioni di contesto nella destinazione.
PrivateDriverDataSize
Dimensioni di pPrivateDriverData.
pPrivateDriverData
Puntatore a un buffer contenente i dati facoltativi del driver privato.
Commenti
Il rapporto tra le aree rettangolari di origine e destinazione specificate dai membri SrcRect e DstRect viene usato per calcolare un fattore di estensione. Il driver può considerare il calcolo del fattore di estensione quando esegue l'operazione di copia.
Il driver non è necessario per eseguire alcun ritaglio. Il sottosistema kernel della grafica DirectX Microsoft preclips l'elenco dei sotto rettangoli di destinazione specificati dal membro pDstSubRects alle coordinate del rettangolo di destinazione specificato dal membro DstRect e sullo schermo (primario). Si noti che se in pDstSubRects viene fornito un elenco di sotto rettangoli di destinazione, il driver deve usare solo SrcRect e DstRect per calcolare il fattore di estensione e deve usare le coordinate dei sotto rettangoli di destinazione per l'operazione di copia effettiva.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista |
Intestazione | d3dkmddi.h (include D3dkmddi.h) |