structure D3D11_RESOURCE_FLAGS (d3d11on12.h)

Utilisé avec ID3D11On12Device ::CreateWrappedResource pour remplacer les indicateurs qui seraient déduits par les propriétés de ressource ou les propriétés de tas, notamment les indicateurs de liaison, les indicateurs d’erreur et les indicateurs d’accès au processeur.

Syntaxe

typedef struct D3D11_RESOURCE_FLAGS {
  UINT BindFlags;
  UINT MiscFlags;
  UINT CPUAccessFlags;
  UINT StructureByteStride;
} D3D11_RESOURCE_FLAGS;

Membres

BindFlags

Les indicateurs de liaison doivent être complètement déduits ou complètement spécifiés pour permettre au pilote graphique d’étendre une ressource D3D12 générale à quelque chose que D3D11 peut comprendre.

Si un indicateur de liaison est spécifié qui n’est pas pris en charge par la ressource fournie, une erreur est retournée.

Les indicateurs de liaison suivants (D3D11_BIND_FLAG constantes d’énumération) ne sont pas supposés et doivent être spécifiés pour qu’une ressource soit utilisée de cette manière :

  • D3D11_BIND_VERTEX_BUFFER
  • D3D11_BIND_INDEX_BUFFER
  • D3D11_BIND_CONSTANT_BUFFER
  • D3D11_BIND_STREAM_OUTPUT
  • D3D11_BIND_DECODER
  • D3D11_BIND_VIDEO_ENCODER
Les indicateurs de liaison suivants sont supposés en fonction de la présence de l’indicateur de ressource D3D12 correspondant et peuvent être supprimés en spécifiant les indicateurs de liaison :
  • D3D11_BIND_SHADER_RESOURCE, tant que D3D12_RESOURCE_MISC_DENY_SHADER_RESOURCE n’est pas présent
  • D3D11_BIND_RENDER_TARGET, si D3D12_RESOURCE_MISC_ALLOW_RENDER_TARGET est présent
  • D3D11_BIND_DEPTH_STENCIL, si D3D12_RESOURCE_MISC_ALLOW_DEPTH_STENCIL est présent
  • D3D11_BIND_UNORDERED_ACCESS, si D3D12_RESOURCE_MISC_ALLOW_UNORDERED_ACCESS est présent
Une cible de rendu ou une mémoire tampon UAV peut être encapsulée sans remplacer les indicateurs ; mais une mémoire tampon VB/IB/CB/SO doit avoir des indicateurs de liaison spécifiés manuellement, car ceux-ci s’excluent mutuellement dans Direct3D 11.

MiscFlags

Si les indicateurs d’erreur ne sont pas nuls, tous les indicateurs spécifiés seront OR’d dans le desc de ressource final avec des indicateurs déduits. Les indicateurs d’erreur peuvent être partiellement spécifiés pour ajouter des fonctionnalités, mais les indicateurs incorrects qui sont implicites ne peuvent pas être masqués.

Les indicateurs d’erreur suivants (D3D11_RESOURCE_MISC_FLAG constantes d’énumération) ne sont pas supposés :

  • D3D11_RESOURCE_MISC_GENERATE_MIPS (conflits avec CLAMP).
  • D3D11_RESOURCE_MISC_TEXTURECUBE (modifie le comportement d’affichage par défaut).
  • D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS (exclusif avec certains indicateurs de liaison).
  • D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS (exclusif avec d’autres types d’UAV).
  • D3D11_RESOURCE_MISC_BUFFER_STRUCTURED (exclusif avec d’autres types d’UAV).
  • D3D11_RESOURCE_MISC_RESOURCE_CLAMP (interdit les QIs D3D10, est en conflit avec GENERATE_MIPS).
  • D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX. Il est possible de créer une ressource mutex à clé D3D11, de créer un handle partagé pour celle-ci et de l’ouvrir via 11on12 ou D3D11.
Les indicateurs d’erreur suivants sont supposés et ne peuvent pas être supprimés de la ressource desc produite. Si l’un de ces éléments est défini et que la ressource D3D12 ne le prend pas en charge, la création échoue :
  • D3D11_RESOURCE_MISC_SHARED, D3D11_RESOURCE_MISC_SHARED_NTHANDLE, D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE, si des indicateurs d’erreur de tas appropriés sont présents.
  • D3D11_RESOURCE_MISC_GDI_COMPATIBLE, si la ressource D3D12 est compatible avec GDI.
  • D3D11_RESOURCE_MISC_TILED, si la ressource D3D12 a été créée via CreateReservedResource.
  • D3D11_RESOURCE_MISC_TILE_POOL, si un tas D3D12 a été transmis.
Les indicateurs d’erreur suivants ne peuvent pas être spécifiés pour cette API :
  • D3D11_RESOURCE_MISC_RESTRICTED_CONTENT, puisque D3D12 prend uniquement en charge la protection matérielle.
  • D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER n’existe pas dans 12 et ne peut pas être ajouté après la création de la ressource.
  • D3D11_RESOURCE_MISC_GUARDED est uniquement destiné à être défini par un mécanisme de création interne.

CPUAccessFlags

Les cpuAccessFlags ne sont pas déduits de la ressource D3D12. Cela est dû au fait que toutes les ressources sont traitées comme D3D11_USAGE_DEFAULT, de sorte que CPUAccessFlags force la validation, ce qui suppose que mappe des mémoires tampons ou des textures par défaut. Les ressources encapsulées ne prennent pas en charge Map(DISCARD). Les ressources encapsulées ne prennent pas en charge Map(NO_OVERWRITE), mais elles peuvent être implémentées en mappant la ressource D3D12 sous-jacente à la place. L’émission d’un appel de carte sur une ressource encapsulée se synchronise avec tout le travail D3D11 envoyé sur cette ressource, sauf si l’indicateur DO_NOT_WAIT a été utilisé.

StructureByteStride

Taille de chaque élément de la structure de mémoire tampon (en octets) lorsque la mémoire tampon représente une mémoire tampon structurée.

Remarques

Utilisez cette structure avec CreateWrappedResource.

Configuration requise

Condition requise Valeur
En-tête d3d11on12.h

Voir aussi

Structures 11on12