Bagikan melalui


enumerasi D3D12_HEAP_TYPE (d3d12.h)

Menentukan jenis timbunan. Ketika penghuni, timbunan berada di kumpulan memori fisik tertentu dengan properti cache CPU tertentu.

Sintaks

typedef enum D3D12_HEAP_TYPE {
  D3D12_HEAP_TYPE_DEFAULT = 1,
  D3D12_HEAP_TYPE_UPLOAD = 2,
  D3D12_HEAP_TYPE_READBACK = 3,
  D3D12_HEAP_TYPE_CUSTOM = 4,
  D3D12_HEAP_TYPE_GPU_UPLOAD
} ;

Konstanta

 
D3D12_HEAP_TYPE_DEFAULT
Nilai: 1
Menentukan timbunan default. Jenis timbunan ini mengalami bandwidth terbanyak untuk GPU, tetapi tidak dapat menyediakan akses CPU. GPU dapat membaca dan menulis ke memori dari kumpulan ini, dan hambatan transisi sumber daya dapat diubah. Sebagian besar timbunan dan sumber daya diharapkan terletak di sini, dan biasanya diisi melalui sumber daya dalam tumpuk unggahan.
D3D12_HEAP_TYPE_UPLOAD
Nilai: 2
Menentukan timbunan yang digunakan untuk mengunggah. Jenis heap ini memiliki akses CPU yang dioptimalkan untuk diunggah ke GPU, tetapi tidak mengalami jumlah bandwidth maksimum untuk GPU. Jenis heap ini paling baik untuk data CPU-write-once, GPU-read-once; tetapi GPU-read-once lebih ketat dari yang diperlukan. GPU-read-once-or-from-cache adalah kasus penggunaan yang dapat diterima untuk data; tetapi penggunaan tersebut sulit dinilai karena desain dan ukuran cache GPU yang berbeda. Jika ragu, tetap pada definisi GPU-baca-sekali atau profilkan perbedaan pada banyak GPU antara menyalin data ke tumpukan _DEFAULT vs. membaca data dari tumpukan _UPLOAD.

Sumber daya dalam timbunan ini harus dibuat dengan D3D12_RESOURCE_STATE_GENERIC_READ dan tidak dapat diubah dari ini. Alamat CPU untuk timbunan tersebut biasanya tidak efisien untuk pembacaan CPU.

Berikut ini adalah penggunaan umum untuk timbunan _UPLOAD:

  • Menginisialisasi sumber daya dalam timbunan _DEFAULT dengan data dari CPU.

  • Mengunggah data dinamis dalam buffer konstan yang dibaca, berulang kali, oleh setiap puncak atau piksel.



Berikut ini kemungkinan bukan penggunaan yang baik untuk timbunan _UPLOAD:

  • Menginisialisasi ulang konten sumber daya setiap bingkai.

  • Mengunggah data konstanta yang hanya digunakan setiap panggilan Gambar lainnya, di mana setiap Gambar menggunakan jumlah data lain yang tidak sepele.

D3D12_HEAP_TYPE_READBACK
Nilai: 3
Menentukan timbunan yang digunakan untuk membaca kembali. Jenis heap ini memiliki akses CPU yang dioptimalkan untuk membaca data kembali dari GPU, tetapi tidak mengalami jumlah bandwidth maksimum untuk GPU. Jenis heap ini paling baik untuk data GPU-write-once yang dapat dibaca CPU. Perilaku cache CPU adalah write-back, yang kondusif untuk beberapa pembacaan CPU sub-cache-line.

Sumber daya dalam timbunan ini harus dibuat dengan D3D12_RESOURCE_STATE_COPY_DEST, dan tidak dapat diubah dari ini.
D3D12_HEAP_TYPE_CUSTOM
Nilai: 4
Menentukan timbunan kustom. Aplikasi dapat menentukan properti kumpulan memori dan cache CPU secara langsung, yang dapat berguna untuk pengoptimalan UMA, multi-mesin, multi-adaptor, atau kasus khusus lainnya. Untuk melakukannya, aplikasi diharapkan memahami arsitektur adaptor untuk membuat pilihan yang tepat. Untuk detail selengkapnya, lihat

D3D12_FEATURE_ARCHITECTURE,
D3D12_FEATURE_DATA_ARCHITECTURE, dan
GetCustomHeapProperties.

Keterangan

Enum ini digunakan oleh item API berikut:

Jenis tumpukan termasuk dalam dua kategori: jenis tumpukan abstrak, dan jenis tumpukan kustom.

Berikut ini adalah jenis tumpukan abstrak:

  • D3D12_HEAP_TYPE_DEFAULT
  • D3D12_HEAP_TYPE_UPLOAD
  • D3D12_HEAP_TYPE_READBACK
Berikut ini adalah jenis timbunan kustom:
  • D3D12_HEAP_TYPE_CUSTOM
Jenis tumpukan abstrak (_DEFAULT, _UPLOAD, dan _READBACK) berguna untuk menyederhanakan penulisan aplikasi adaptor netral, karena aplikasi tersebut tidak perlu menyadari arsitektur memori adaptor. Untuk menggunakan jenis tumpukan abstrak untuk menyederhanakan penulisan aplikasi adaptor-netral, aplikasi pada dasarnya memperlakukan adaptor seolah-olah itu adalah adaptor diskrit atau NUMA. Tetapi, menggunakan jenis heap memungkinkan terjemahan yang efisien untuk adaptor UMA. Aplikasi netral arsitektur adaptor harus mengasumsikan ada dua kumpulan memori yang tersedia, di mana kumpulan dengan bandwidth GPU terbanyak tidak dapat menyediakan akses CPU. Kumpulan dengan bandwidth GPU paling sedikit dapat memiliki akses CPU; tetapi harus dioptimalkan untuk diunggah ke GPU atau readback dari GPU.

Perhatikan bahwa tekstur (tidak seperti buffer) tidak boleh jenis heap UPLOAD atau READBACK.

Persyaratan

Persyaratan Nilai
Header d3d12.h

Lihat juga

Enumerasi Inti

Tumpuk Deskriptor