Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ruft ein Ressourcenlayout ab, das kopiert werden kann. Unterstützt die App beim Ausfüllen von D3D12_PLACED_SUBRESOURCE_FOOTPRINT und D3D12_SUBRESOURCE_FOOTPRINT beim Unterzuweisen von Speicherplatz in Upload heaps.
Syntax
void GetCopyableFootprints(
[in] const D3D12_RESOURCE_DESC *pResourceDesc,
[in] UINT FirstSubresource,
[in] UINT NumSubresources,
UINT64 BaseOffset,
[out, optional] D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
[out, optional] UINT *pNumRows,
[out, optional] UINT64 *pRowSizeInBytes,
[out, optional] UINT64 *pTotalBytes
);
Parameters
[in] pResourceDesc
Typ: const D3D12_RESOURCE_DESC*
Eine Beschreibung der Ressource als Zeiger auf eine D3D12_RESOURCE_DESC Struktur.
[in] FirstSubresource
Typ: UINT
Index der ersten Unterressource in der Ressource. Der Bereich gültiger Werte ist 0 bis D3D12_REQ_SUBRESOURCES.
[in] NumSubresources
Typ: UINT
Die Anzahl der Unterressourcen in der Ressource. Der Bereich gültiger Werte beträgt 0 bis (D3D12_REQ_SUBRESOURCES - FirstSubresource).
BaseOffset
Typ: UINT64
Der Offset in Byte, der dem Offset der einzelnen D3D12_PLACED_SUBRESOURCE_FOOTPRINT im pLayouts-Array hinzugefügt wird.
[out, optional] pLayouts
Typ: D3D12_PLACED_SUBRESOURCE_FOOTPRINT*
Ein Zeiger auf ein Array (der Länge NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT Strukturen, das mit der Beschreibung und Platzierung jeder Unterressource gefüllt werden soll.
[out, optional] pNumRows
Typ: UINT*
Ein Zeiger auf ein Array (der Länge NumSubresources) von ganzzahligen Variablen, der mit der Anzahl der Zeilen für jede Unterressource gefüllt werden soll.
[out, optional] pRowSizeInBytes
Typ: UINT64*
Ein Zeiger auf ein Array (der Länge NumSubresources) von Ganzzahlvariablen, jeder Eintrag, der mit der nicht geblockten Größe in Byte einer Zeile gefüllt werden soll, jeder Unterressource.
Wenn beispielsweise eine Texture2D-Ressource eine Breite von 32 und Bytes pro Pixel 4 aufweist,
dann gibt pRowSizeInBytes 128 zurück.
pRowSizeInBytes sollten nicht mit Zeilenabstand verwechselt werden, da pLayouts untersucht und der Zeilenabstand von dieser 256 erhalten wird, da sie an D3D12_TEXTURE_DATA_PITCH_ALIGNMENT ausgerichtet ist.
[out, optional] pTotalBytes
Typ: UINT64*
Ein Zeiger auf eine ganzzahlige Variable, die mit der Gesamtgröße in Byte gefüllt werden soll. Wenn pResourceDesc ungültig ist, wird der Wert von pTotalBytes auf UINT64_MAX festgelegt.
Rückgabewert
None
Remarks
Diese Routine unterstützt die Anwendung beim Ausfüllen von D3D12_PLACED_SUBRESOURCE_FOOTPRINT - und D3D12_SUBRESOURCE_FOOTPRINT-Strukturen beim Unterzuweisen von Speicherplatz in Upload-Heaps. Die resultierenden Strukturen sind GPU-Adapteragnostisch, was bedeutet, dass die Werte nicht von einem GPU-Adapter zum nächsten variieren. GetCopyableFootprints verwendet angegebene Details zu Ressourcenformaten, Texturlayouts und Ausrichtungsanforderungen (aus der D3D12_RESOURCE_DESC Struktur), um die Unterressourcenstrukturen auszufüllen. Anwendungen haben Zugriff auf alle diese Details, sodass diese Methode oder eine Variation davon als Teil der App geschrieben werden kann.
Examples
Das D3D12Multithreading-Beispiel verwendet ID3D12Device::GetCopyableFootprints wie folgt:
// Returns required size of a buffer to be used for data upload
inline UINT64 GetRequiredIntermediateSize(
_In_ ID3D12Resource* pDestinationResource,
_In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources)
{
D3D12_RESOURCE_DESC Desc = pDestinationResource->GetDesc();
UINT64 RequiredSize = 0;
ID3D12Device* pDevice;
pDestinationResource->GetDevice(__uuidof(*pDevice), reinterpret_cast<void**>(&pDevice));
pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize);
pDevice->Release();
return RequiredSize;
}
Weitere Informationen finden Sie im Beispielcode in der D3D12-Referenz.
Requirements
| Requirement | Value |
|---|---|
| Zielplattform | Windows |
| Header | d3d12.h |
| Library | D3d12.lib |
| DLL | D3d12.dll |