Batas Tanda Tangan Akar
Tanda tangan akar adalah real estat utama, dan ada batasan dan biaya yang ketat untuk dipertimbangkan.
Batas dan biaya memori
Ukuran maksimum tanda tangan akar adalah 64 DWORD.
Ukuran maksimum ini dipilih untuk mencegah penyalahgunaan tanda tangan akar sebagai cara menyimpan data massal. Setiap entri dalam tanda tangan akar memiliki biaya terhadap batas 64 DWORD ini:
- Tabel deskriptor masing-masing dikenakan biaya 1 DWORD.
- Konstanta root masing-masing dikenakan biaya 1 DWORD, karena merupakan nilai 32-bit.
- Deskriptor akar (alamat virtual GPU 64-bit) masing-masing dikenakan biaya 2 DWORD.
Sampel statis tidak memiliki biaya dalam ukuran tanda tangan akar.
Biaya performa
Biaya performa (dalam hal tingkat tidak langsung) adalah nol untuk konstanta akar, 1 untuk deskriptor akar, dan 2 untuk tabel deskriptor. Jika tanda tangan akar besar dan meluap keluar dari memori tercepat ke dalam memori yang sedikit lebih lambat (yang dapat terjadi pada beberapa perangkat keras), maka tambahkan 1 ke biaya performa untuk item yang meluap di akhir tanda tangan root.
Luapan dapat terjadi pada perangkat keras yang mungkin memiliki, misalnya, ukuran tetap 16 DWORD untuk ruang argumen akar. Batas ini dapat dikurangi lebih lanjut satu jika Perakitan Input digunakan. Dalam hal ini ada luapan ke memori yang sedikit lebih lambat jika tanda tangan akar terlalu besar untuk memori asli DWORD 15 atau 16. Di perangkat keras lain tidak ada memori argumen akar asli tetap (sehingga situasi luapan tidak pernah terjadi).
Untuk semua perangkat keras, jika ada argumen akar yang berubah, driver harus mempertahankan versi semua argumen akar (tidak seperti penyimpanan lain seperti tumpuk deskriptor dan sumber daya buffer, yang tidak diberi versi oleh driver). Dalam perangkat keras yang terjadi situasi luapan, hanya area asli atau luapan yang perlu diberi versi, tergantung di mana perubahan terjadi. Jumlah penerapan versi jelas harus disimpan seminimal mungkin.
Umumnya, pertimbangkan panduan berikut:
- Gunakan tanda tangan akar kecil seperlunya, meskipun seimbangkan ini dengan fleksibilitas tanda tangan akar yang lebih besar.
- Atur parameter dalam tanda tangan akar besar sehingga parameter kemungkinan besar sering berubah, atau jika latensi akses rendah untuk parameter tertentu penting, terjadi terlebih dahulu.
- Jika nyaman, gunakan konstanta akar atau tampilan buffer konstanta akar atas menempatkan tampilan buffer konstan dalam tumpukan deskriptor.
Sampel statis
Sampel statis (sampler di mana status sepenuhnya ditentukan dan tidak dapat diubah) adalah bagian dari tanda tangan root, tetapi tidak dihitung dalam batas 64 DWORD. Jika sampler dapat didefinisikan sebagai statis, tidak perlu sampler menjadi bagian dari tumpukan deskriptor.
Tidak ada biaya performa untuk menggunakan sampler statis, dan tanda tangan akar dapat berisi campuran sampler statis (disimpan dalam tanda tangan root, atau di ruang yang dipesan pada beberapa perangkat keras) dan sampler dinamis (disimpan dalam tumpukan deskriptor sampler). Sampler dalam timbunan deskriptor dapat ditetapkan dan diindeks secara dinamis, yang tidak dapat diambil sampel statisnya.
Sampel statis dapat ditulis sebagai bagian dari tanda tangan akar dalam shader HLSL (lihat Menentukan Tanda Tangan Akar di HLSL).
Topik terkait