Bagikan melalui


enumerasi D3D12_HEAP_FLAGS (d3d12.h)

Menentukan opsi heap, seperti apakah heap dapat berisi tekstur, dan apakah sumber daya dibagikan di seluruh adaptor.

Sintaks

typedef enum D3D12_HEAP_FLAGS {
  D3D12_HEAP_FLAG_NONE = 0,
  D3D12_HEAP_FLAG_SHARED = 0x1,
  D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
  D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
  D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
  D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
  D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
  D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
  D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
  D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
  D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
  D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
  D3D12_HEAP_FLAG_TOOLS_USE_MANUAL_WRITE_TRACKING,
  D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0,
  D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0,
  D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
  D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84
} ;

Konstanta

 
D3D12_HEAP_FLAG_NONE
Nilai: 0
Tidak ada opsi yang ditentukan.
D3D12_HEAP_FLAG_SHARED
Nilai: 0x1
Timbunan dibagikan. Lihat Shared Heaps.
D3D12_HEAP_FLAG_DENY_BUFFERS
Nilai: 0x4
Timbunan tidak diizinkan untuk memuat buffer.
D3D12_HEAP_FLAG_ALLOW_DISPLAY
Nilai: 0x8
Timbunan diizinkan untuk mengandung permukaan rantai pertukaran.
D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER
Nilai: 0x20
Timbunan diizinkan untuk berbagi sumber daya di seluruh adaptor. Lihat Shared Heaps. Sesi yang dilindungi tidak dapat dicampur dengan sumber daya yang dibagikan di seluruh adaptor.
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES
Nilai: 0x40
Heap tidak diizinkan untuk menyimpan tekstur Render Target (RT) dan/atau Depth-Stencil (DS).
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES
Nilai: 0x80
Timbunan tidak diizinkan untuk berisi sumber daya dengan D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D, atau D3D12_RESOURCE_DIMENSION_TEXTURE3D kecuali ada D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET atau D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL. Lihat D3D12_RESOURCE_DIMENSION dan D3D12_RESOURCE_FLAGS.
D3D12_HEAP_FLAG_HARDWARE_PROTECTED
Nilai: 0x100
Tidak didukung. Jangan gunakan.
D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH
Nilai: 0x200
Timbunan mendukung fungsionalitas MEM_WRITE_WATCH, yang menyebabkan sistem melacak halaman yang ditulis di wilayah memori yang diterapkan. Bendera ini tidak dapat digabungkan dengan bendera D3D12_HEAP_TYPE_DEFAULT atau D3D12_CPU_PAGE_PROPERTY_UNKNOWN. Aplikasi tidak disarankan untuk menggunakan bendera ini sendiri karena mencegah alat menggunakan fungsionalitas ini.
D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS
Nilai: 0x400
Memastikan bahwa operasi atom akan menjadi atomik pada memori tumpukan ini, menurut komponen yang dapat melihat memori.

Membuat timbunan dengan bendera ini akan gagal di bawah salah satu kondisi ini.
- Jenis heap D3D12_HEAP_TYPE_DEFAULT, dan heap dapat terlihat pada beberapa node, tetapi perangkat tidak mendukung D3D12_CROSS_NODE_SHARING_TIER_3.
- Timbunan terlihat CPU, tetapi jenis heap tidakD3D12_HEAP_TYPE_CUSTOM.

Perhatikan bahwa timbunan dengan bendera ini mungkin merupakan sumber daya terbatas pada beberapa sistem.
D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT
Nilai: 0x800
Tumpukan dibuat dalam status non-residen dan harus dibuat residen menggunakan ID3D12Device::MakeResident atau ID3D12Device3::EnqueueMakeResident.

Secara default, langkah terakhir pembuatan timbunan adalah membuat penghuni tumpukan, sehingga bendera ini melewati langkah ini dan memungkinkan aplikasi untuk memutuskan kapan melakukannya.
D3D12_HEAP_FLAG_CREATE_NOT_ZEROED
Nilai: 0x1000
Memungkinkan OS untuk tidak nol timbunan yang dibuat. Secara default, sumber daya dan timbunan yang berkomitmen hampir selalu di-nol setelah pembuatan. Bendera ini memungkinkan hal ini diteruskan dalam beberapa skenario. Namun, itu tidak menjaminnya. Misalnya, memori yang berasal dari proses lain masih perlu di-nol untuk perlindungan data dan isolasi proses. Ini dapat menurunkan overhead pembuatan timbunan.
D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES
Nilai: 0
Timbunan diizinkan untuk menyimpan semua jenis buffer dan/atau tekstur. Ini adalah alias; untuk detail selengkapnya, lihat "Alias" di bagian Keterangan.
D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS
Nilai: 0xc0
Timbunan hanya diperbolehkan untuk menyimpan buffer. Ini adalah alias; untuk detail selengkapnya, lihat "Alias" di bagian Keterangan.
D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES
Nilai: 0x44
Timbunan hanya diizinkan untuk menyimpan tekstur non-RT, non-DS. Ini adalah alias; untuk detail selengkapnya, lihat "Alias" di bagian Keterangan.
D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES
Nilai: 0x84
Timbunan hanya diizinkan untuk menyimpan tekstur RT dan/atau DS. Ini adalah alias; untuk detail selengkapnya, lihat "Alias" di bagian Keterangan.

Keterangan

Enum ini digunakan oleh item API berikut:

Bendera heap berikut harus digunakan dengan ID3D12Device::CreateHeap, tetapi akan diatur secara otomatis untuk timbunan implisit yang dibuat oleh ID3D12Device::CreateCommittedResource. Adaptor yang hanya mendukung heap tingkat 1 harus mengatur dua dari tiga bendera berikut.
Nilai Deskripsi
D3D12_HEAP_FLAG_DENY_BUFFERS Timbunan tidak diizinkan untuk berisi sumber daya dengan D3D12_RESOURCE_DIMENSION_BUFFER (yang merupakan konstanta enumerasi D3D12_RESOURCE_DIMENSION ).
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES Timbunan tidak diizinkan untuk berisi sumber daya dengan D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D, atau D3D12_RESOURCE_DIMENSION_TEXTURE3D bersama dengan D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET atau D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL. (Dua item terakhir adalah konstanta enumerasi D3D12_RESOURCE_FLAGS.)
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES Timbunan tidak diizinkan untuk berisi sumber daya dengan D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D, atau D3D12_RESOURCE_DIMENSION_TEXTURE3D kecuali D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET dan D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL tidak ada.

Alias

Adaptor yang mendukung heap tier 2 atau lebih tinggi juga diizinkan untuk mengatur tidak ada bendera di atas. Alias untuk bendera ini tersedia untuk aplikasi yang lebih suka berpikir hanya sumber daya mana yang didukung.

Alias berikut ada, jadi berhati-hatilah saat melakukan manipulasi bit:

  • D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0 dan hanya didukung pada tingkat heap 2 dan yang lebih besar.
  • D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES | D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES
  • D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = D3D12_HEAP_FLAG_DENY_BUFFERS | D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES
  • D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = D3D12_HEAP_FLAG_DENY_BUFFERS | D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES

Timbunan yang dapat ditampilkan

Tumpukan yang dapat ditampilkan paling umum dibuat oleh swapchain untuk presentasi, untuk mengaktifkan pemindaian ke monitor.

Timbunan yang dapat ditampilkan ditentukan dengan anggota D3D12_HEAP_FLAG_ALLOW_DISPLAY enum D3D12_HEAP_FLAGS .

Aplikasi dapat membuat timbunan yang dapat ditampilkan di luar swapchain; tetapi tidak dapat benar-benar hadir dengan mereka. Bendera ini tidak didukung oleh CreateHeap dan hanya dapat digunakan dengan CreateCommittedResource dengan D3D12_HEAP_TYPE_DEFAULT.

Pembatasan tambahan untuk D3D12_RESOURCE_DESC berlaku untuk sumber daya yang dibuat dengan tumpukan yang dapat ditampilkan.

  • Format tidak hanya harus didukung oleh perangkat, tetapi harus didukung untuk pemindaian. Lihat penggunaan anggota D3D12_FORMAT_SUPPORT1 D3D12_FORMAT_SUPPORT1_DISPLAY.
  • Dimensi harus D3D12_RESOURCE_DIMENSION_TEXTURE2D.
  • Perataan harus 0.
  • ArraySize mungkin 1 atau 2.
  • MipLevels harus 1.
  • SampleDesc harus memiliki Hitungan yang diatur ke 1 dan Kualitas diatur ke 0.
  • Tata letak harus D3D12_TEXTURE_LAYOUT_UNKNOWN.
  • D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL dan D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER adalah bendera yang tidak valid.

Persyaratan

Persyaratan Nilai
Header d3d12.h

Lihat juga

CD3DX12_HEAP_DESC

Enumerasi Inti

Tumpuk Deskriptor