structure DXGKARG_SUBMITCOMMAND (d3dkmddi.h)
La structure DXGKARG_SUBMITCOMMAND décrit la mémoire tampon d’accès direct à la mémoire (DMA) qu’un pilote miniport d’affichage envoie à l’unité d’exécution de commande matérielle lors d’un appel à DxgkDdiSubmitCommand.
Syntaxe
typedef struct _DXGKARG_SUBMITCOMMAND {
union {
HANDLE hDevice;
HANDLE hContext;
};
UINT DmaBufferSegmentId;
PHYSICAL_ADDRESS DmaBufferPhysicalAddress;
UINT DmaBufferSize;
UINT DmaBufferSubmissionStartOffset;
UINT DmaBufferSubmissionEndOffset;
VOID *pDmaBufferPrivateData;
UINT DmaBufferPrivateDataSize;
UINT DmaBufferPrivateDataSubmissionStartOffset;
UINT DmaBufferPrivateDataSubmissionEndOffset;
UINT SubmissionFenceId;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
D3DDDI_FLIPINTERVAL_TYPE FlipInterval;
DXGK_SUBMITCOMMANDFLAGS Flags;
UINT EngineOrdinal;
D3DGPU_VIRTUAL_ADDRESS DmaBufferVirtualAddress;
UINT NodeOrdinal;
} DXGKARG_SUBMITCOMMAND;
Membres
hDevice
[in] Si le pilote ne prend pas en charge plusieurs moteurs (autrement dit, le pilote ne prend pas en charge la création de contexte), hDevice est un handle du périphérique d’affichage (contexte graphique) d’où provient la demande de soumission. Un handle de périphérique est fourni à la fonction DxgkDdiSubmitCommand du pilote dans l’union que contient DXGKARG_SUBMITCOMMAND .
Pour certaines opérations de pagination, hDevice a la valeur NULL (par exemple, les opérations de pagination qui suppriment le contenu de la mémoire tampon d’image entière pendant la gestion de l’alimentation). Les opérations de pagination sont indiquées par l’indicateur de champ bit pagination dans le membre Indicateurs .
hContext
[in] Si le pilote est conscient de plusieurs moteurs (autrement dit, le pilote prend en charge la création de contexte), un handle vers le contexte d’appareil d’où provient la demande de soumission. Un handle de contexte est fourni à la fonction DxgkDdiSubmitCommand du pilote dans l’union que contient DXGKARG_SUBMITCOMMAND .
Pour certaines opérations de pagination, hContext a la valeur NULL (par exemple, les opérations de pagination qui suppriment le contenu de la mémoire tampon d’image entière pendant la gestion de l’alimentation). Les opérations de pagination sont indiquées par l’indicateur de champ bit pagination dans le membre Indicateurs .
DmaBufferSegmentId
[in] Identificateur du segment de mémoire dans lequel la mémoire tampon DMA a été paginée.
L’identificateur peut être égal à zéro si le pilote a indiqué de ne pas mapper la mémoire tampon DMA dans le segment en définissant le membre DmaBufferSegmentSet de la structure DXGK_CONTEXTINFO sur 0 dans un appel à la fonction DxgkDdiCreateContext du pilote. Si DmaBufferSegmentId est égal à zéro, la mémoire tampon DMA a été allouée en tant que bloc contigu de mémoire système.
DmaBufferPhysicalAddress
[in] Un PHYSICAL_ADDRESS type de données (défini comme LARGE_INTEGER) qui indique l’adresse physique où la mémoire tampon DMA a été paginée.
Si DmaBufferSegmentId est égal à zéro, DmaBufferPhysicalAddress est l’adresse physique dans la mémoire système où se trouve la mémoire tampon DMA.
Si DmaBufferSegmentId n’est pas nul, DmaBufferPhysicalAddress est l’adresse physique du segment pour la mémoire tampon DMA ; autrement dit, l’adresse pointe vers une adresse physique du segment d’ouverture qui est un espace d’adressage contigu défini dans la mémoire physique (DXGK_SEGMENTDESCRIPTOR. BaseAddress + DmaBuffer.SegmentOffset).
Notez que DmaBufferPhysicalAddress fait toujours référence au début de la mémoire tampon DMA, même si le pilote peut être nécessaire pour corriger ou envoyer une section de la mémoire tampon DMA qui n’inclut pas le début de la mémoire tampon DMA (autrement dit, si le membre DmaBufferSubmissionStartOffset est différent de zéro).
DmaBufferSize
[in] Taille, en octets, de la mémoire tampon DMA.
DmaBufferSize représente toute la longueur de la mémoire tampon DMA ; toutefois, la demande de mise à jour corrective ou d’envoi ne peut faire référence qu’à une partie de la mémoire tampon DMA.
DmaBufferSubmissionStartOffset
[in] Décalage, en octets, entre le début de la mémoire tampon DMA et le début de la partie de la mémoire tampon DMA qui nécessite une mise à jour corrective ou une soumission. Le décalage reçu au moment du correctif correspond au décalage reçu au moment de la soumission.
DmaBufferSubmissionEndOffset
[in] Décalage, en octets, du début de la mémoire tampon DMA à la fin de la partie de la mémoire tampon DMA qui nécessite une mise à jour corrective ou une soumission. Le décalage reçu au moment du correctif correspond au décalage reçu au moment de la soumission.
pDmaBufferPrivateData
[in] Pointeur vers les données privées résidentes du pilote associées à la mémoire tampon DMA qui a été remplie pendant la fonction DxgkDdiRender, DxgkDdiPresent ou DxgkDdiPatch .
Pour les opérations de pagination, une mémoire tampon de pagination unique est utilisée pour plusieurs soumissions indépendantes. Dans ce scénario, le pilote peut indiquer, en retournant le pointeur de données du pilote privé approprié dans un appel à sa fonction DxgkDdiBuildPagingBuffer , d’avoir une seule plage de données privée de pilote pour toutes les soumissions ou une pour chaque soumission.
DmaBufferPrivateDataSize
[in] Taille des données du pilote privé vers laquelle pDmaBufferPrivateData pointe, en octets.
DmaBufferPrivateDataSize représente toute la longueur de la mémoire tampon de données du pilote privé ; toutefois, la partie associée à la soumission actuelle peut être plus petite.
KMD ne doit pas valider les données privées lorsque ce membre est égal à zéro.
DmaBufferPrivateDataSubmissionStartOffset
[in] Décalage, en octets, du début des données privées de la mémoire tampon DMA que pDmaBufferPrivateData spécifie au début de la partie des données privées associées à la soumission en cours. DmaBufferPrivateDataSubmissionStartOffset est toujours égal à zéro pour une requête sans mise en service.
DmaBufferPrivateDataSubmissionEndOffset
[in] Décalage, en octets, du début des données privées de la mémoire tampon DMA que pDmaBufferPrivateData spécifie à la fin de la partie des données privées associée à la soumission actuelle.
SubmissionFenceId
[in] Identificateur unique que le pilote peut écrire dans la commande de clôture dans la mémoire tampon en anneau, qui est la mémoire tampon où les mémoires tampons DMA sont mises en file d’attente pour que l’unité de traitement graphique (GPU) s’exécute. Pour plus d’informations sur ces types d’identificateurs, consultez Fournir des identificateurs de clôture.
VidPnSourceId
[in] Numéro d’identification de base zéro de la source présente de la vidéo dans un chemin d’accès d’une topologie de réseau présent vidéo (VidPN) pour une opération de retournement. Ce membre est valide uniquement lorsque l’indicateur de champ de bits Flip ou FlipWithNoWait est défini dans le membre Indicateurs .
FlipInterval
[in] Valeur de type D3DDDI_FLIPINTERVAL_TYPE qui indique l’intervalle de basculement (autrement dit, si le basculement se produit après zéro, une, deux, trois ou quatre synchronisations verticales). FlipInterval n’est valide que si l’indicateur de champ de bits flip est défini (c’est-à-dire TRUE) dans le membre Flags .
Flags
[in] Une structure DXGK_SUBMITCOMMANDFLAGS qui identifie des informations sur la mémoire tampon DMA à envoyer.
EngineOrdinal
[in] Réservé pour une future utilisation.
DmaBufferVirtualAddress
Ce membre est réservé et doit être défini sur zéro. Pris en charge à partir de Windows 7.
NodeOrdinal
Index de base zéro du nœud pour lequel le contexte est créé. Identifie le nœud lorsque le contexte a la valeur NULL. Pris en charge à partir de Windows 8.
Remarques
La fonction DxgkDdiSubmitCommand du pilote miniport d’affichage doit savoir que plusieurs processus peuvent accéder à l’objet d’appareil spécifié par le membre hDevice en même temps.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista (WDDM 1.0) |
En-tête | d3dkmddi.h (inclure D3dkmddi.h) |