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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk