D3D12_RESOURCE_DESC struttura (d3d12.h)

Descrive una risorsa, ad esempio una trama. Questa struttura viene usata ampiamente.

Sintassi

typedef struct D3D12_RESOURCE_DESC {
  D3D12_RESOURCE_DIMENSION Dimension;
  UINT64                   Alignment;
  UINT64                   Width;
  UINT                     Height;
  UINT16                   DepthOrArraySize;
  UINT16                   MipLevels;
  DXGI_FORMAT              Format;
  DXGI_SAMPLE_DESC         SampleDesc;
  D3D12_TEXTURE_LAYOUT     Layout;
  D3D12_RESOURCE_FLAGS     Flags;
} D3D12_RESOURCE_DESC;

Members

Dimension

Un membro di D3D12_RESOURCE_DIMENSION, specificando le dimensioni della risorsa (ad esempio, D3D12_RESOURCE_DIMENSION_TEXTURE1D) o se è un buffer ((D3D12_RESOURCE_DIMENSION_BUFFER).

Alignment

Specifica l'allineamento.

Width

Specifica la larghezza della risorsa.

Height

Specifica l'altezza della risorsa.

DepthOrArraySize

Specifica la profondità della risorsa, se è 3D o la dimensione della matrice se è una matrice di risorse 1D o 2D.

MipLevels

Specifica il numero di livelli MIP.

Format

Specifica un membro di DXGI_FORMAT.

SampleDesc

Specifica una struttura DXGI_SAMPLE_DESC .

Layout

Specifica un membro di D3D12_TEXTURE_LAYOUT.

Flags

Flag bit per bit-OR, come costanti di enumerazione D3D12_RESOURCE_FLAGS .

Commenti

Usare questa struttura con:

Due risorse comuni sono buffer e trame, che usano entrambe questa struttura, ma con usi molto diversi dei campi.

Buffer

I buffer sono un'area di memoria contigua. La larghezza può essere compresa tra 1 e il campo MaxGPUVirtualAddressBitsPerResource di D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT per le risorse riservate o il campo MaxGPUVirtualAddressBitsPerProcess per le risorse commit. Tuttavia, l'esaurimento dello spazio degli indirizzi virtuali gpu, il budget di residenza della memoria (vedere IDXGIAdapter3::QueryVideoMemoryInfo) e la memoria di sistema può verificarsi facilmente.

L'allineamento deve essere 64 KB (D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT) o 0, che è effettivamente 64 KB.

Altezza, DepthOrArraySize e MipLevels devono essere 1.

Il formato deve essere DXGI_FORMAT_UNKNOWN.

SampleDesc.Count deve essere 1 e La qualità deve essere 0.

Il layout deve essere D3D12_TEXTURE_LAYOUT_ROW_MAJOR, poiché i layout di memoria del buffer sono compresi dalle applicazioni e i dati di trama principali delle righe vengono comunemente sottoposti a marshalling tramite buffer.

I flag devono comunque essere compilati con precisione dalle applicazioni per i buffer, con eccezioni minori. Tuttavia, le applicazioni possono usare la maggior parte della quantità di supporto delle funzionalità senza preoccuparsi dell'impatto sull'efficienza sui buffer. Il campo flag è destinato a controllare le proprietà correlate alle trame.

Texture

Le trame sono una disposizione multidimensionale di texel in un'area contigua di memoria, fortemente ottimizzata per ottimizzare la larghezza di banda per il rendering e il campionamento. Le dimensioni della trama sono difficili da prevedere e variare dalla scheda alla scheda. Le applicazioni devono usare ID3D12Device::GetResourceAllocationInfo per comprendere in modo accurato le dimensioni.

TEXTURE1D, TEXTURE2D e TEXTURE3D non sono supportati in modo ortogonale su ogni formato. Vedere l'uso di D3D12_FORMAT_SUPPORT1_TEXTURE1D, D3D12_FORMAT_SUPPORT1_TEXTURE2D e D3D12_FORMAT_SUPPORT1_TEXTURE3D in D3D12_FORMAT_SUPPORT1.

La larghezza, l'altezza e DepthOrArraySize devono essere compresi tra 1 e la dimensione massima supportata per il livello di funzionalità e la dimensione trama specifici. Tuttavia, l'esaurimento dello spazio degli indirizzi virtuali gpu, il budget di residenza della memoria (vedere IDXGIAdapter3::QueryVideoMemoryInfo) e la memoria di sistema può verificarsi facilmente. Per i formati compressi, queste dimensioni sono logiche. Ad esempio:

  • Per TEXTURE1D:
    • La larghezza deve essere minore o uguale a D3D10_REQ_TEXTURE1D_U_DIMENSION sui livelli di funzionalità inferiori a 11_0 e D3D11_REQ_TEXTURE1D_U_DIMENSION a livello di funzionalità 11_0 o maggiore.
    • L'altezza deve essere 1.
    • DepthOrArraySize viene interpretato come dimensione della matrice e deve essere minore o uguale a D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION a livelli di funzionalità inferiori a 11_0 e D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION sui livelli di funzionalità 11_0 o superiore.
  • Per TEXTURE2D:
    • La larghezza e l'altezza devono essere inferiori o uguali a D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION a livelli di funzionalità inferiori a 11_0 e D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION o livello di funzionalità 11_0 o superiore.
    • DepthOrArraySize viene interpretato come dimensione della matrice e deve essere minore o uguale a D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION a livelli di funzionalità inferiori a 11_0 e D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION sui livelli di funzionalità 11_0 o superiore.
  • Per TEXTURE3D:
    • La larghezza e l'altezza e DepthOrArraySize devono essere inferiori o uguali a D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION a livelli di funzionalità inferiori a 11_0 e D3D11_REQ_TEXTURE2D_U_V_OR_W_DIMENSION a livello di funzionalità 11_0 o superiore.
    • DepthOrArraySize viene interpretato come profondità.
Le note seguenti sono per tutte le dimensioni della trama.

Allineamento

L'allineamento può essere uno di 0, 4 KB, 64 KB o 4 MB.

Se l'allineamento è impostato su 0, il runtime userà 4 MB per trame MSAA e 64 KB per tutto il resto. L'applicazione può scegliere allineamenti più piccoli rispetto a questi valori predefiniti per un paio di tipi di trama quando la trama è piccola. Le trame con layout SCONOSCIUTo e MSAA possono essere create con allineamento di 64 KB (se superano la restrizione di dimensioni ridotte descritte di seguito).

Le trame con layout SCONOSCIUTo senza MSAA e senza flag di destinazione di rendering o di stencil di profondità possono essere creati con allineamento 4 KB (di nuovo, passando la restrizione di dimensioni ridotte).

Le applicazioni possono creare risorse allineate più piccole quando le dimensioni stimate del livello mip più dettagliato sono un totale della restrizione di allineamento più grande o minore. Il runtime userà un meccanismo indipendente dall'architettura della stima delle dimensioni, che simula il modo in cui vengono ridimensionate le risorse riquadri standard e D3D12. Tuttavia, le dimensioni del riquadro saranno della restrizione di allineamento più piccola per tali calcoli. Usando la trama non di rendering e non di profondità come esempio, il runtime presuppone forme di riquadri quasi equilaterali di 4 KB e calcola il numero di riquadri necessari per il livello di mip più dettagliato. Se il numero di riquadri è uguale o minore di 16, l'applicazione può creare una risorsa allineata a 4 KB. Quindi, una matrice tex2d di qualsiasi dimensione della matrice e qualsiasi numero di livelli mip può essere 4 KB, purché la larghezza e l'altezza siano sufficienti per il formato specifico e MSAA.

MipLevels

MipLevels può essere 0 o 1 ai livelli di mip massimi supportati dalle dimensioni Width,Height e DepthOrArraySize . Quando viene usato 0, l'API calcola automaticamente i livelli massimi di mip supportati e lo usa. Tuttavia, alcune proprietà di risorsa e heap impediscono i livelli di mip, quindi l'app deve specificare il valore come 1.

Fare riferimento al campo D3D12_FORMAT_SUPPORT1_MIP di D3D12_FORMAT_SUPPORT1 per restrizioni per formato. Risorse MSAA, trame con D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER e heaps con D3D12_HEAP_FLAG_ALLOW_DISPLAY tutti i livelli di mip.

Formato

Il formato deve essere un formato valido supportato a livello di funzionalità del dispositivo.

SampleDesc

Un sampleDesc.Count maggiore di 1 e/o non zero qualità è supportato solo per TEXTURE2D e quando vengono impostati D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET o D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL.

Di seguito è riportato un supporto:

  • D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,
  • D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS,
  • D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS,
  • D3D12_HEAP_FLAG_ALLOW_DISPLAY
Vedere D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS per determinare i valori Conteggio e Qualità validi.

Requisiti

Requisito Valore
Intestazione d3d12.h

Vedi anche

CD3DX12_RESOURCE_DESC

Strutture principali

D3D12_HEAP_FLAGS