Partager via


structure DXGKARG_PRESENT (d3dkmddi.h)

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

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, aligné sur 4 Ko. Cette mémoire tampon peut être envoyée via DMA au matériel graphique. Avant le retour du pilote miniport d’affichage de la fonction DxgkDdiPresent, le pilote doit définir pDmaBuffer sur l’octet vide suivant 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 vers.

[in] pDmaBufferPrivateData

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

[in] DmaBufferPrivateDataSize

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

[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 l’élément hDeviceSpecificAllocation membre de l’élément pAllocationList[DXGK_PRESENT_SOURCE_INDEX] (c’est-à-dire, élément 1). Le pilote accède au handle d’allocation de destination via l’élément hDeviceSpecificAllocation membre de l’élément pAllocationList[DXGK_PRESENT_DESTINATION_INDEX] (c’est-à-dire, élément 2).

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

Note

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

[in] pAllocationInfo

Réservé à l’utilisation du système. Le pilote 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.

Prise en charge à partir de Windows 8.

[in/out] pPatchLocationListOut

Tableau de structures D3DDDI_PATCHLOCATIONLIST pour la liste d’emplacements de correctifs que le pilote miniport d’affichage remplit. Avant que le pilote ne retourne d’un appel à sa fonction DxgkDdiPresent, le pilote doit définir pPatchLocationListOut à 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 d’emplacements de correctifs qui pPatchLocationListOut spécifie. Le pilote 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 DxgkDdiPresentdu 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 d’abord appelée avec une nouvelle liste de RECT, multipassOffset est initialisée à zéro. Avant le retour du pilote à partir de l’appel DxgkDdiPresent, le pilote définit MultipassOffset pour afficher la progression de la copie pour les appels de DxgkDdiPresent 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

Couleur A8R8G8B8 dans une opération de remplissage de couleur, spécifiée par l’indicateur ColorFill bit-field défini dans le membre Indicateurs, ou une opération de touche de couleur spécifiée par l’indicateur SrcColorKey ou DstColorKey indicateur de champ binaire. Notez qu’un seul des ColorFill, SrcColorKeyet indicateurs de champ binaire 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 utilisé 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 qui pDstSubRects spécifie.

[in] pDstSubRects

Tableau de structures RECT pour la liste des sous-rectangles de destination vers utilisant la fonction DxgkDdiPres ent.

[in] FlipInterval

Valeur D3DDDI_FLIPINTERVAL_TYPE-typée qui indique l’intervalle de retour (autrement dit, si le retour se produit après zéro, un, 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 ColorFill, SrcColorKeyet indicateurs de champ binaire 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

Type de données PHYSICAL_ADDRESS (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é à l’utilisation du système. Le pilote doit ignorer ce membre.

DmaBufferGpuVirtualAddress

Type de données D3DGPU_VIRTUAL_ADDRESS 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 stretch-factor lorsqu’il effectue l’opération de copie.

Le pilote n’est pas requis pour effectuer une capture. Le sous-système du noyau graphique Microsoft DirectX préclipse la liste des sous-rectangles de destination que le pDstSubRects membre spécifie aux coordonnées du rectangle de destination que le membre DstRect spécifie 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.

Exigences

Exigence Valeur
client minimum pris en charge Windows Vista
d’en-tête d3dkmddi.h (include D3dkmddi.h)

Voir aussi

D3DDDI_FLIPINTERVAL_TYPE

D3DDDI_PATCHLOCATIONLIST

DXGK_ALLOCATIONLIST

DXGK_PRESENTFLAGS

DXGK_PRESENTMULTIPLANEOVERLAYINFO

DxgkDdiPresent

RECT