Freigeben über


ID3D12Device::GetResourceAllocationInfo(UINT,UINT,constD3D12_RESOURCE_DESC*)-Methode (d3d12.h)

Ruft die Größe und Ausrichtung des Speichers ab, der für eine Sammlung von Ressourcen auf diesem Adapter erforderlich ist.

Syntax

D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo(
  [in] UINT                      visibleMask,
  [in] UINT                      numResourceDescs,
  [in] const D3D12_RESOURCE_DESC *pResourceDescs
);

Die Parameter

[in] visibleMask

Typ: UINT

Legen Sie für den Einzel-GPU-Vorgang diesen Wert auf 0 fest. Wenn mehrere GPU-Knoten vorhanden sind, legen Sie Bits fest, um die Knoten (die physischen Adapter des Geräts) zu identifizieren. Jedes Bit in der Maske entspricht einem einzelnen Knoten. Siehe auch Multiadaptersysteme.

[in] numResourceDescs

Typ: UINT

Die Anzahl der Ressourcendeskriptoren im pResourceDescs-Array .

[in] pResourceDescs

Typ: const D3D12_RESOURCE_DESC*

Ein Array von D3D12_RESOURCE_DESC Strukturen, die die Ressourcen zum Abrufen von Informationen beschrieben haben.

Rückgabewert

Typ: D3D12_RESOURCE_ALLOCATION_INFO

Eine D3D12_RESOURCE_ALLOCATION_INFO Struktur, die Informationen zum Videospeicher bereitstellt, der dem angegebenen Ressourcenarray zugeordnet ist.

Wenn ein Fehler auftritt, ist D3D12_RESOURCE_ALLOCATION_INFO::SizeInBytes gleich UINT64_MAX.

Bemerkungen

Wenn Sie CreatePlacedResource verwenden, muss Ihre Anwendung GetResourceAllocationInfo verwenden, um die Größe und Ausrichtung der Texturressourcen zu verstehen. Die Ergebnisse dieser Methode variieren je nach Adapter und müssen für diese Adapter- und Treiberversion als einzigartig behandelt werden.

Ihre Anwendung kann die Ausgabe von GetResourceAllocationInfo nicht verwenden, um gepackte Mip-Eigenschaften von Texturen zu verstehen. Um die gepackten Mip-Eigenschaften von Texturen zu verstehen, muss Ihre Anwendung GetResourceTiling verwenden.

Texturressourcengrößen unterscheiden sich erheblich von den informationen, die von GetResourceTiling zurückgegeben werden, da einige Adapterarchitekturen zusätzlichen Arbeitsspeicher für Texturen zuweisen, um die effektive Bandbreite während gängiger Renderingszenarien zu reduzieren. Dies schließt auch Texturen ein, die Einschränkungen für ihre Texturlayouts aufweisen oder standardisierte Texturlayouts aufweisen. Dieser zusätzliche Arbeitsspeicher kann nicht sparsam zugeordnet oder von einer Anwendung mithilfe von CreateReservedResource und UpdateTileMappings neu zugeordnet werden, sodass es nicht von GetResourceTiling gemeldet wird.

Ihre Anwendung kann getResourceAllocationInfo für Pufferressourcen (D3D12_RESOURCE_DIMENSION_BUFFER) verwenden, wenn sie keine enge Ausrichtung verwenden. Puffer, die nicht eng ausgerichtet sind, weisen die gleiche Größe auf allen Adaptern auf, was lediglich das kleinste Vielfache von 64 KB ist, das größer oder gleich D3D12_RESOURCE_DESC::Width ist.

Wenn mehrere Ressourcenbeschreibungen übergeben werden, werden der C++-Algorithmus zum Berechnen einer Strukturgröße und -ausrichtung verwendet. Beispielsweise meldet ein Dreielementarray mit zwei winzigen 64 KB ausgerichteten Ressourcen und einer winzigen 4 MB ausgerichteten Ressource unterschiedliche Größen basierend auf der Reihenfolge des Arrays. Wenn sich die ausgerichtete 4 MB-Ressource in der Mitte befindet, beträgt die resultierende Größe 12 MB. Andernfalls beträgt die resultierende Größe 8 MB. Die zurückgegebene Ausrichtung wäre immer 4 MB, da sie die Obermenge aller Ausrichtungen im Ressourcenarray ist.

Anforderungen

Anforderung Wert
Zielplattform Fenster
Header d3d12.h
Library D3D12.lib
DLL D3D12.dll

Siehe auch

ID3D12Device