ID3D12Resource::WriteToSubresource method (d3d12.h)
Menggunakan CPU untuk menyalin data ke dalam sub sumber daya, memungkinkan CPU untuk memodifikasi konten sebagian besar tekstur dengan tata letak yang tidak terdefinisi.
Sintaks
HRESULT WriteToSubresource(
UINT DstSubresource,
[in, optional] const D3D12_BOX *pDstBox,
[in] const void *pSrcData,
UINT SrcRowPitch,
UINT SrcDepthPitch
);
Parameter
DstSubresource
Jenis: UINT
Menentukan indeks subsumber daya.
[in, optional] pDstBox
Jenis: const D3D12_BOX*
Penunjuk ke kotak yang menentukan bagian sub sumber daya tujuan untuk menyalin data sumber daya. Jika NULL, data ditulis ke subsumber daya tujuan tanpa offset. Dimensi sumber harus sesuai dengan tujuan (lihat D3D12_BOX).
Kotak kosong menghasilkan no-op. Kotak kosong jika nilai atas lebih besar dari atau sama dengan nilai bawah, atau nilai kiri lebih besar dari atau sama dengan nilai kanan, atau nilai depan lebih besar dari atau sama dengan nilai belakang. Ketika kotak kosong, metode ini tidak melakukan operasi apa pun.
[in] pSrcData
Jenis: const void*
Penunjuk ke data sumber dalam memori.
SrcRowPitch
Jenis: UINT
Jarak dari satu baris data sumber ke baris berikutnya.
SrcDepthPitch
Jenis: UINT
Jarak dari satu ilis kedalaman data sumber ke bagian berikutnya.
Mengembalikan nilai
Jenis: HRESULT
Metode ini mengembalikan salah satu Kode Pengembalian Direct3D 12.
Keterangan
Sumber daya harus terlebih dahulu dipetakan menggunakan Peta. Tekstur harus dalam status D3D12_RESOURCE_STATE_COMMON untuk akses CPU melalui WriteToSubresource dan ReadFromSubresource menjadi legal; tetapi buffer tidak.
Untuk efisiensi, pastikan batas dan perataan jangkauan dalam kotak adalah ( 64 / [byte per piksel] ) piksel secara horizontal. Batas dan perataan vertikal harus 2 baris, kecuali ketika format 1-byte-per-piksel digunakan, dalam hal ini 4 baris direkomendasikan. Irisan kedalaman tunggal per panggilan ditangani secara efisien. Disarankan tetapi tidak perlu menyediakan pointer dan langkah-langkah yang selaras dengan 128 byte.
Saat menulis ke tingkat sub mipmap, disarankan untuk menggunakan lebar dan tinggi yang lebih besar daripada yang dijelaskan di atas. Ini karena tingkat mipmap kecil sebenarnya dapat disimpan dalam blok memori yang lebih besar, dengan jumlah offsetting buram yang dapat mengganggu penyelarasan ke baris cache.
WriteToSubresource dan ReadFromSubresource memungkinkan pengoptimalan mendekati nol-copy untuk adaptor UMA, tetapi dapat secara dilarang mengganggu efisiensi adaptor diskrit/ NUMA karena data tekstur tidak dapat berada di memori video lokal. Aplikasi umum harus menempel pada teknik unggahan yang ramah diskrit, kecuali jika mereka mengenali arsitektur adaptor adalah UMA. Untuk detail selengkapnya tentang pengunggahan, lihat CopyTextureRegion, dan untuk detail selengkapnya tentang UMA, lihat D3D12_FEATURE_DATA_ARCHITECTURE.
Pada sistem UMA, rutinitas ini dapat digunakan untuk meminimalkan biaya penyalinan memori melalui pengoptimalan perulangan yang dikenal sebagai ubin perulangan. Dengan memecah unggahan menjadi chuck yang nyaman di cache CPU, bandwidth yang efektif antara CPU dan memori utama lebih dekat mencapai maksimum teoritis.
Persyaratan
Persyaratan | Nilai |
---|---|
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