Partager via


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)

Voir aussi

D3D10_DDI_RESOURCE_MISC_FLAG

pfnRenderCb

pfnSubmitCommandCb