structure DXGKARG_RENDER (d3dkmddi.h)

La structure DXGKARG_RENDER décrit les membres pour générer une mémoire tampon d’accès direct à la mémoire (DMA) à partir d’une mémoire tampon de commande.

Syntaxe

typedef struct _DXGKARG_RENDER {
  [in]     const VOID               *pCommand;
  [in]     UINT                     CommandLength;
  [out]    VOID                     *pDmaBuffer;
  [in]     UINT                     DmaSize;
  [in]     VOID                     *pDmaBufferPrivateData;
  [in]     UINT                     DmaBufferPrivateDataSize;
  [in]     DXGK_ALLOCATIONLIST      *pAllocationList;
  [in]     UINT                     AllocationListSize;
  [in]     D3DDDI_PATCHLOCATIONLIST *pPatchLocationListIn;
  [in]     UINT                     PatchLocationListInSize;
  [in/out] D3DDDI_PATCHLOCATIONLIST *pPatchLocationListOut;
  [in]     UINT                     PatchLocationListOutSize;
  [in/out] UINT                     MultipassOffset;
  [in]     UINT                     DmaBufferSegmentId;
  [in]     PHYSICAL_ADDRESS         DmaBufferPhysicalAddress;
} DXGKARG_RENDER;

Membres

[in] pCommand

Pointeur vers le début de la mémoire tampon de commande.

Note Lorsque DxgkDdiRender est appelé, le pilote miniport d’affichage doit valider la mémoire tampon. Consultez Remarques dans DxgkDdiRender pour obtenir des informations importantes sur la façon dont le pilote doit accéder à ce membre.
 

[in] CommandLength

Taille, en octets, de la mémoire tampon de commande vers laquelle pCommand pointe.

[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 des fonctions DxgkDdiRender ou DxgkDdiRenderKm , le pilote doit définir pDmaBuffer sur l’octet vide suivant le dernier octet dans 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 utilisée pour générer la mémoire tampon DMA vers laquelle pDmaBuffer pointe.

[in] DmaBufferPrivateDataSize

Nombre d’octets restant 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 pour la liste des allocations référencées par la mémoire tampon DMA. Chaque allocation référencée doit apparaître une fois pour des performances optimales.

[in] AllocationListSize

Nombre d’éléments disponibles dans le tableau spécifié par pAllocationList , qui représente le nombre de spécifications d’allocation à envoyer via DMA au matériel graphique.

[in] pPatchLocationListIn

Tableau de D3DDDI_PATCHLOCATIONLIST structures pour la liste d’emplacement de correctif que le pilote d’affichage en mode utilisateur fournit dans un appel à la fonction pfnRenderCb .

Note Lorsque DxgkDdiRender est appelé, le pilote miniport d’affichage doit valider la mémoire tampon. Consultez Remarques dans DxgkDdiRender pour obtenir des informations importantes sur la façon dont le pilote doit accéder à ce membre.
 

[in] PatchLocationListInSize

Nombre d’éléments dans la liste d’emplacements correctifs spécifiés par pPatchLocationListIn .

[in/out] pPatchLocationListOut

Tableau de structures de D3DDDI_PATCHLOCATIONLIST pour la liste d’emplacements correctives que le pilote miniport d’affichage remplit. Avant que le pilote ne retourne d’un appel à ses fonctions DxgkDdiRender ou DxgkDdiRenderKm , le pilote doit définir pPatchLocationListOut sur l’élément D3DDDI_PATCHLOCATIONLIST suivant le dernier élément D3DDDI_PATCHLOCATIONLIST mis à jour.

[in] PatchLocationListOutSize

Nombre d’éléments dans la liste d’emplacements correctifs 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 rendu si les fonctions DxgkDdiRender ou DxgkDdiRenderKm du pilote miniport d’affichage doivent retourner STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER pour obtenir une nouvelle mémoire tampon DMA. Lorsque la fonction DxgkDdiRender ou DxgkDdiRenderKm du pilote est d’abord appelée avec une nouvelle mémoire tampon de commande, MultipassOffset est initialisé à zéro. Avant que le pilote ne retourne à partir des appels DxgkDdiRender ou DxgkDdiRenderKm , le pilote définit ce membre pour afficher la progression de la traduction pour les appels DxgkDdiRender ou DxgkDdiRenderKm suivants avec la même mémoire tampon de commande. Le sous-système du noyau graphique DirectX ne modifie pas davantage la valeur.

[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 dans.

[in] DmaBufferPhysicalAddress

Un PHYSICAL_ADDRESS type de données (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 dans.

Remarques

La prise en charge de la fonction DxgkDdiRenderKm est ajoutée à partir de Windows 7 pour les cartes d’affichage qui prennent en charge l’accélération matérielle GDI.

Configuration requise

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

Voir aussi

D3DDDI_PATCHLOCATIONLIST

DXGK_ALLOCATIONLIST

DxgkDdiRender

DxgkDdiRenderKm

pfnRenderCb