Partager via


DXGKARG_PRESENT structure (d3dkmddi.h)

La structure DXGKARG_PRESENT décrit une opération de copie de source à principale.

Syntaxe

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;

Membres

[out] pDmaBuffer

Pointeur vers le début de la mémoire tampon DMA, qui est alignée sur 4 Ko. Cette mémoire tampon peut être envoyée via DMA au matériel graphique. Avant que le pilote miniport d’affichage ne retourne à partir de la fonction DxgkDdiPresent , le pilote doit définir pDmaBuffer sur l’octet vide suivant qui suit le dernier octet sur lequel le pilote a écrit, ou le pilote doit pointer vers l’emplacement (un octet au-delà de l’espace tampon) si aucun espace supplémentaire n’est disponible. Cet emplacement aurait été correct si la mémoire tampon était suffisamment grande.

[in] DmaSize

Taille, en octets, de la mémoire tampon DMA vers laquelle pDmaBuffer pointe.

[in] pDmaBufferPrivateData

Pointeur vers une structure de données privées résidente du pilote associée à la mémoire tampon DMA vers laquelle pointe pDmaBuffer .

[in] DmaBufferPrivateDataSize

Nombre d’octets qui restent dans la structure de données privée vers laquelle pDmaBufferPrivateData pointe pour l’opération en cours.

[in] pAllocationList

Tableau de structures DXGK_ALLOCATIONLIST qui décrivent la source, la destination ou les deux pour l’opération de copie. Le pilote accède au handle d’allocation source via le membre hDeviceSpecificAllocation de l’élément pAllocationList[DXGK_PRESENT_SOURCE_INDEX] (c’est-à-dire l’élément 1). Le pilote accède au handle d’allocation de destination via le membre hDeviceSpecificAllocation de l’élément pAllocationList[DXGK_PRESENT_DESTINATION_INDEX] (c’est-à-dire l’élément 2).

Les descripteurs spécifiés dans les éléments de la liste d’allocation sont les handles spécifiques aux appareils que la fonction DxgkDdiOpenAllocation du pilote a retournées lors de l’ouverture des allocations. Si aucune source ou destination n’est présente pour l’opération, le membre hDeviceSpecificAllocation de l’élément respectif est NULL. Ce membre est disponible à partir de Windows 7.

Notes

Le membre hDeviceSpecificAllocation du premier élément de la liste d’allocation (élément 0) est toujours NULL.

[in] pAllocationInfo

Réservé pour le système. Le pilote de miniport d’affichage doit ignorer ce membre. Ce membre est disponible à partir de Windows 7.

[in] pPresentMultiPlaneOverlayInfo

Pointeur vers une structure de type DXGK_PRESENTMULTIPLANEOVERLAYINFO qui spécifie des informations sur une entrée VidPN et un plan de superposition à afficher.

Pris en charge à partir de Windows 8.

[in/out] pPatchLocationListOut

Tableau de structures D3DDDI_PATCHLOCATIONLIST pour la liste d’emplacements de correctif que le pilote de miniport d’affichage remplit. Avant que le pilote ne retourne d’un appel à sa fonction DxgkDdiPresent , le pilote doit définir pPatchLocationListOut sur l’élément D3DDDI_PATCHLOCATIONLIST suivant le dernier élément D3DDDI_PATCHLOCATIONLIST mis à jour par le pilote.

[in] PatchLocationListOutSize

Nombre d’éléments dans la liste des emplacements de correctif spécifiés par pPatchLocationListOut . Le pilote de miniport d’affichage n’est pas nécessaire pour remplir tous les éléments de la liste entière ; le pilote doit utiliser uniquement les éléments nécessaires pour décrire l’emplacement du correctif dans la mémoire tampon DMA.

[in/out] MultipassOffset

Valeur UINT qui spécifie la progression de l’opération de copie si la fonction DxgkDdiPresent du pilote miniport d’affichage doit retourner STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER pour obtenir une nouvelle mémoire tampon DMA. Lorsque la fonction DxgkDdiPresent du pilote est appelée pour la première fois avec une nouvelle liste RECT , MultipassOffset est initialisé à zéro. Avant que le pilote ne revienne de l’appel DxgkDdiPresent , le pilote définit MultipassOffset pour afficher la progression de la copie pour les appels DxgkDdiPresent suivants avec la même mémoire tampon de commande. Le sous-système du noyau graphique Microsoft DirectX ne modifie pas davantage la valeur.

[in] Color

Le A8R8G8B8 couleur dans une opération de remplissage de couleur, qui est spécifiée par l’indicateur de champ de bits ColorFill défini dans le membre Indicateurs , ou une opération de touche de couleur, qui est spécifiée par l’indicateur de champ binaire SrcColorKey ou DstColorKey . Notez qu’un seul des indicateurs de champ binaire ColorFill, SrcColorKey et DstColorKey est défini à tout moment.

Si le format principal est RVB palettisé, Color contient l’index de palette plutôt que la valeur D3DDDIFMT_A8R8G8B8 du type d’énumération D3DDDIFORMAT .

[in] DstRect

Structure RECT pour le rectangle de destination qui est utilisée pour calculer le facteur d’étirement.

[in] SrcRect

Structure RECT pour le rectangle source utilisé pour calculer le facteur d’étirement.

[in] SubRectCnt

Nombre de sous-rectangles de destination dans le tableau spécifié par pDstSubRects .

[in] pDstSubRects

Tableau de structures RECT pour la liste des sous-rectangles de destination que la fonction DxgkDdiPresent copie.

[in] FlipInterval

Valeur de type D3DDDI_FLIPINTERVAL_TYPE qui indique l’intervalle de retournement (autrement dit, si le retournement se produit après zéro, une, deux, trois ou quatre synchronisations verticales).

[in] Flags

Structure DXGK_PRESENTFLAGS qui identifie, dans les indicateurs de champ binaire, le type d’opération actuelle à effectuer. Notez que les indicateurs de champ binaire ColorFill, SrcColorKey et DstColorKey dans Indicateurs s’excluent mutuellement.

[in] DmaBufferSegmentId

Identificateur du segment de mémoire dans lequel la mémoire tampon DMA a été paginée. Si l’identificateur est égal à zéro, la mémoire tampon DMA n’est pas correctement paginée.

[in] DmaBufferPhysicalAddress

Un PHYSICAL_ADDRESS type de données (qui est défini comme LARGE_INTEGER) qui indique l’adresse physique dans laquelle la mémoire tampon DMA a été paginée. Si l’adresse physique est égale à zéro, la mémoire tampon DMA n’est pas correctement paginée.

[in] Reserved

Réservé pour le système. Le pilote doit ignorer ce membre.

DmaBufferGpuVirtualAddress

Un D3DGPU_VIRTUAL_ADDRESS type de données qui indique l’adresse virtuelle dans laquelle la mémoire tampon DMA a été paginée. Si l’adresse physique est égale à zéro, la mémoire tampon DMA n’est pas correctement paginée.

NumSrcAllocations

Nombre d’allocations de contexte dans la source.

NumDstAllocations

Nombre d’allocations de contexte dans la destination.

PrivateDriverDataSize

Taille de pPrivateDriverData.

pPrivateDriverData

Pointeur vers une mémoire tampon qui contient des données de pilote privé facultatives.

Remarques

Le ratio des zones rectangulaires source et de destination que les membres SrcRect et DstRect spécifient est utilisé pour calculer un facteur d’étirement. Le pilote peut prendre en compte le calcul du facteur d’étirement lorsqu’il effectue l’opération de copie.

Le pilote n’est pas tenu d’effectuer un découpage. Le sous-système du noyau graphique Microsoft DirectX préclipse la liste des sous-rectangles de destination que le membre pDstSubRects spécifie aux coordonnées du rectangle de destination spécifié par le membre DstRect et à l’écran (principal). Notez que si une liste de sous-rectangles de destination est fournie dans pDstSubRects, le pilote doit utiliser uniquement SrcRect et DstRect pour calculer le facteur d’étirement et doit utiliser les coordonnées des sous-rectangles de destination pour l’opération de copie réelle.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
En-tête d3dkmddi.h (include D3dkmddi.h)

Voir aussi

D3DDDI_FLIPINTERVAL_TYPE

D3DDDI_PATCHLOCATIONLIST

DXGK_ALLOCATIONLIST

DXGK_PRESENTFLAGS

DXGK_PRESENTMULTIPLANEOVERLAYINFO

DxgkDdiPresent

RECT