Condividi tramite


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

Vedi anche

CD3DX12_RESOURCE_DESC

CD3DX12_SUBRESOURCE_FOOTPRINT

ID3D12Device