Método ID3D12Device::GetCopyableFootprints (d3d12.h)

Obtiene un diseño de recursos que se puede copiar. Ayuda al relleno de la aplicación D3D12_PLACED_SUBRESOURCE_FOOTPRINT y D3D12_SUBRESOURCE_FOOTPRINT cuando se coloca espacio en montones de carga.

Sintaxis

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

Parámetros

[in] pResourceDesc

Tipo: const D3D12_RESOURCE_DESC*

Descripción del recurso, como puntero a una estructura de D3D12_RESOURCE_DESC .

[in] FirstSubresource

Tipo: UINT

Índice del primer subrecurso del recurso. El intervalo de valores válidos es de 0 a D3D12_REQ_SUBRESOURCES.

[in] NumSubresources

Tipo: UINT

Número de subrecursos del recurso. El intervalo de valores válidos es de 0 a (D3D12_REQ_SUBRESOURCES - FirstSubresource).

BaseOffset

Tipo: UINT64

Desplazamiento, en bytes, al recurso.

[out, optional] pLayouts

Tipo: D3D12_PLACED_SUBRESOURCE_FOOTPRINT*

Puntero a una matriz (de longitud NumSubresources) de D3D12_PLACED_SUBRESOURCE_FOOTPRINT estructuras, que se rellenarán con la descripción y colocación de cada subrecurso.

[out, optional] pNumRows

Tipo: UINT*

Puntero a una matriz (de longitud NumSubresources) de variables de enteros, que se rellenarán con el número de filas de cada subrecurso.

[out, optional] pRowSizeInBytes

Tipo: UINT64*

Puntero a una matriz (de longitud NumSubresources) de variables enteras, cada entrada que se va a rellenar con el tamaño sin rellenar en bytes de una fila, de cada subrecurso.

Por ejemplo, si un recurso Texture2D tiene un ancho de 32 bytes por píxel de 4,

a continuación, pRowSizeInBytes devuelve 128.

pRowSizeInBytes no debe confundirse con el tono de fila, ya que examinar pLayouts y obtener el tono de fila de que le dará 256 a medida que está alineado con D3D12_TEXTURE_DATA_PITCH_ALIGNMENT.

[out, optional] pTotalBytes

Tipo: UINT64*

Puntero a una variable de entero, que se va a rellenar con el tamaño total, en bytes.

Valor devuelto

None

Observaciones

Esta rutina ayuda a la aplicación a rellenar D3D12_PLACED_SUBRESOURCE_FOOTPRINT y D3D12_SUBRESOURCE_FOOTPRINT estructuras, cuando se coloca espacio en montones de carga. Las estructuras resultantes son independientes del adaptador de GPU, lo que significa que los valores no variarán de un adaptador de GPU a otro. GetCopyableFootprints usa detalles especificados sobre formatos de recursos, diseños de textura y requisitos de alineación (de la estructura D3D12_RESOURCE_DESC ) para rellenar las estructuras de subrecursos. Las aplicaciones tienen acceso a todos estos detalles, por lo que este método, o una variación, se pueden escribir como parte de la aplicación.

Ejemplos

El ejemplo D3D12Multithreading usa ID3D12Device::GetCopyableFootprints de la siguiente manera:

// 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;
}

Consulte el código de ejemplo en la referencia de D3D12.

Requisitos

   
Plataforma de destino Windows
Encabezado d3d12.h
Library D3d12.lib
Archivo DLL D3d12.dll

Consulte también

CD3DX12_RESOURCE_DESC

CD3DX12_SUBRESOURCE_FOOTPRINT

ID3D12Device