structure D3DDDICB_SUBMITCOMMAND (d3dumddi.h)
La structure D3DDDICB_SUBMITCOMMAND est utilisée pour envoyer des mémoires tampons de commande sur les contextes qui prennent en charge l’adressage virtuel des unités de traitement graphique (GPU).
Syntaxe
typedef struct _D3DDDICB_SUBMITCOMMAND {
D3DGPU_VIRTUAL_ADDRESS Commands;
UINT CommandLength;
D3DDDICB_SUBMITCOMMANDFLAGS Flags;
UINT BroadcastContextCount;
HANDLE BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT];
VOID *pPrivateDriverData;
UINT PrivateDriverDataSize;
UINT NumPrimaries;
D3DKMT_HANDLE WrittenPrimaries[D3DDDI_MAX_WRITTEN_PRIMARIES];
D3DDDI_MARKERLOGTYPE MarkerLogType;
UINT RenderCBSequence;
union {
struct {
UINT FirstAPISequenceNumberHigh;
UINT CompletedAPISequenceNumberLow0Size;
UINT CompletedAPISequenceNumberLow1Size;
UINT BegunAPISequenceNumberLow0Size;
UINT BegunAPISequenceNumberLow1Size;
};
UINT BatchedMarkerDataCount;
};
union {
struct {
const UINT *pCompletedAPISequenceNumberLow0;
const UINT *pCompletedAPISequenceNumberLow1;
const UINT *pBegunAPISequenceNumberLow0;
const UINT *pBegunAPISequenceNumberLow1;
};
const D3DDDI_BATCHEDMARKERDATA *pBatchedMarkerData;
};
UINT Reserved;
UINT NumHistoryBuffers;
D3DKMT_HANDLE *HistoryBufferArray;
HANDLE hSyncToken;
void *pReserved;
} D3DDDICB_SUBMITCOMMAND;
Membres
Commands
Adresse virtuelle GPU aux commandes envoyées au contexte pour exécution. Ces informations sont fournies au pilote en mode noyau lors de l’envoi de commandes et sont également utilisées à des fins de débogage.
CommandLength
Spécifie la longueur, en octets, des commandes envoyées au GPU. Ces informations sont fournies au pilote en mode noyau lors de l’envoi de commandes et sont également utilisées à des fins de débogage.
Flags
Instance de la structure D3DDDICB_SUBMITCOMMANDFLAGS.
BroadcastContextCount
Spécifie le nombre de contextes à envoyer à ces commandes. Ce nombre doit être d’au moins 1.
BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT]
Spécifie le handle du contexte pour exécuter les commandes spécifiées.
pPrivateDriverData
Pointeur vers les données privées du pilote à passer au pilote en mode noyau dans le cadre de cette soumission.
PrivateDriverDataSize
Taille des informations de pilote privé transmises. Cette taille doit être inférieure à la taille demandée par le pilote en mode noyau pour la soumission de données de pilote privé.
NumPrimaries
Spécifie le nombre de primaires et de mémoires tampons d’arrière de chaîne d’échange en cours d’écriture par les commandes envoyées. Cela est égal au nombre d’allocations dans le tableau WrittenPrimaries .
WrittenPrimaries[D3DDDI_MAX_WRITTEN_PRIMARIES]
Tableaux de handle vers les valeurs primaires et les mémoires tampons arrière de la chaîne d’échange en cours d’écriture par les commandes soumises.
MarkerLogType
Une énumération D3DDDI_MARKERLOGTYPE qui indique le type de marqueur dans le journal de suivi d’événements pour Windows (ETW) pris en charge par le pilote d’affichage en mode utilisateur.
RenderCBSequence
Identificateur unique pour chaque appel de fonction pfnRenderCb . Commence à la valeur 1 pour les contextes associés aux DDIs en mode utilisateur à thread unique et s’étend à une valeur de 0x80000001 pour les contextes associés aux DDIs en mode utilisateur à thread libre. Le pilote d’affichage en mode utilisateur doit incrémenter la valeur pour chaque appel pfnRenderCb qu’il effectue sur n’importe quel moteur.
FirstAPISequenceNumberHigh
Utilisé par le pilote pour transmettre le numéro de séquence d’API du contexte.
CompletedAPISequenceNumberLow0Size
Utilisé par le pilote pour transmettre le numéro de séquence d’API du contexte.
CompletedAPISequenceNumberLow1Size
Utilisé par le pilote pour transmettre le numéro de séquence d’API du contexte.
BegunAPISequenceNumberLow0Size
Utilisé par le pilote pour transmettre le numéro de séquence d’API du contexte.
BegunAPISequenceNumberLow1Size
Utilisé par le pilote pour transmettre le numéro de séquence d’API du contexte.
BatchedMarkerDataCount
Utilisé par le pilote pour passer le nombre de données de marqueur par lot du contexte.
pCompletedAPISequenceNumberLow0
Pointeur utilisé par le pilote pour passer le numéro de séquence d’API du contexte.
pCompletedAPISequenceNumberLow1
Pointeur utilisé par le pilote pour passer le numéro de séquence d’API du contexte.
pBegunAPISequenceNumberLow0
Pointeur utilisé par le pilote pour passer le numéro de séquence d’API du contexte.
pBegunAPISequenceNumberLow1
Pointeur utilisé par le pilote pour passer le numéro de séquence d’API du contexte.
pBatchedMarkerData
Pointeur utilisé par le pilote pour transmettre les données de marqueur par lot du contexte.
Reserved
Ce membre est réservé et doit être défini sur zéro.
NumHistoryBuffers
Nombre de mémoires tampons d’historique.
HistoryBufferArray
Pointeur vers le tableau de mémoires tampons d’historique.
hSyncToken
pReserved
Remarques
Le chemin de code pfnSubmitCommandCb ne fournit plus de liste d’allocation pour le pilote en mode utilisateur afin de fournir une liste d’allocations qui seront lues et écrites pendant cette commande. Toutefois, il est nécessaire de synchroniser certaines écritures qui ne seraient normalement pas connues sans la liste d’allocation. Pour cela, une nouvelle petite liste d’allocation spécifiquement pour les surfaces qui seront écrites et utilisées pour l’affichage du contenu. Le tableau WrittenPrimaries doit être utilisé pour fournir de telles allocations.
Malgré le nom, WrittenPrimaries doit contenir des allocations qui sont considérées comme des allocations SwapChainBackBuffer en fonction du runtime en plus des primaires. Cela est exposé au pilote en mode utilisateur par un nouvel indicateur dans D3D10_DDI_RESOURCE_MISC_FLAG. Le runtime fournit l’indicateur D3DWDDM2_0DDI_RESOURCE_MISC_DISPLAYABLE_SURFACE au pilote en mode utilisateur pendant les appels pour créer une ressource ou un tas créé en tant que chaîne d’échange FlipEx ou principal. Le pilote peut utiliser cet indicateur pour déterminer toutes les allocations qui doivent être placées dans la liste WrittenPrimaries pour Microsoft Direct3D 11. Les autres runtimes n’ont pas changé.
Si le pilote reçoit un appel à CreateResource qui a cet indicateur, l’allocation doit être ajoutée à cette liste sur chaque appel pfnSubmitCommandCb qui écrit dans la surface.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10 |
Serveur minimal pris en charge | Windows Server 2016 |
En-tête | d3dumddi.h (inclure D3dumddi.h) |