Bagikan melalui


Perbedaan dalam Model Pengikatan dari Direct3D 11

Salah satu keputusan desain utama di balik pengikatan DirectX12 adalah memisahkannya dari tugas manajemen lainnya. Ini menempatkan beberapa persyaratan pada aplikasi untuk mengelola potensi bahaya tertentu.

Keuntungan utama dari Model Pengikatan D3D12 adalah memungkinkan aplikasi untuk sering mengubah pengikatan tekstur, tanpa biaya performa CPU yang besar. Manfaat lainnya adalah bahwa shader memiliki akses ke sejumlah besar sumber daya, shader tidak perlu tahu terlebih dahulu berapa banyak sumber daya yang akan terikat, dan bahwa model pengikatan sumber daya terpadu dapat digunakan terlepas dari perangkat keras atau aliran konten aplikasi.

Untuk meningkatkan performa, model pengikatan tidak mengharuskan sistem untuk melacak pengikatan apa yang telah digunakan GPU oleh aplikasi, dan ada integrasi yang bersih antara daftar perintah pengikatan dan multi-utas.

Bagian berikut mencantumkan beberapa perubahan pada model pengikatan sumber daya sejak D3D11.

Manajemen Residensi Memori Dipisahkan Dari Pengikatan

Aplikasi memiliki kontrol eksplisit atas permukaan mana yang perlu tersedia bagi GPU untuk digunakan secara langsung (disebut sebagai "residen"). Sebaliknya, mereka dapat menerapkan status lain pada sumber daya seperti secara eksplisit membuat mereka tidak tinggal, atau membiarkan OS memilih untuk kelas aplikasi tertentu yang membutuhkan jejak memori minimal. Poin penting di sini adalah bahwa manajemen aplikasi dari apa yang penghuni benar-benar diurai dari bagaimana ia memberikan akses ke sumber daya ke shader.

Pemisahan manajemen residensi dari mekanisme untuk memberikan akses shader ke sumber daya mengurangi biaya sistem/perangkat keras untuk penyajian karena OS tidak harus terus-menerus memeriksa status pengikatan lokal untuk mengetahui apa yang harus dibuat residen. Selain itu, shader tidak lagi harus tahu permukaan mana yang tepat yang mungkin perlu mereka referensikan, selama seluruh set sumber daya yang mungkin dapat diakses telah dibuat penghuni sebelumnya.

Manajemen Masa Pakai Objek Dipisahkan Dari Pengikatan

Tidak seperti API sebelumnya, sistem tidak lagi melacak pengikatan sumber daya ke alur. Ini digunakan untuk memungkinkan sistem untuk tetap hidup sumber daya yang telah dirilis aplikasi karena masih dirujuk oleh pekerjaan GPU yang luar biasa.

Sebelum membebaskan sumber daya apa pun, seperti tekstur, aplikasi sekarang harus memastikan GPU telah selesai merujuknya. Ini berarti sebelum aplikasi dapat membebaskan sumber daya dengan aman, GPU harus menyelesaikan eksekusi daftar perintah yang mereferensikan sumber daya.

Pelacakan Status Sumber Daya Driver Dipisahkan Dari Pengikatan

Sistem tidak lagi memeriksa pengikatan sumber daya untuk memahami kapan transisi sumber daya telah terjadi yang memerlukan pekerjaan driver atau GPU tambahan. Contoh umum untuk banyak GPU dan driver adalah harus mengetahui kapan transisi permukaan dari digunakan sebagai Tampilan Target Render (RTV) ke Tampilan Sumber Daya Shader (SRV). Aplikasi itu sendiri sekarang harus mengidentifikasi kapan transisi sumber daya apa pun yang mungkin dipedulikan sistem terjadi melalui API khusus.

Sinkronisasi Memori Yang Dipetakan GPU CPU Dipisahkan Dari Pengikatan

Sistem tidak lagi memeriksa pengikatan sumber daya untuk memahami apakah penyajian perlu ditunda karena tergantung pada sumber daya yang telah dipetakan untuk akses CPU tetapi belum dipetakan. Aplikasi sekarang memiliki tanggung jawab untuk menyinkronkan akses memori CPU dan GPU. Untuk membantu hal ini, sistem menyediakan mekanisme bagi aplikasi untuk meminta tidur utas CPU hingga pekerjaan selesai. Polling juga bisa dilakukan, tetapi bisa kurang efisien.

Pengikatan Sumber Daya