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 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 akar.
Luapan dapat terjadi pada perangkat keras yang mungkin memiliki, misalnya, ukuran tetap 16 DWORD untuk ruang argumen root. Batas ini dapat dikurangi lebih lanjut oleh 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 perubahan argumen akar, driver harus mempertahankan versi semua argumen akar (tidak seperti penyimpanan lain seperti timbunan deskriptor dan sumber daya buffer, yang tidak diversikan oleh driver). Dalam perangkat keras bahwa situasi luapan terjadi, hanya area asli atau luapan yang perlu diberi versi, tergantung di mana perubahan terjadi. Jumlah penerapan versi jelas harus disimpan hingga minimum yang diperlukan.
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 konstanta 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 sampel statis, dan tanda tangan akar dapat berisi campuran sampel statis (disimpan dalam tanda tangan akar, atau di ruang yang dipesan pada beberapa perangkat keras) dan sampel dinamis (disimpan dalam tumpukan deskriptor sampel). Sampler dalam tumpuk 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