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) |