Metodo ID3D12Device::GetCopyableFootprints (d3d12.h)
Ottiene un layout di risorsa che può essere copiato. Aiuta l'app a compilare D3D12_PLACED_SUBRESOURCE_FOOTPRINT e D3D12_SUBRESOURCE_FOOTPRINT quando si esegue il suballocating dello spazio in heaps di caricamento.
Sintassi
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
);
Parametri
[in] pResourceDesc
Tipo: const D3D12_RESOURCE_DESC*
Descrizione della risorsa, come puntatore a una struttura D3D12_RESOURCE_DESC .
[in] FirstSubresource
Tipo: UINT
Indice della prima sottoresource nella risorsa. L'intervallo di valori validi è da 0 a D3D12_REQ_SUBRESOURCES.
[in] NumSubresources
Tipo: UINT
Numero di sottoresource nella risorsa. L'intervallo di valori validi è da 0 a (D3D12_REQ_SUBRESOURCES - FirstSubresource).
BaseOffset
Tipo: UINT64
Offset, in byte, alla risorsa.
[out, optional] pLayouts
Tipo: D3D12_PLACED_SUBRESOURCE_FOOTPRINT*
Puntatore a una matrice (di lunghezza NumSubresources) di strutture D3D12_PLACED_SUBRESOURCE_FOOTPRINT , da riempire con la descrizione e la posizione di ogni sottoresource.
[out, optional] pNumRows
Tipo: UINT*
Puntatore a una matrice (di lunghezza NumSubresources) di variabili integer, da riempire con il numero di righe per ogni sottoresource.
[out, optional] pRowSizeInBytes
Tipo: UINT64*
Puntatore a una matrice (di lunghezza NumSubresources) di variabili integer, ogni voce deve essere riempita con le dimensioni senza blocco in byte di una riga, di ogni sottorisorsa.
Ad esempio, se una risorsa Texture2D ha una larghezza di 32 e byte per pixel pari a 4,
quindi pRowSizeInBytes restituisce 128.
pRowSizeInBytes non deve essere confusa con il passo delle righe, come l'esame di pLayouts e l'acquisizione del passo della riga da questo vi darà 256 come è allineato a D3D12_TEXTURE_DATA_PITCH_ALIGNMENT.
[out, optional] pTotalBytes
Tipo: UINT64*
Puntatore a una variabile integer, da riempire con le dimensioni totali, in byte.
Valore restituito
nessuno
Osservazioni
Questa routine aiuta l'applicazione a compilare D3D12_PLACED_SUBRESOURCE_FOOTPRINT e D3D12_SUBRESOURCE_FOOTPRINT strutture, quando si esegue il suballocating dello spazio negli heaps di caricamento. Le strutture risultanti sono schede GPU agnostiche, ovvero i valori non variano da una scheda GPU alla successiva. GetCopyableFootprints usa i dettagli specificati sui formati delle risorse, i layout di trama e i requisiti di allineamento (dalla struttura D3D12_RESOURCE_DESC ) per compilare le strutture di sottorisorse. Le applicazioni hanno accesso a tutti questi dettagli, quindi questo metodo, o una variante di esso, può essere scritto come parte dell'app.
Esempio
L'esempio D3D12Multithreading usa ID3D12Device::GetCopyableFootprints come indicato di seguito:
// 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;
}
Fare riferimento al codice di esempio nel riferimento D3D12.
Requisiti
Piattaforma di destinazione | Windows |
Intestazione | d3d12.h |
Libreria | D3d12.lib |
DLL | D3d12.dll |