enumerazione D3D12_RESOURCE_STATES (d3d12.h)

Definisce le costanti che specificano lo stato di una risorsa in relazione alla modalità di utilizzo della risorsa.

Sintassi

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

Costanti

 
D3D12_RESOURCE_STATE_COMMON
Valore: 0
L'applicazione deve passare a questo stato solo per l'accesso a una risorsa in diversi tipi di motore grafico.

In particolare, una risorsa deve trovarsi nello stato COMMON prima di essere usata in una coda COPY (se usata in precedenza in DIRECT/COMPUTE) e prima di essere usata in DIRECT/COMPUTE (se in precedenza usata in COPY). Questa restrizione non esiste quando si accede ai dati tra code DIRECT e COMPUTE.

Lo stato COMMON può essere usato per tutti gli utilizzi in una coda di copia usando le transizioni di stato implicite. Per altre informazioni, nella sincronizzazione multi-motore trovare "common".

Inoltre, le trame devono trovarsi nello stato COMMON affinché l'accesso alla CPU sia legale, presupponendo che la trama sia stata creata in un heap visibile alla CPU al primo posto.
D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER
Valore: 0x1
Una sottorisorsa deve trovarsi in questo stato quando si accede alla GPU come vertex buffer o buffer costante. Si tratta di uno stato di sola lettura.
D3D12_RESOURCE_STATE_INDEX_BUFFER
Valore: 0x2
Una sottorisorsa deve trovarsi in questo stato quando si accede dalla pipeline 3D come buffer di indice. Si tratta di uno stato di sola lettura.
D3D12_RESOURCE_STATE_RENDER_TARGET
Valore: 0x4
La risorsa viene usata come destinazione di rendering. Una sottorisorsa deve trovarsi in questo stato quando viene eseguito il rendering o quando viene cancellata con ID3D12GraphicsCommandList::ClearRenderTargetView.

Si tratta di uno stato di sola scrittura. Per leggere da una destinazione di rendering come risorsa shader, la risorsa deve trovarsi in D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE o D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE.
D3D12_RESOURCE_STATE_UNORDERED_ACCESS
Valore: 0x8
La risorsa viene usata per l'accesso non ordinato. Una sottorisorsa deve trovarsi in questo stato quando è accessibile dalla GPU tramite una visualizzazione di accesso non ordinata. Anche una sottorisorsa deve trovarsi in questo stato quando viene cancellata con ID3D12GraphicsCommandList::ClearUnorderedAccessViewInt o ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat. Si tratta di uno stato di lettura/scrittura.
D3D12_RESOURCE_STATE_DEPTH_WRITE
Valore: 0x10
D3D12_RESOURCE_STATE_DEPTH_WRITE è uno stato che si escludono a vicenda con altri stati. È consigliabile usarlo per ID3D12GraphicsCommandList::ClearDepthStencilView quando i flag (vedere D3D12_CLEAR_FLAGS) indicano che una determinata sottorisorsa deve essere cancellata (in caso contrario lo stato della sottorisorsa non è rilevante) o quando lo usano in una visualizzazione stencil di profondità scrivibile (vedere D3D12_DSV_FLAGS) quando pso ha la scrittura approfondita abilitata (vedere D3D12_DEPTH_STENCIL_DESC).
D3D12_RESOURCE_STATE_DEPTH_READ
Valore: 0x20
DEPTH_READ è uno stato che può essere combinato con altri stati. Deve essere usata quando la sottorisorsa si trova in una visualizzazione stencil di sola lettura o quando la scrittura approfondita di D3D12_DEPTH_STENCIL_DESC è disabilitata. Può essere combinato con altri stati di lettura (ad esempio , D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE), in modo che la risorsa possa essere usata per il test depth o stencil e accessibile da uno shader all'interno della stessa chiamata di disegno. Usarlo quando la profondità verrà scritta da una chiamata di disegno o da un comando clear non è valida.
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE
Valore: 0x40
La risorsa viene usata con uno shader diverso da pixel shader. Una sottorisorsa deve trovarsi in questo stato prima di essere letta da qualsiasi fase (ad eccezione della fase del pixel shader) tramite una visualizzazione risorse shader. È comunque possibile usare la risorsa in un pixel shader con questo flag purché sia impostato anche il flag D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE . Si tratta di uno stato di sola lettura.
D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE
Valore: 0x80
La risorsa viene usata con un pixel shader. Una sottorisorsa deve essere in questo stato prima di essere letta dal pixel shader tramite una visualizzazione risorse shader. Si tratta di uno stato di sola lettura.
D3D12_RESOURCE_STATE_STREAM_OUT
Valore: 0x100
La risorsa viene usata con l'output del flusso. Una sottorisorsa deve trovarsi in questo stato quando si accede dalla pipeline 3D come destinazione di uscita del flusso. Si tratta di uno stato di sola scrittura.
D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT
Valore: 0x200
La risorsa viene usata come argomento indiretto.
Le sottorisorse devono trovarsi in questo stato quando vengono usate come buffer di argomenti passato al metodo di disegno indiretto ID3D12GraphicsCommandList::ExecuteIndirect.
Si tratta di uno stato di sola lettura.
D3D12_RESOURCE_STATE_COPY_DEST
Valore: 0x400
La risorsa viene usata come destinazione in un'operazione di copia.
Le sottorisorse devono trovarsi in questo stato quando vengono usate come destinazione dell'operazione di copia o come operazione blt.
Si tratta di uno stato di sola scrittura.
D3D12_RESOURCE_STATE_COPY_SOURCE
Valore: 0x800
La risorsa viene usata come origine in un'operazione di copia.
Le sottorisorse devono trovarsi in questo stato quando vengono usate come origine dell'operazione di copia o come operazione blt.
Si tratta di uno stato di sola lettura.
D3D12_RESOURCE_STATE_RESOLVE_DEST
Valore: 0x1000
La risorsa viene usata come destinazione in un'operazione di risoluzione.
D3D12_RESOURCE_STATE_RESOLVE_SOURCE
Valore: 0x2000
La risorsa viene usata come origine in un'operazione di risoluzione.
D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE
Valore: 0x400000
Quando un buffer viene creato con questo stato iniziale, indica che la risorsa è una struttura di accelerazione raytracing, da usare in ID3D12GraphicsCommandList4::BuildRaytracingAccelerationStructure, ID3D12GraphicsCommandList4::CopyRaytracingAccelerationStructure o ID3D12Device::CreateShaderResourceView per la dimensione D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE .

NOTA

Una risorsa da usare per lo stato D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE deve essere creata in tale stato e quindi non è mai stata eseguita la transizione. Né una risorsa creata non in tale stato può essere inserita in tale stato. Per altre informazioni, vedi Limitazioni della memoria della struttura di accelerazione nella specifica funzionale DXR (DirectX Raytracing) su GitHub.

D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE
Valore: 0x1000000
A partire da Windows 10 versione 1903 (10.0; Build 18362), indica che la risorsa è un'immagine di ombreggiatura dello spazio dello schermo per l'ombreggiatura a velocità variabile (VRS). Per altre info, vedi Ombreggiatura a velocità variabile (VRS).
D3D12_RESOURCE_STATE_GENERIC_READ
D3D12_RESOURCE_STATE_GENERIC_READ è una combinazione logicamente OR di altri bit di stato di lettura. Questo è lo stato iniziale necessario per un heap di caricamento. L'applicazione dovrebbe in genere evitare la transizione a D3D12_RESOURCE_STATE_GENERIC_READ quando possibile, poiché ciò può causare svuotamenti prematuri della cache o modifiche al layout delle risorse (ad esempio, compressione/decompressione), causando blocchi di pipeline non necessari. È invece consigliabile eseguire la transizione delle risorse solo agli stati effettivamente usati.
D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE
Equivalente a D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE.
D3D12_RESOURCE_STATE_PRESENT
Valore: 0
Sinonimo di D3D12_RESOURCE_STATE_COMMON.
D3D12_RESOURCE_STATE_PREDICATION
Valore: 0x200
La risorsa viene usata per predicazione.
D3D12_RESOURCE_STATE_VIDEO_DECODE_READ
Valore: 0x10000
La risorsa viene usata come origine in un'operazione di decodifica. Gli esempi includono la lettura del flusso di bit compresso e la lettura da riferimenti di decodifica,
D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE
Valore: 0x20000
La risorsa viene usata come destinazione nell'operazione di decodifica. Questo stato viene usato per decodificare l'output e gli istogrammi.
D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ
Valore: 0x40000
La risorsa viene usata per leggere i dati video durante l'elaborazione video; ovvero, la risorsa viene usata come origine in un'operazione di elaborazione, ad esempio la codifica video (compressione).
D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE
Valore: 0x80000
La risorsa viene usata per scrivere dati video durante l'elaborazione video; ovvero, la risorsa viene usata come destinazione in un'operazione di elaborazione, ad esempio la codifica video (compressione).
D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ
Valore: 0x200000
La risorsa viene usata come origine in un'operazione di codifica. Questo stato viene usato per l'input e il riferimento della stima del movimento.
D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE
Valore: 0x800000
Questa risorsa viene usata come destinazione in un'operazione di codifica. Questo stato viene usato per la trama di destinazione di un'operazione heap del vettore di movimento di risoluzione.

Commenti

Questa enumerazione viene utilizzata dai metodi seguenti:

Requisiti

   
Intestazione d3d12.h

Vedi anche