énumération D3D12_RESOURCE_STATES (d3d12.h)

Définit des constantes qui spécifient l’état d’une ressource concernant la façon dont la ressource est utilisée.

Syntaxe

typedef enum D3D12_RESOURCE_STATES {
  D3D12_RESOURCE_STATE_COMMON = 0,
  D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
  D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
  D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
  D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
  D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
  D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
  D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
  D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
  D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
  D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
  D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
  D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
  D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
  D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
  D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
  D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000,
  D3D12_RESOURCE_STATE_GENERIC_READ,
  D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE,
  D3D12_RESOURCE_STATE_PRESENT = 0,
  D3D12_RESOURCE_STATE_PREDICATION = 0x200,
  D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000,
  D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x20000,
  D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x40000,
  D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x80000,
  D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000,
  D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000
} ;

Constantes

 
D3D12_RESOURCE_STATE_COMMON
Valeur : 0
Votre application doit passer à cet état uniquement pour accéder à une ressource sur différents types de moteurs graphiques.

Plus précisément, une ressource doit être à l’état COMMON avant d’être utilisée dans une file d’attente COPY (lorsqu’elle était précédemment utilisée sur DIRECT/COMPUTE) et avant d’être utilisée sur DIRECT/COMPUTE (lorsqu’elle était précédemment utilisée sur COPY). Cette restriction n’existe pas lors de l’accès aux données entre les files d’attente DIRECT et COMPUTE.

L’état COMMON peut être utilisé pour toutes les utilisations d’une file d’attente de copie à l’aide des transitions d’état implicites. Pour plus d’informations, dans Synchronisation multi-moteur, recherchez « common ».

En outre, les textures doivent être à l’état COMMON pour que l’accès au processeur soit légal, en supposant que la texture a été créée dans un tas visible par le processeur en premier lieu.
D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER
Valeur : 0x1
Une sous-ressource doit être dans cet état lorsqu’elle est accessible par le GPU en tant que mémoire tampon de vertex ou mémoire tampon constante. Il s’agit d’un état en lecture seule.
D3D12_RESOURCE_STATE_INDEX_BUFFER
Valeur : 0x2
Une sous-ressource doit être dans cet état lorsqu’elle est accessible par le pipeline 3D en tant que mémoire tampon d’index. Il s’agit d’un état en lecture seule.
D3D12_RESOURCE_STATE_RENDER_TARGET
Valeur : 0x4
La ressource est utilisée comme cible de rendu. Une sous-ressource doit être dans cet état lorsqu’elle est rendue dans ou lorsqu’elle est effacée avec ID3D12GraphicsCommandList::ClearRenderTargetView.

Il s’agit d’un état en écriture seule. Pour lire à partir d’une cible de rendu en tant que ressource de nuanceur, la ressource doit être D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE ou D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE.
D3D12_RESOURCE_STATE_UNORDERED_ACCESS
Valeur : 0x8
La ressource est utilisée pour l’accès non ordonné. Une sous-ressource doit être dans cet état lorsqu’elle est accessible par le GPU via une vue d’accès non ordonnée. Une sous-ressource doit également être dans cet état lorsqu’elle est effacée avec ID3D12GraphicsCommandList::ClearUnorderedAccessViewInt ou ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat. Il s’agit d’un état de lecture/écriture.
D3D12_RESOURCE_STATE_DEPTH_WRITE
Valeur : 0x10
D3D12_RESOURCE_STATE_DEPTH_WRITE est un état qui s’exclut mutuellement avec d’autres états. Vous devez l’utiliser pour ID3D12GraphicsCommandList::ClearDepthStencilView lorsque les indicateurs (voir D3D12_CLEAR_FLAGS) indiquent qu’une sous-ressource donnée doit être effacée (sinon, l’état de la sous-ressource n’a pas d’importance) ou lorsque vous l’utilisez dans une vue de gabarit de profondeur accessible en écriture (voir D3D12_DSV_FLAGS) lorsque l’écriture de profondeur est activée pour le psO (voir D3D12_DEPTH_STENCIL_DESC).
D3D12_RESOURCE_STATE_DEPTH_READ
Valeur : 0x20
DEPTH_READ est un état qui peut être combiné avec d’autres états. Il doit être utilisé lorsque la sous-ressource se trouve dans un affichage de gabarit de profondeur en lecture seule ou lorsque l’écriture de profondeur de D3D12_DEPTH_STENCIL_DESC est désactivée. Il peut être combiné avec d’autres états de lecture (par exemple, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE), de sorte que la ressource peut être utilisée pour le test de profondeur ou de gabarit et accessible par un nuanceur dans le même appel de dessin. Son utilisation lorsque la profondeur est écrite par un appel de dessin ou une commande clear n’est pas valide.
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE
Valeur : 0x40
La ressource est utilisée avec un nuanceur autre que le nuanceur de pixels. Une sous-ressource doit être dans cet état avant d’être lue par n’importe quelle étape (à l’exception de l’étape du nuanceur de pixels) via un affichage de ressources de nuanceur. Vous pouvez toujours utiliser la ressource dans un nuanceur de pixels avec cet indicateur tant qu’il a également l’indicateur D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE défini. Il s’agit d’un état en lecture seule.
D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE
Valeur : 0x80
La ressource est utilisée avec un nuanceur de pixels. Une sous-ressource doit être dans cet état avant d’être lue par le nuanceur de pixels via une vue de ressources du nuanceur. Il s’agit d’un état en lecture seule.
D3D12_RESOURCE_STATE_STREAM_OUT
Valeur : 0x100
La ressource est utilisée avec la sortie de flux. Une sous-ressource doit être dans cet état lorsqu’elle est accessible par le pipeline 3D en tant que cible de flux sortant. Il s’agit d’un état en écriture seule.
D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT
Valeur : 0x200
La ressource est utilisée comme argument indirect.
Les sous-ressources doivent être dans cet état lorsqu’elles sont utilisées comme mémoire tampon d’argument passée à la méthode de dessin indirecte ID3D12GraphicsCommandList::ExecuteIndirect.
Il s’agit d’un état en lecture seule.
D3D12_RESOURCE_STATE_COPY_DEST
Valeur : 0x400
La ressource est utilisée comme destination dans une opération de copie.
Les sous-ressources doivent être dans cet état lorsqu’elles sont utilisées comme destination d’une opération de copie ou d’une opération blt.
Il s’agit d’un état en écriture seule.
D3D12_RESOURCE_STATE_COPY_SOURCE
Valeur : 0x800
La ressource est utilisée comme source dans une opération de copie.
Les sous-ressources doivent être dans cet état lorsqu’elles sont utilisées comme source de l’opération de copie ou comme opération blt.
Il s’agit d’un état en lecture seule.
D3D12_RESOURCE_STATE_RESOLVE_DEST
Valeur : 0x1000
La ressource est utilisée comme destination dans une opération de résolution.
D3D12_RESOURCE_STATE_RESOLVE_SOURCE
Valeur : 0x2000
La ressource est utilisée comme source dans une opération de résolution.
D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE
Valeur : 0x400000
Lorsqu’une mémoire tampon est créée avec cet état initial, elle indique que la ressource est une structure d’accélération de raytracing, à utiliser dans ID3D12GraphicsCommandList4::BuildRaytracingAccelerationStructure, ID3D12GraphicsCommandList4::CopyRaytracingAccelerationStructure ou ID3D12Device::CreateShaderResourceView pour la dimension D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE .

REMARQUE

Une ressource à utiliser pour l’état D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE doit être créée dans cet état, puis ne jamais être supprimée. Une ressource qui n’a pas été créée dans cet état ne peut pas non plus y être transférée. Pour plus d’informations, consultez Restrictions de mémoire de structure d’accélération dans la spécification fonctionnelle de raytracing DirectX (DXR) sur GitHub.

D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE
Valeur : 0x1000000
À compter de Windows 10, version 1903 (10.0 ; Build 18362), indique que la ressource est une image de taux d’ombrage de l’espace d’écran pour l’ombrage à taux variable (VRS). Pour plus d’informations, consultez Trame de fond à taux variable (VRS).
D3D12_RESOURCE_STATE_GENERIC_READ
D3D12_RESOURCE_STATE_GENERIC_READ est une combinaison logique ou d’autres bits d’état de lecture. Il s’agit de l’état de départ requis pour un tas de chargement. Votre application doit généralement éviter de passer à D3D12_RESOURCE_STATE_GENERIC_READ lorsque cela est possible, car cela peut entraîner des vidages prématurés du cache ou des modifications de disposition des ressources (par exemple, compresser/décompresser), ce qui peut entraîner des blocages de pipeline inutiles. Vous devez plutôt effectuer la transition des ressources uniquement vers les états réellement utilisés.
D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE
Équivaut à D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE.
D3D12_RESOURCE_STATE_PRESENT
Valeur : 0
Synonyme de D3D12_RESOURCE_STATE_COMMON.
D3D12_RESOURCE_STATE_PREDICATION
Valeur : 0x200
La ressource est utilisée pour la prédication.
D3D12_RESOURCE_STATE_VIDEO_DECODE_READ
Valeur : 0x10000
La ressource est utilisée comme source dans une opération de décodage. Les exemples incluent la lecture du flux de bits compressé et la lecture à partir de références de décodage,
D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE
Valeur : 0x20000
La ressource est utilisée comme destination dans l’opération de décodage. Cet état est utilisé pour décoder la sortie et les histogrammes.
D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ
Valeur : 0x40000
La ressource est utilisée pour lire les données vidéo pendant le traitement vidéo ; autrement dit, la ressource est utilisée comme source dans une opération de traitement telle que l’encodage vidéo (compression).
D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE
Valeur : 0x80000
La ressource est utilisée pour écrire des données vidéo pendant le traitement vidéo ; autrement dit, la ressource est utilisée comme destination dans une opération de traitement telle que l’encodage vidéo (compression).
D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ
Valeur : 0x200000
La ressource est utilisée comme source dans une opération d’encodage. Cet état est utilisé pour l’entrée et la référence de l’estimation de mouvement.
D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE
Valeur : 0x800000
Cette ressource est utilisée comme destination dans une opération d’encodage. Cet état est utilisé pour la texture de destination d’une opération de tas de vecteur de mouvement de résolution.

Remarques

Cette énumération est utilisée par les méthodes suivantes :

Spécifications

   
En-tête d3d12.h

Voir aussi