ID3D12Device::GetCopyableFootprints method (d3d12.h)

Mendapatkan tata letak sumber daya yang dapat disalin. Membantu aplikasi mengisi D3D12_PLACED_SUBRESOURCE_FOOTPRINT dan D3D12_SUBRESOURCE_FOOTPRINT saat menyuluruhkan ruang dalam tumpukan unggahan.

Sintaks

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

Jenis: const D3D12_RESOURCE_DESC*

Deskripsi sumber daya, sebagai penunjuk ke struktur D3D12_RESOURCE_DESC .

[in] FirstSubresource

Jenis: UINT

Indeks subsumber daya pertama dalam sumber daya. Rentang nilai yang valid adalah 0 hingga D3D12_REQ_SUBRESOURCES.

[in] NumSubresources

Jenis: UINT

Jumlah subsumber daya dalam sumber daya. Rentang nilai yang valid adalah 0 hingga (D3D12_REQ_SUBRESOURCES - FirstSubresource).

BaseOffset

Jenis: UINT64

Offset, dalam byte, ke sumber daya.

[out, optional] pLayouts

Jenis: D3D12_PLACED_SUBRESOURCE_FOOTPRINT*

Penunjuk ke array ( panjang NumSubresources) dari struktur D3D12_PLACED_SUBRESOURCE_FOOTPRINT , untuk diisi dengan deskripsi dan penempatan setiap subsumber daya.

[out, optional] pNumRows

Jenis: UINT*

Penunjuk ke array ( panjang NumSubresources) dari variabel bilangan bulat, yang akan diisi dengan jumlah baris untuk setiap sub sumber daya.

[out, optional] pRowSizeInBytes

Jenis: UINT64*

Penunjuk ke array ( panjang NumSubresources) dari variabel bilangan bulat, setiap entri yang akan diisi dengan ukuran yang tidak diisi dalam byte baris, dari setiap subsumber daya.

Misalnya, jika sumber daya Texture2D memiliki lebar 32 dan byte per piksel 4,

kemudian pRowSizeInBytes mengembalikan 128.

pRowSizeInBytes tidak boleh dikacaukan dengan pitch baris, seperti memeriksa pLayouts dan mendapatkan pitch baris dari yang akan memberi Anda 256 karena selaras dengan D3D12_TEXTURE_DATA_PITCH_ALIGNMENT.

[out, optional] pTotalBytes

Jenis: UINT64*

Penunjuk ke variabel bilangan bulat, yang akan diisi dengan ukuran total, dalam byte.

Mengembalikan nilai

Tidak ada

Keterangan

Rutinitas ini membantu aplikasi dalam mengisi struktur D3D12_PLACED_SUBRESOURCE_FOOTPRINT dan D3D12_SUBRESOURCE_FOOTPRINT , saat menyuluruhkan ruang dalam tumpukan unggahan. Struktur yang dihasilkan adalah adaptor-agnostik GPU, yang berarti bahwa nilai tidak akan bervariasi dari satu adaptor GPU ke adaptor berikutnya. GetCopyableFootprints menggunakan detail tertentu tentang format sumber daya, tata letak tekstur, dan persyaratan perataan (dari struktur D3D12_RESOURCE_DESC ) untuk mengisi struktur sub sumber daya. Aplikasi memiliki akses ke semua detail ini, sehingga metode ini, atau variasinya, dapat ditulis sebagai bagian dari aplikasi.

Contoh

Sampel D3D12Multithreading menggunakan ID3D12Device::GetCopyableFootprints sebagai berikut:

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

Lihat Contoh Kode dalam Referensi D3D12.

Persyaratan

   
Target Platform Windows
Header d3d12.h
Pustaka D3d12.lib
DLL D3d12.dll

Lihat juga

CD3DX12_RESOURCE_DESC

CD3DX12_SUBRESOURCE_FOOTPRINT

ID3D12Device