Bagikan melalui


struktur D3D12_FEATURE_DATA_ARCHITECTURE (d3d12.h)

Menyediakan detail tentang arsitektur adaptor, sehingga aplikasi Anda dapat mengoptimalkan properti adaptor tertentu dengan lebih baik.

Catatan Struktur ini telah digantikan oleh struktur D3D12_FEATURE_DATA_ARCHITECTURE1 . Jika aplikasi Anda menargetkan Windows 10, versi 1703 (Pembaruan Kreator) atau yang lebih tinggi, gunakan D3D12_FEATURE_DATA_ARCHITECTURE1 (dan D3D12_FEATURE_ARCHITECTURE1) sebagai gantinya.
 

Sintaks

typedef struct D3D12_FEATURE_DATA_ARCHITECTURE {
  UINT NodeIndex;
  BOOL TileBasedRenderer;
  BOOL UMA;
  BOOL CacheCoherentUMA;
} D3D12_FEATURE_DATA_ARCHITECTURE;

Anggota

NodeIndex

Dalam operasi multi-adaptor, ini menunjukkan adaptor fisik perangkat mana yang relevan. Lihat Sistem multi-adaptor. NodeIndex diisi oleh aplikasi sebelum memanggil CheckFeatureSupport, karena aplikasi dapat mengambil detail tentang arsitektur setiap adaptor.

TileBasedRenderer

Menentukan apakah perangkat keras dan driver mendukung perender berbasis petak. Runtime mengatur anggota ini ke TRUE jika perangkat keras dan driver mendukung perender berbasis ubin.

UMA

Menentukan apakah perangkat keras dan driver mendukung UMA. Runtime mengatur anggota ini ke TRUE jika perangkat keras dan driver mendukung UMA.

CacheCoherentUMA

Menentukan apakah perangkat keras dan driver mendukung cache-coherent UMA. Runtime mengatur anggota ini ke TRUE jika perangkat keras dan driver mendukung cache-coherent UMA.

Keterangan

Cara menggunakan UMA dan CacheCoherentUMA

Aplikasi D3D12 harus khawatir tentang mengelola residensi memori dan menyediakan properti tumpukan yang optimal. Aplikasi D3D12 dapat tetap disederhanakan dan berjalan dengan cukup baik di banyak arsitektur GPU dengan hanya mengelola residensi untuk sumber daya di tumpukan D3D12_HEAP_TYPE_DEFAULT. Aplikasi tersebut hanya perlu memanggil IDXGIAdapter3::QueryVideoMemoryInfo untuk DXGI_MEMORY_SEGMENT_GROUP_LOCAL, dan mereka harus toleran terhadap D3D12_HEAP_TYPE_UPLOAD dan D3D12_HEAP_TYPE_READBACK berasal dari grup segmen memori yang sama.

Namun, desain sederhana seperti itu terlalu membatasi aplikasi yang mendorong batas. Jadi, D3D12_FEATURE_DATA_ARCHITECTURE membantu aplikasi mengoptimalkan properti adaptor yang mendasar dengan lebih baik.

Beberapa aplikasi mungkin ingin lebih mengoptimalkan adaptor diskrit, dan mengambil kompleksitas tambahan dalam mengelola memori sistem dan anggaran memori video. Jika ukuran tumpukan unggahan menyaingi ukuran tekstur default, pemanfaatan memori hampir ganda tersedia. Saat mendukung pengoptimalan tersebut, aplikasi dapat mendeteksi dua anggaran residensi atau mengenali UMAadalah salah.

Beberapa aplikasi mungkin ingin lebih mengoptimalkan adaptor terintegrasi/ UMA, terutama yang tertarik untuk memperpanjang masa pakai baterai pada perangkat seluler. Aplikasi D3D12 sederhana dipaksa untuk menyalin data antara tumpukan dengan atribusi yang berbeda, ketika tidak selalu diperlukan pada UMA. Namun, properti UMA, dengan sendirinya, mencakup area desain GPU abu-abu yang cukup samar. Jangan asumsikan UMA berarti semua memori yang dapat diakses GPU dapat diakses dengan bebas oleh CPU, karena tidak. Ada properti yang lebih selaras dengan jenis pemikiran tersebut: CacheCoherentUMA.

Ketika CacheCoherentUMAsalah, satu anggaran residensi tersedia tetapi desain UMA biasanya mendapat manfaat dari tiga atribusi timbunan. Peluang memang ada untuk menghapus penyalinan sumber daya melalui penggunaan sumber daya dan tumpukan pengunggahan dan pembacaan yang bijak, yang menyediakan akses CPU ke memori. Peluang seperti itu tidak jelas-potong, meskipun. Jadi, aplikasi harus berhati-hati; dan eksperimen di berbagai sistem "UMA" disarankan, karena menggunakan untuk mengaktifkan atau mendahului ID perangkat tertentu dapat dijaga. Pemahaman tentang arsitektur memori GPU dan bagaimana jenis heap diterjemahkan ke properti cache direkomendasikan. Kelayakan keberhasilan kemungkinan tergantung pada seberapa sering setiap prosesor membaca atau menulis data, ukuran dan lokalitas akses data, dll. Untuk pengembang tingkat lanjut: ketika UMA benar dan CacheCoherentUMAsalah, karakteristik paling unik untuk adaptor ini adalah bahwa tumpukan unggahan masih digabungkan dengan tulis. Namun, beberapa adaptor UMA mendapat manfaat dari properti no-CPU-access dan write-combine dari heap default dan upload. Lihat GetCustomHeapProperties untuk detail selengkapnya.

Ketika CacheCoherentUMA benar, aplikasi dapat lebih kuat menghibur meninggalkan atribusi tumpukan dan menggunakan tumpukan kustom yang setara dengan tumpukan unggahan di mana-mana. Pengoptimalan UMA zero-copy lebih umum didorong karena lebih banyak skenario hanya akan mendapat manfaat dari penggunaan bersama. Model memori sangat kondusif untuk lebih banyak skenario dan adopsi yang lebih luas. Beberapa kasus sudut mungkin masih ada di mana manfaat tidak mudah diperoleh, tetapi harus jauh lebih langka dan kurang merugikan daripada opsi lainnya. Untuk pengembang tingkat lanjut: CacheCoherentUMA berarti bahwa sejumlah besar cache dalam hierarki memori juga terpadu atau terintegrasi antara CPU dan GPU. Karakteristik yang paling unik yang dapat diamati adalah bahwa tumpuk unggahan sebenarnya menulis kembali di CacheCoherentUMA. Untuk arsitektur ini, penggunaan write-combine pada tumpukan unggahan biasanya merugikan.

Detail tingkat rendah harus diabaikan oleh sebagian besar aplikasi adaptor tunggal. Seperti biasa, aplikasi adaptor tunggal dapat menyederhanakan lanskap dan memastikan bahwa CPU menulis untuk mengunggah tumpukan menggunakan pola yang ramah write-combine. Detail tingkat bawah membantu memperkuat konsep untuk aplikasi multi-adapter. Aplikasi multi-adapter kemungkinan perlu memahami properti arsitektur adaptor dengan cukup baik untuk memilih properti tumpukan kustom yang optimal untuk memindahkan data antar adaptor secara efisien.

Persyaratan

Persyaratan Nilai
Header d3d12.h

Lihat juga

Struktur Inti

D3D12_FEATURE