Meskipun sebagian besar dunia grafis modern saat ini berfokus pada Vulkan API, tidak ada tanda-tanda insinyur driver grafis sumber terbuka Intel kehilangan fokus pengoptimalan dengan driver OpenGL Linux mereka melalui kode Iris Gallium3D. Penggabungan minggu liburan ini merupakan pengerjaan ulang yang cukup signifikan pada sistem alokasi objek buffernya.
Kenneth Graunke yang merupakan salah satu pengembang asli driver Iris Gallium3D telah berupaya meningkatkan cache bucket dan sub-pengalokasi. Dengan sembilan patch, dia membuat sejumlah perbaikan pada kode objek buffer untuk Iris. Ken menjelaskan dalam permintaan penggabungan:
– Ini mengikat sistem cache-bucket ke enum IRIS_HEAP_*, memungkinkan kita membersihkan sekumpulan kode yang disalin dan ditempel.
– Ia menambahkan tumpukan terpisah untuk memori sistem yang koheren secara eksplisit (BO_ALLOC_COHERENT). Meskipun hal ini tidak diperlukan untuk sistem LLC, hal ini akan sangat membantu pada sistem non-LLC (seperti Meteorlake).
– Memungkinkan sistem bucket-cache untuk BO yang koheren secara eksplisit pada sistem non-LLC. Sebelumnya, kami hanya melewatkan cache BO untuk sumber daya yang koheren, yang sangat disayangkan karena kami juga menandai sumber daya staging sebagai koheren. Jadi hal ini mengakibatkan alokasi baru setiap saat pada sistem non-LLC, yang sangat tidak efisien.
– Memungkinkan alokasi pelat untuk BO yang koheren secara eksplisit, di semua platform. Kami sebenarnya melewatkan pengalokasi pelat bahkan pada sistem LLC, di mana tidak ada alasan untuk tidak melakukannya. Saya mencoba memperbaikinya di !14763 (ditutup) sebelumnya, tetapi kami melihat sedikit penurunan kinerja. Salah satu perbedaan dalam MR baru adalah, dengan memiliki tumpukan terpisah, pengalokasi pelat yang berbeda akan digunakan untuk data koheren vs. data non-koheren. Karena sumber daya pementasan saat ini ditandai koheren, ini berarti sumber daya tersebut tidak akan dialokasikan pada pelat yang sama dengan data permanen. Mungkin itu akan membantu?
– Ini meningkatkan ukuran BO pengunggah shader sehingga kami memiliki lebih sedikit BO untuk dikelola.
– Ini menyederhanakan ukuran ember. Sekarang kita mempunyai subalokasi, banyak ember yang tidak terpakai. Kami sekarang memiliki 25, bukan 55. (Saya melihat penggunaan Unigine Superposition saat melakukan penyetelan.)
– Ini memanfaatkan 64 ribu halaman dengan lebih baik. Saat mengalokasikan memori dalam potongan 2MB yang berdekatan, i915 mampu mengoptimalkan akses TLB dengan mengatur bit tabel halaman PS64, sehingga TLB mengetahui bahwa pada dasarnya dapat memperlakukannya sebagai halaman 64K meskipun hanya halaman 4K. Hal ini memerlukan alamat virtual dan alamat fisik sejajar 64K. Kami menghapus ukuran keranjang cache mendekati 2MB (1,75MB, 2,5MB, 3MB, 3,5MB) dan memilih keranjang 2MB/4MB. Kami juga membulatkannya ke kelipatan terdekat yaitu 2MB untuk alokasi yang besar. Secara khusus, tampaknya peningkatan BO ini akan memberikan manfaat terbesar bagi platform Meteor Lake yang akan datang. Penentuan waktunya penting karena chip Intel Core Ultra “Meteor Lake” akan dirilis secara resmi pada bulan Desember. Begitu juga dengan Linux 6.7 di mana driver grafis kernel menyatakan dukungan stabil untuk grafis terintegrasi Meteor Lake. Saya akan berupaya mendapatkan laptop Meteor Lake untuk pengujian Linux setelah peluncuran.
Setelah menjalani peninjauan selama hampir dua bulan, peningkatan driver Iris Gallium3D ini digabungkan untuk pengembangan mesa 24.0. Tidak ada angka perbandingan kinerja/benchmark yang diberikan untuk mengukur dampak perubahan pada platform grafis Intel mana pun.
Itulah berita seputar Driver Intel Iris Gallium3D Merombak Kode Alokasi Buffernya, semoga bermanfaat. Disadur dari Phoronix.com.