structure D3DDDICB_SUBMITCOMMAND (d3dumddi.h)
La structure D3DDDICB_SUBMITCOMMAND est utilisée pour envoyer des mémoires tampons de commande sur des contextes qui prennent en charge l’adressage virtuel de l’unité 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 l’exécution. Ces informations sont fournies au pilote en mode noyau pendant 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 pendant 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 contexte à lequel ces commandes doivent être envoyées. Ce nombre doit être d’au moins 1.
BroadcastContext[D3DDDI_MAX_BROADCAST_CONTEXT]
Spécifie le handle du contexte à 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 données du pilote privé transmises. Cette taille doit être inférieure à la taille demandée par le pilote en mode noyau pour l’envoi de données de pilote privé.
NumPrimaries
Spécifie le nombre de valeurs primaires et de mémoires tampons de rémutation 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 mémoires tampons primaires et de retour de permutation en cours d’écriture par les commandes envoyées.
MarkerLogType
Énumération D3DDDI_MARKERLOGTYPE qui indique le type de marqueur dans le journal 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 à une valeur de 1 pour les contextes associés aux DDIS en mode utilisateur monothread et aux plages à une valeur de 0x80000001 pour les contextes associés aux DDIS en mode utilisateur libre. Le pilote d’affichage en mode utilisateur doit incrémenter la valeur de chaque pfnRenderCb l’appeler sur n’importe quel moteur.
FirstAPISequenceNumberHigh
Utilisé par le pilote pour passer le numéro de séquence d’API du contexte.
CompletedAPISequenceNumberLow0Size
Utilisé par le pilote pour passer le numéro de séquence d’API du contexte.
CompletedAPISequenceNumberLow1Size
Utilisé par le pilote pour passer le numéro de séquence d’API du contexte.
BegunAPISequenceNumberLow0Size
Utilisé par le pilote pour passer le numéro de séquence d’API du contexte.
BegunAPISequenceNumberLow1Size
Utilisé par le pilote pour passer 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 lots 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 passer 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 pfnSubmitCommandCb chemin de code ne fournit plus de liste d’allocations 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’allocations spécifiquement pour les surfaces qui seront écrites dans et utilisées pour l’affichage du contenu. Le tableau WrittenPrimaries doit être utilisé pour fournir ces allocations.
Malgré le nom, WrittenPrimaries doit contenir des allocations considérées comme SwapChainBackBuffer allocations en fonction du runtime en plus des primaires. Ceci est exposé au pilote en mode utilisateur par un nouvel indicateur dans D3D10_DDI_RESOURCE_MISC_FLAG. Le runtime fournit l’indicateur de 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 flipEx swapchain 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 pfnSubmitCommandCb appel qui écrit sur la surface.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 10 |
serveur minimum pris en charge | Windows Server 2016 |
d’en-tête | d3dumddi.h (include D3dumddi.h) |