énumération D3D12_STATE_OBJECT_FLAGS (d3d12.h)

Spécifie des contraintes pour les objets d’état. Utilisez les valeurs de cette énumération dans la structure D3D12_STATE_OBJECT_CONFIG .

Syntax

typedef enum D3D12_STATE_OBJECT_FLAGS {
  D3D12_STATE_OBJECT_FLAG_NONE = 0,
  D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
  D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
  D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS
} ;

Constantes

 
D3D12_STATE_OBJECT_FLAG_NONE
Valeur : 0
Aucune contrainte d’objet d’état.
D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS
Valeur : 0x1
Cet indicateur s’applique uniquement aux objets d’état de collection de types. Sinon, cet indicateur est ignoré.

Les exportations de cette collection sont autorisées à avoir des références non résolues (dépendances) qui doivent être résolues (définies) lorsque la collection est incluse dans un objet d’état contenant, tel qu’un objet d’état de pipeline de raytracing (RTPSO). Cela inclut la dépendance des associations de sous-objets définies en externe pour associer un sous-objet externe (par exemple, une signature racine) à une exportation locale.

En l’absence de cet indicateur, toutes les exportations de cette collection doivent avoir leurs dépendances entièrement résolues localement, y compris les associations de sous-objets nécessaires définies localement. Les implémentations/pilotes avancés auront suffisamment d’informations pour compiler le code dans la collection et n’auront pas besoin de conserver un code non compilé (sauf si l’indicateur D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS est défini), de sorte que lorsque la collection est utilisée dans un objet d’état contenant (par exemple, RTPSO), un travail minimal doit être effectué par le pilote, idéalement un lien « bon marché » au maximum.
D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS
Valeur : 0x2
Cet indicateur s’applique uniquement aux objets d’état de collection de types. Sinon, cet indicateur est ignoré.

Si cette collection est incluse dans un autre objet d’état (par exemple, RTPSO), les nuanceurs/fonctions dans le reste de l’objet d’état contenant sont autorisés à dépendre des exportations (par exemple, appel) de cette collection.

En l’absence de cet indicateur (par défaut), les exportations de cette collection ne peuvent pas être référencées directement par d’autres parties d’objets d’état contenant (par exemple, RTPSO). Cela peut réduire légèrement l’empreinte mémoire de la collection, car les pilotes n’ont pas besoin de conserver du code non compilé dans la collection au risque qu’il soit appelé par une fonction externe qui compilerait ensuite tout le code ensemble. Cela dit, si toutes les associations de sous-objets nécessaires n’ont pas été définies localement pour le code de cette collection, le pilote peut ne pas encore être en mesure de compiler le code du nuanceur et peut toujours avoir besoin de conserver du code non compilé.

Une association de sous-objet définie en externe qui associe un sous-objet externe à une exportation locale ne compte pas comme dépendance externe d’une définition locale, de sorte que la présence ou l’absence de cet indicateur n’affecte pas si l’association est autorisée ou non. En revanche, si la collection active définit une association de sous-objet pour un sous-objet défini localement à une exportation externe (par exemple, nuanceur), cela compte comme dépendance externe sur une définition locale et cet indicateur doit être défini.

Quelle que soit la présence ou l’absence de cet indicateur, les points d’entrée du nuanceur (tels que les groupes d’accès ou les nuanceurs absents) dans la collection sont visibles en tant que points d’entrée d’un objet d’état contenant (par exemple, RTPSO) s’ils sont exportés par celui-ci. Dans le cas d’un RTPSO, les points d’entrée exportés peuvent être utilisés dans les tables de nuanceur pour le raytracing.

Configuration requise

Condition requise Valeur
En-tête d3d12.h