Bagikan melalui


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

Lihat juga

ID3D12GraphicsCommandList

Sumber daya berjenjang