DirectX 12 D3D12 Mendapatkan Fitur Baru Yang Memberi Lebih Banyak Kawalan Mengenai Peruntukan Memori Ke GPU Atau CPU Secara Dinamik

Perkakasan / DirectX 12 D3D12 Mendapatkan Fitur Baru Yang Memberi Lebih Banyak Kawalan Mengenai Peruntukan Memori Ke GPU Atau CPU Secara Dinamik 3 minit membaca

DirectX 12



Dalam kemas kini utama OS Windows 10 yang akan datang, DirectX12, dan lebih khusus lagi, Direct3D (D3D12), akan tidak mendapat satu tetapi bendera baru yang akan mengubah cara sumber memori diperuntukkan. Tampaknya Microsoft benar-benar prihatin tentang cara memori dan daya pemprosesan diminta oleh dan dialokasikan ke aplikasi, yang sering dapat membuat hambatan. Secara kebetulan, bendera baru ini tidak akan mempengaruhi memori secara langsung, tetapi akan mempengaruhi cara ia diperuntukkan dan dikendalikan.

Microsoft secara aktif mengembangkan iterasi terbaru dari platform DirectX, yang telah lama menjadi standard utama untuk permainan desktop. Versi terbaru Microsoft DirectX 12 baru-baru ini mendapat beberapa ciri baru. Baru-baru ini kami membuat liputan mengenai ciri baru yang paling menonjol dan penting untuk DirectX 12 yang akan memberi banyak manfaat kepada pembangun dan pengguna akhir. Minggu ini, Microsoft menunjukkan kemas kini utama seterusnya ke Windows 10 harus menyertakan dua bendera baru untuk DirectX12 Direct3D. Menariknya, pembangun yang ingin menerokainya sama hari ini, hanya perlu memuat turun dan memasang binaan Windows 10 Insider Preview terbaru dan SDK Preview Build untuk Windows 10 (20H1) dari Program Windows Insider.



Windows 10 DirectX 12 Direct3D Untuk Mendapatkan Dua Bendera Baru Untuk Peruntukan Memori Dinamik Antara CPU dan GPU:

Dalam kemas kini Windows 10 yang akan datang, D3D12 akan menambahkan dua bendera baru ke penghitungan D3D12_HEAP_FLAG. Secara kebetulan, bendera baru ini adalah sifat 'tidak kekal'. Ringkasnya, ini bermaksud bahawa bendera baru tidak akan langsung mempengaruhi memori yang dihasilkan itu sendiri. Sebaliknya, bendera baru akan mempengaruhi cara memori diperuntukkan. Selain itu, bendera ini tidak dapat dilihat ID3D12Heap :: GetDesc atau ID3D12Resource :: GetHeapProperties .



D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT:

Dalam lelarannya saat ini, setiap kali pemaju meminta D3D untuk memperuntukkan timbunan atau sumber daya yang komited, perkara terakhir yang berlaku sebelum dia mendapatkan kembali objeknya adalah ingatan menjadi penduduk. Ini sangat serupa dengan ID3D12Device :: MakeResident sedang dilaksanakan. Tidak perlu ditambahkan, proses seperti ini membawakan dua masalah dengan segera:



  1. Reka bentuknya menyekat CPU Thread sehingga memori siap sepenuhnya digunakan. Ini bukan situasi yang ideal atau diingini
  2. Proses ini juga akan membolehkan pemaju mengompresi lebih banyak memori, melebihi apa yang ditunjukkan oleh anggaran proses semasa yang harus dia gunakan.

Yang baru ditambah ID3D12Device3 :: EnqueueMakeResident membolehkan aplikasi membuat pilihan yang berbeza. Aplikasi boleh menunggu residensi menggunakan GPU daripada CPU atau meminta operasi residensi untuk gagal daripada melebihi anggaran. Peruntukan memori dalam keadaan bukan pemastautin menghasilkan kedua-dua faedah kepada penggunaan sumber pertama.

D3D12_HEAP_FLAG_CREATE_NOT_ZEROED:

Bendera ini cuba menangani isi sifar yang memberikan sumber dan timbunan yang baru dibuat oleh D3D yang diterima. Microsoft berusaha mengoptimumkan proses ini dengan mengaktifkan lebih banyak penggunaan memori yang tidak pernah meninggalkan batasan proses tertentu tanpa memusatkan perhatian. Namun, ini tidak berfungsi dengan baik dan memaksa jurutera Microsoft untuk kembali mengembalikan memori sifar sahaja. Tidak perlu disebutkan, cara ini agak membosankan kerana pengurus memori perlu secara jelas menulis angka nol ke dalam memori sebelum mengembalikannya kepada pemaju untuk digunakan semula.

Sebagai cara untuk mengoptimumkan proses, para pengembang diberi kemampuan untuk memilih keluar dari proses yang membosankan dengan hanya menentukan bendera baru selama peruntukan timbunan / sumber daya. Pada dasarnya, pengagihan semula dinamik dapat meminimumkan proses zeroing sepanjang masa yang wajib, dan memperuntukkan beberapa memori yang dibebaskan yang digunakan oleh proses pembangun tanpa memaksanya melalui proses zero-ulang.



Microsoft telah menambahkan bendera baru ini dan mereka tidak memerlukan pemacu baru. Lebih-lebih lagi, tidak ada yang berdedikasi CheckFeatureSupport pilihan untuk ini. Pada dasarnya, bendera baru ini tersedia bila-bila masa ID3D12Device8 terdedah, atau cek untuk D3D12_FEATURE_D3D12_OPTIONS7 berjaya. Semua permintaan bendera baru adalah bahawa pembangun harus menjalankan proses pada versi D3D12 yang memahaminya.

Teg X12 langsung directx Microsoft Tingkap