Metode ID3D12GraphicsCommandList::CopyTiles (d3d12.h)
Menyalin petak peta dari buffer ke sumber daya ubin atau sebaliknya.
Sintaks
void CopyTiles(
[in] ID3D12Resource *pTiledResource,
[in] const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
[in] const D3D12_TILE_REGION_SIZE *pTileRegionSize,
[in] ID3D12Resource *pBuffer,
UINT64 BufferStartOffsetInBytes,
D3D12_TILE_COPY_FLAGS Flags
);
Parameter
[in] pTiledResource
Jenis: ID3D12Resource*
Penunjuk ke sumber daya berjenjang.
[in] pTileRegionStartCoordinate
Jenis: const D3D12_TILED_RESOURCE_COORDINATE*
Penunjuk ke struktur D3D12_TILED_RESOURCE_COORDINATE yang menjelaskan koordinat awal sumber daya ubin.
[in] pTileRegionSize
Jenis: const D3D12_TILE_REGION_SIZE*
Penunjuk ke struktur D3D12_TILE_REGION_SIZE yang menjelaskan ukuran wilayah petak peta.
[in] pBuffer
Jenis: ID3D12Resource*
Penunjuk ke ID3D12Resource yang mewakili buffer default, dinamis, atau penahapan.
BufferStartOffsetInBytes
Jenis: UINT64
Offset dalam byte ke dalam buffer di pBuffer untuk memulai operasi.
Flags
Jenis: D3D12_TILE_COPY_FLAGS
Kombinasi nilai D3D12_TILE_COPY_FLAGS-ketik yang digabungkan dengan menggunakan operasi BITWISE OR dan yang mengidentifikasi cara menyalin petak peta.
Nilai kembali
Tidak ada
Keterangan
CopyTiles menghilangkan operasi tulis ke area yang tidak dipetakan dan menangani operasi baca dari area yang tidak dipetakan (kecuali pada sumber daya petak Tier_1, di mana membaca dan menulis area yang tidak dipetakan tidak valid - lihat D3D12_TILED_RESOURCES_TIER).
Jika operasi salin melibatkan penulisan ke lokasi memori yang sama beberapa kali karena beberapa lokasi di sumber daya tujuan dipetakan ke memori petak peta yang sama, operasi tulis yang dihasilkan ke petak peta multi-dipetakan tidak deterministik dan tidak dapat diulang; artinya, akses ke memori petak peta terjadi dalam urutan apa pun yang terjadi perangkat keras untuk menjalankan operasi salin.
Petak peta yang terlibat dalam operasi salin tidak dapat menyertakan petak peta yang berisi mipmap yang dikemas atau hasil operasi salin tidak terdefinisi. Untuk mentransfer data ke dan dari mipmap yang dikemas perangkat keras ke dalam petak peta satu atau lebih yang merupakan mip yang dikemas, Anda harus menggunakan API salin standar (yaitu, khusus non-petak peta) seperti CopyTextureRegion.
CopyTiles menyalin data dalam pola yang sedikit berbeda dari metode salin standar.
Tata letak memori petak peta di sisi sumber daya buffer non-ubin dari operasi penyalinan bersifat linier dalam memori dalam petak peta 64 KB, yang menggeser perangkat keras dan driver dan mendesis per petak peta yang sesuai ketika mereka mentransfer ke dan dari sumber daya ubin. Untuk permukaan multisample antialiasing (MSAA), perangkat keras dan driver melintasi setiap sampel piksel dalam urutan indeks sampel sebelum berpindah ke piksel berikutnya. Untuk petak peta yang diisi sebagian di sisi kanan (untuk permukaan yang memiliki lebar bukan kelipatan lebar petak dalam piksel), pitch dan langkah untuk memindahkan ke bawah baris adalah ukuran penuh dalam byte dari piksel angka yang akan pas di seluruh petak jika petak peta penuh. Jadi, mungkin ada celah antara setiap baris piksel dalam memori. Mipmaps yang lebih kecil dari petak peta tidak dikemas bersama-sama dalam tata letak linier, yang mungkin tampaknya membuang-buang ruang memori, tetapi seperti yang disebutkan Anda tidak dapat menggunakan CopyTiles untuk menyalin ke mipmaps yang dikemas perangkat keras bersama-sama. Anda hanya dapat menggunakan API salinan generik, seperti CopyTextureRegion, untuk menyalin mipmap kecil satu per satu.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Header | d3d12.h |
Pustaka | D3d12.lib |
DLL | D3d12.dll |