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