D3D12_RESOURCE_DESC Struktur (d3d12.h)
Beschreibt eine Ressource, z. B. eine Textur. Diese Struktur wird umfassend verwendet.
Syntax
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;
Angehörige
Dimension
Ein Element von D3D12_RESOURCE_DIMENSION, das die Dimensionen der Ressource angibt (z. B. D3D12_RESOURCE_DIMENSION_TEXTURE1D), oder ob es sich um einen Puffer ((D3D12_RESOURCE_DIMENSION_BUFFER) handelt.
Alignment
Gibt die Ausrichtung an.
Width
Gibt die Breite der Ressource an.
Height
Gibt die Höhe der Ressource an.
DepthOrArraySize
Gibt die Tiefe der Ressource an, wenn sie 3D ist, oder die Arraygröße, wenn es sich um ein Array von 1D- oder 2D-Ressourcen handelt.
MipLevels
Gibt die Anzahl der MIP-Ebenen an.
Format
Gibt ein Element von DXGI_FORMATan.
SampleDesc
Gibt eine DXGI_SAMPLE_DESC Struktur an.
Layout
Gibt ein Element von D3D12_TEXTURE_LAYOUTan.
Flags
Bitwise-OR'd flags, as D3D12_RESOURCE_FLAGS Enumerationskonstanten.
Bemerkungen
Verwenden Sie diese Struktur mit:
- ID3D12Resource::GetDesc
- ID3D12Device::GetResourceAllocationInfo
- ID3D12Device::CreateCommittedResource-
- ID3D12Device::CreatePlacedResource-
- ID3D12Device::CreateReservedResource-
- ID3D12Device::GetCopyableFootprints
- Eine Reihe der Hilfsfunktionen finden Sie unter Hilfsstrukturen und -funktionen für D3D12.
Zwei gängige Ressourcen sind Puffer und Texturen, die beide diese Struktur verwenden, aber mit ganz unterschiedlichen Verwendungen der Felder.
Puffer
Puffer sind ein zusammenhängender Speicherbereich. Breite kann zwischen 1 und dem Feld MaxGPUVirtualAddressBitsPerResource Feld D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT für reservierte Ressourcen oder das feld MaxGPUVirtualAddressBitsPerProcess für zugesicherte Ressourcen liegen. Allerdings kann die Erschöpfung des virtuellen GPU-Adressraums, des Speicherspeicherbudgets (siehe IDXGIAdapter3::QueryVideoMemoryInfo) und systemspeichern leicht auftreten.Ausrichtung muss 64 KB (D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT) oder 0 sein, was effektiv 64 KB beträgt.
Height, DepthOrArraySize, und MipLevels muss 1 sein.
Format- muss DXGI_FORMAT_UNKNOWN sein.
SampleDesc.Count- muss 1 sein, und Qualitäts- muss 0 sein.
Layout- müssen D3D12_TEXTURE_LAYOUT_ROW_MAJOR werden, da Pufferspeicherlayouts von Anwendungen verstanden werden und Zeilen-Haupttexturdaten häufig über Puffer gemarstet werden.
Flags müssen von Anwendungen für Puffer mit geringfügigen Ausnahmen weiterhin genau ausgefüllt werden. Anwendungen können jedoch die meisten Funktionsunterstützungen verwenden, ohne die Auswirkungen auf die Effizienz von Puffern zu bedenken. Das Flags-Feld dient zum Steuern von Eigenschaften im Zusammenhang mit Texturen.
Texturen
Texturen sind eine mehrdimensionale Anordnung von Texeln in einem zusammenhängenden Speicherbereich, der stark optimiert ist, um die Bandbreite zum Rendern und Sampling zu maximieren. Texturgrößen sind schwer vorherzusagen und variieren von Adapter zu Adapter. Anwendungen müssen ID3D12Device::GetResourceAllocationInfo verwenden, um ihre Größe genau zu verstehen.TEXTURE1D, TEXTURE2D und TEXTURE3D werden in jedem Format nicht orthogonal unterstützt. Sehen Sie sich die Verwendung von D3D12_FORMAT_SUPPORT1_TEXTURE1D, D3D12_FORMAT_SUPPORT1_TEXTURE2D und D3D12_FORMAT_SUPPORT1_TEXTURE3D in D3D12_FORMAT_SUPPORT1an.
Width, Heightund DepthOrArraySize muss zwischen 1 und der maximalen Dimension liegen, die für die jeweilige Featureebene und Texturdimension unterstützt wird. Allerdings kann die Erschöpfung des virtuellen GPU-Adressraums, des Speicherspeicherbudgets (siehe IDXGIAdapter3::QueryVideoMemoryInfo) und systemspeichern leicht auftreten. Bei komprimierten Formaten sind diese Dimensionen logisch. Zum Beispiel:
- Für TEXTURE1D:
- Breite muss kleiner oder gleich D3D10_REQ_TEXTURE1D_U_DIMENSION auf Featureebenen kleiner als 11_0 und D3D11_REQ_TEXTURE1D_U_DIMENSION auf Featureebene 11_0 oder höher sein.
- Höhe muss 1 sein.
- DepthOrArraySize- als Arraygröße interpretiert wird und kleiner oder gleich D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION auf Featureebenen kleiner als 11_0 und D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION auf Featureebenen 11_0 oder höher sein muss.
- Für TEXTURE2D:
- Breite und Höhe muss kleiner oder gleich D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION auf Featureebenen kleiner als 11_0 und D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION oder Featureebene 11_0 oder höher sein.
- DepthOrArraySize- als Arraygröße interpretiert wird und kleiner oder gleich D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION auf Featureebenen kleiner als 11_0 und D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION auf Featureebenen 11_0 oder höher sein muss.
- Für TEXTURE3D:
- Breite und Höhe und DepthOrArraySize- müssen kleiner oder gleich D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION auf Featureebenen kleiner als 11_0 und D3D11_REQ_TEXTURE2D_U_V_OR_W_DIMENSION auf Featureebene 11_0 oder höher sein.
- DepthOrArraySize wird als Tiefe interpretiert.
Ausrichtung
Ausrichtung kann eine von 0, 4 KB, 64 KB oder 4 MB sein.Wenn Ausrichtung auf 0 festgelegt ist, verwendet die Laufzeit 4 MB für MSAA-Texturen und 64 KB für alles andere. Die Anwendung kann kleinere Ausrichtungen als diese Standardeinstellungen für einige Texturtypen auswählen, wenn die Textur klein ist. Texturen mit UNBEKANNTEm Layout und MSAA können mit einer Ausrichtung von 64 KB erstellt werden (wenn sie die unten beschriebene kleine Größenbeschränkung übergeben).
Texturen mit UNBEKANNTEm Layout ohne MSAA und ohne Renderziel- oder Tiefenschablonenflaggen können mit der Ausrichtung von 4 KB erstellt werden (erneut, wobei die Einschränkung für kleine Größen übergeben wird).
Anwendungen können kleinere ausgerichtete Ressourcen erstellen, wenn die geschätzte Größe der detailliertesten Mip-Ebene insgesamt die größere Ausrichtungseinschränkung oder weniger ist. Die Laufzeit verwendet einen architekturunabhängigen Mechanismus der Größenschätzung, der die Größe der Größe von Standard-Swizzle und D3D12-Nebeneinanderressourcen nachahmt. Die Kachelgrößen werden jedoch von der kleineren Ausrichtungseinschränkung für solche Berechnungen sein. Bei Verwendung der Nicht-Renderziel- und nicht-Tiefenschablonentextur wird die Laufzeit von nahezu gleichseitigen Kachelformen von 4 KB ausgegangen und die Anzahl der Kacheln berechnen, die für die detaillierteste Mip-Ebene benötigt werden. Wenn die Anzahl der Kacheln gleich oder kleiner als 16 ist, kann die Anwendung eine 4 KB ausgerichtete Ressource erstellen. Daher kann ein mipptes tex2d-Array einer beliebigen Arraygröße und eine beliebige Anzahl von Mip-Ebenen 4 KB groß sein, solange die Breite und Höhe für das jeweilige Format und MSAA klein genug sind.
MipLevels
MipLevels- kann 0 oder 1 bis zu den maximalen Mip-Ebenen sein, die von den Width, Height und DepthOrArraySize Dimensionen unterstützt werden. Wenn 0 verwendet wird, berechnet die API automatisch die maximal unterstützten Mip-Ebenen und verwendet dies. Einige Ressourcen- und Heap-Eigenschaften schließen jedoch Mip-Ebenen aus, sodass die App den Wert als 1 angeben muss.Informationen zu Formatbeschränkungen finden Sie im feld D3D12_FORMAT_SUPPORT1_MIP von D3D12_FORMAT_SUPPORT1. MSAA-Ressourcen, Texturen mit D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER und Heaps mit D3D12_HEAP_FLAG_ALLOW_DISPLAY alle schließen Mip-Ebenen aus.
Format
Format- muss ein gültiges Format sein, das auf der Featureebene des Geräts unterstützt wird.SampleDesc
Eine SampleDesc.Count größer als 1 und/oder ungleich Null Qualitäts- werden nur für TEXTURE2D unterstützt und wenn entweder D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET oder D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL festgelegt sind.Folgendes wird nicht unterstützt:
- D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,
- D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS,
- D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS,
- D3D12_HEAP_FLAG_ALLOW_DISPLAY
Anforderungen
Anforderung | Wert |
---|---|
Header- | d3d12.h |