Condividi tramite


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)

Vedi anche

D3DDDI_FLIPINTERVAL_TYPE

D3DDDI_PATCHLOCATIONLIST

DXGK_ALLOCATIONLIST

DXGK_PRESENTFLAGS

DXGK_PRESENTMULTIPLANEOVERLAYINFO

DxgkDdiPresent

RECT