D3D12_RESOURCE_STATES-Enumeration (d3d12.h)

Definiert Konstanten, die den Zustand einer Ressource in Bezug auf die Verwendung der Ressource angeben.

Syntax

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
} ;

Konstanten

 
D3D12_RESOURCE_STATE_COMMON
Wert: 0
Ihre Anwendung sollte nur für den Zugriff auf eine Ressource in verschiedenen Grafikmodultypen in diesen Zustand übergehen.

Insbesondere muss sich eine Ressource im COMMON-Zustand befinden, bevor sie in einer COPY-Warteschlange (wenn sie zuvor in DIRECT/COMPUTE verwendet wurde) und vor der Verwendung in DIRECT/COMPUTE (wenn sie zuvor für COPY verwendet wurde) verwendet wird. Diese Einschränkung ist beim Zugriff auf Daten zwischen DIRECT- und COMPUTE-Warteschlangen nicht vorhanden.

Der COMMON-Zustand kann für alle Verwendungen in einer Kopierwarteschlange mithilfe der impliziten Zustandsübergänge verwendet werden. Weitere Informationen finden Sie unter Synchronisierung mit mehreren Engines unter "Allgemein".

Darüber hinaus müssen Sich Texturen im COMMON-Zustand befinden, damit der CPU-Zugriff legal ist, vorausgesetzt, die Textur wurde überhaupt in einem CPU-sichtbaren Heap erstellt.
D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER
Wert: 0x1
Eine Unterressource muss sich in diesem Zustand befinden, wenn die GPU auf sie als Vertexpuffer oder Konstantenpuffer zugreift. Dies ist ein schreibgeschützter Zustand.
D3D12_RESOURCE_STATE_INDEX_BUFFER
Wert: 0x2
Eine Unterquelle muss sich in diesem Zustand befinden, wenn die 3D-Pipeline als Indexpuffer auf sie zugreift. Dies ist ein schreibgeschützter Zustand.
D3D12_RESOURCE_STATE_RENDER_TARGET
Wert: 0x4
Die Ressource wird als Renderziel verwendet. Eine Unterquelle muss sich in diesem Zustand befinden, wenn sie in gerendert wird oder wenn sie mit ID3D12GraphicsCommandList::ClearRenderTargetView gelöscht wird.

Dies ist ein schreibgeschützter Zustand. Zum Lesen aus einem Renderziel als Shaderressource muss sich die Ressource entweder in D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE oder D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE befinden.
D3D12_RESOURCE_STATE_UNORDERED_ACCESS
Wert: 0x8
Die Ressource wird für den ungeordneten Zugriff verwendet. Eine Unterressource muss sich in diesem Zustand befinden, wenn die GPU über eine ungeordnete Zugriffsansicht auf sie zugreift. Eine Unterquelle muss sich auch in diesem Zustand befinden, wenn sie mit ID3D12GraphicsCommandList::ClearUnorderedAccessViewInt oder ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat gelöscht wird. Dies ist ein Lese-/Schreibzustand.
D3D12_RESOURCE_STATE_DEPTH_WRITE
Wert: 0x10
D3D12_RESOURCE_STATE_DEPTH_WRITE ist ein Zustand, der sich mit anderen Zuständen gegenseitig ausschließt. Sie sollten es für ID3D12GraphicsCommandList::ClearDepthStencilView verwenden, wenn die Flags (siehe D3D12_CLEAR_FLAGS) angeben, dass eine bestimmte Unterressource gelöscht werden soll (andernfalls spielt der Unterressourcenstatus keine Rolle), oder wenn sie in einer beschreibbaren Tiefenschablonenansicht verwendet wird (siehe D3D12_DSV_FLAGS), wenn der PSO den Tiefenschreibvorgang aktiviert hat (siehe D3D12_DEPTH_STENCIL_DESC).
D3D12_RESOURCE_STATE_DEPTH_READ
Wert: 0x20
DEPTH_READ ist ein Zustand, der mit anderen Zuständen kombiniert werden kann. Sie sollte verwendet werden, wenn sich die Unterquelle in einer schreibgeschützten Tiefenschablonenansicht befindet oder wenn der Tiefenschreibvorgang von D3D12_DEPTH_STENCIL_DESC deaktiviert ist. Es kann mit anderen Lesezuständen (z. B. D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE) kombiniert werden, sodass die Ressource für den Tiefen- oder Schablonentest verwendet und von einem Shader innerhalb desselben Draw-Aufrufs zugegriffen werden kann. Die Verwendung, wenn die Tiefe durch einen Draw-Aufruf oder clear-Befehl geschrieben wird, ist ungültig.
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE
Wert: 0x40
Die Ressource wird mit einem anderen Shader als dem Pixel-Shader verwendet. Eine Unterquelle muss sich in diesem Zustand befinden, bevor sie von einer beliebigen Phase (mit Ausnahme der Pixel-Shaderphase) über eine Shaderressourcensicht gelesen wird. Sie können die Ressource weiterhin in einem Pixel-Shader mit diesem Flag verwenden, solange sie auch das Flag D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE festgelegt hat. Dies ist ein schreibgeschützter Zustand.
D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE
Wert: 0x80
Die Ressource wird mit einem Pixel-Shader verwendet. Eine Unterquelle muss sich in diesem Zustand befinden, bevor sie vom Pixel-Shader über eine Shaderressourcensicht gelesen wird. Dies ist ein schreibgeschützter Zustand.
D3D12_RESOURCE_STATE_STREAM_OUT
Wert: 0x100
Die Ressource wird mit der Streamausgabe verwendet. Eine Unterquelle muss sich in diesem Zustand befinden, wenn die 3D-Pipeline als Streamoutziel auf sie zugreift. Dies ist ein schreibgeschützter Zustand.
D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT
Wert: 0x200
Die Ressource wird als indirektes Argument verwendet.
Unterressourcen müssen sich in diesem Zustand befinden, wenn sie als Argumentpuffer verwendet werden, der an die indirekte Zeichnungsmethode ID3D12GraphicsCommandList::ExecuteIndirect übergeben wird.
Dies ist ein schreibgeschützter Zustand.
D3D12_RESOURCE_STATE_COPY_DEST
Wert: 0x400
Die Ressource wird als Ziel in einem Kopiervorgang verwendet.
Unterressourcen müssen sich in diesem Zustand befinden, wenn sie als Ziel des Kopiervorgangs oder als Blt-Vorgang verwendet werden.
Dies ist ein schreibgeschützter Zustand.
D3D12_RESOURCE_STATE_COPY_SOURCE
Wert: 0x800
Die Ressource wird als Quelle in einem Kopiervorgang verwendet.
Unterressourcen müssen sich in diesem Zustand befinden, wenn sie als Quelle des Kopiervorgangs oder eines blt-Vorgangs verwendet werden.
Dies ist ein schreibgeschützter Zustand.
D3D12_RESOURCE_STATE_RESOLVE_DEST
Wert: 0x1000
Die Ressource wird als Ziel in einem Auflösungsvorgang verwendet.
D3D12_RESOURCE_STATE_RESOLVE_SOURCE
Wert: 0x2000
Die Ressource wird als Quelle in einem Auflösungsvorgang verwendet.
D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE
Wert: 0x400000
Wenn ein Puffer mit diesem Als Anfangszustand erstellt wird, gibt dies an, dass es sich bei der Ressource um eine Raytracing-Beschleunigungsstruktur handelt, die in ID3D12GraphicsCommandList4::BuildRaytracingAccelerationStructure, ID3D12GraphicsCommandList4::CopyRaytracingAccelerationStructure oder ID3D12Device::CreateShaderResourceView für die D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE-Dimension verwendet wird.

HINWEIS

Eine Ressource, die für den D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE Zustand verwendet werden soll, muss in diesem Zustand erstellt werden, und sie muss dann nie aus ihr übergehen. Eine Ressource, die nicht in diesem Zustand erstellt wurde, darf auch nicht in sie übergehen. Weitere Informationen finden Sie unter Speichereinschränkungen der Beschleunigungsstruktur in der DirectX-Raytracing-Funktionsspezifikation (DXR) auf GitHub.

D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE
Wert: 0x1000000
Ab Windows 10 Version 1903 (10.0; Build 18362) gibt an, dass es sich bei der Ressource um ein Bild mit Schattierungsrate für die Schattierungsrate mit variabler Rate (VRS) handelt. Weitere Informationen finden Sie unter Schattierung mit variabler Rate (VRS).
D3D12_RESOURCE_STATE_GENERIC_READ
D3D12_RESOURCE_STATE_GENERIC_READ ist eine logische OR'd-Kombination anderer Lesestatusbits. Dies ist der erforderliche Startzustand für einen Uploadheap. Ihre Anwendung sollte den Übergang zu D3D12_RESOURCE_STATE_GENERIC_READ nach Möglichkeit vermeiden, da dies zu vorzeitigen Cacheleerungen oder Änderungen des Ressourcenlayouts (z. B. Komprimieren/Dekomprimieren) führen kann, was zu unnötigen Pipelinerückständen führen kann. Stattdessen sollten Sie Ressourcen nur in die tatsächlich verwendeten Zustände umstellen.
D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE
Entspricht D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE.
D3D12_RESOURCE_STATE_PRESENT
Wert: 0
Synonym für D3D12_RESOURCE_STATE_COMMON.
D3D12_RESOURCE_STATE_PREDICATION
Wert: 0x200
Die Ressource wird für die Prädication verwendet.
D3D12_RESOURCE_STATE_VIDEO_DECODE_READ
Wert: 0x10000
Die Ressource wird als Quelle in einem Decodierungsvorgang verwendet. Beispiele sind das Lesen des komprimierten Bitstroms und das Lesen von Decodierungsreferenzen.
D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE
Wert: 0x20000
Die Ressource wird als Ziel im Decodierungsvorgang verwendet. Dieser Zustand wird zum Decodieren von Ausgabe- und Histogrammen verwendet.
D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ
Wert: 0x40000
Die Ressource wird verwendet, um Videodaten während der Videoverarbeitung zu lesen. Das heißt, die Ressource wird als Quelle in einem Verarbeitungsvorgang wie der Videocodierung (Komprimierung) verwendet.
D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE
Wert: 0x80000
Die Ressource wird verwendet, um Videodaten während der Videoverarbeitung zu schreiben. Das heißt, die Ressource wird als Ziel in einem Verarbeitungsvorgang wie der Videocodierung (Komprimierung) verwendet.
D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ
Wert: 0x200000
Die Ressource wird als Quelle in einem Codierungsvorgang verwendet. Dieser Zustand wird für die Eingabe und den Bezug der Bewegungsschätzung verwendet.
D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE
Wert: 0x800000
Diese Ressource wird als Ziel in einem Codierungsvorgang verwendet. Dieser Zustand wird für die Zieltextur eines Heapvorgangs des Auflösungsbewegungsvektors verwendet.

Hinweise

Diese Enumeration wird von den folgenden Methoden verwendet:

Requirements (Anforderungen)

   
Kopfzeile d3d12.h

Weitere Informationen