Freigeben über


ID3D12Device::GetCopyableFootprints-Methode (d3d12.h)

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 Uploadheaps.

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

Parameter

[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 der gültigen Werte beträgt 0 bis D3D12_REQ_SUBRESOURCES.

[in] NumSubresources

Typ: UINT

Die Anzahl der Unterressourcen in der Ressource. Der Bereich der gültigen Werte beträgt 0 bis (D3D12_REQ_SUBRESOURCES – FirstSubresource).

BaseOffset

Typ: UINT64

Der Offset in Bytes für die Ressource.

[out, optional] pLayouts

Typ: D3D12_PLACED_SUBRESOURCE_FOOTPRINT*

Ein Zeiger auf ein Array (der Länge NumSubresources) von D3D12_PLACED_SUBRESOURCE_FOOTPRINT-Strukturen , das mit der Beschreibung und Platzierung der einzelnen Unterressourcen gefüllt werden soll.

[out, optional] pNumRows

Typ: UINT*

Ein Zeiger auf ein Array (der Länge NumSubresources) von ganzzahligen Variablen, das 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, für jeden Eintrag, der mit der nicht gepadeten Größe in Byte einer Zeile gefüllt werden soll, jeder Unterressource.

Wenn beispielsweise eine Textur2D-Ressource eine Breite von 32 und Bytes pro Pixel von 4 hat,

dann gibt pRowSizeInBytes 128 zurück.

pRowSizeInBytes sollte nicht mit Zeilenabstand verwechselt werden, da die Untersuchung von pLayouts und das Abrufen des Zeilenabstands von ihnen 256 ergeben, 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 Bytes gefüllt werden soll.

Rückgabewert

Keine

Bemerkungen

Diese Routine unterstützt die Anwendung beim Ausfüllen D3D12_PLACED_SUBRESOURCE_FOOTPRINT und D3D12_SUBRESOURCE_FOOTPRINT Strukturen, wenn Speicherplatz in Uploadheaps untergeordnet wird. Die resultierenden Strukturen sind gpuadapterunabhängig, was bedeutet, dass die Werte von GPU-Adapter zu GPU-Adapter nicht 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 Variante davon als Teil der App geschrieben werden kann.

Beispiele

Im D3D12Multithreading-Beispiel wird ID3D12Device::GetCopyableFootprints wie folgt verwendet:

// 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.

Anforderungen

   
Zielplattform Windows
Kopfzeile d3d12.h
Bibliothek D3d12.lib
DLL D3d12.dll

Weitere Informationen

CD3DX12_RESOURCE_DESC

CD3DX12_SUBRESOURCE_FOOTPRINT

ID3D12Device