Louvre adalah pustaka C++ berperforma tinggi yang dirancang untuk membuat kompositor Wayland dengan penekanan kuat pada kemudahan pengembangan.
Membuat kompositor Wayland bisa menjadi tugas yang menakutkan, sering kali memerlukan dedikasi berbulan-bulan atau bahkan bertahun-tahun. Tugas yang menantang ini melibatkan penguasaan input Linux dan API grafis, mengelola buffer grafis, dan penerapan berbagai protokol Wayland dan antarmuka masing-masing dengan cermat.
Untungnya, Louvre menyederhanakan proses rumit ini dengan menangani semua tugas kompleks tingkat rendah atas nama Anda. Ia bahkan menyediakan cara default untuk mengelola protokol, memungkinkan Anda memiliki kompositor dasar namun fungsional sejak hari pertama dan secara progresif mengeksplorasi dan menyesuaikan fungsinya agar sesuai dengan kebutuhan Anda.
Di dalam Louvre, Anda memiliki fleksibilitas untuk menggunakan shader/program OpenGL ES 2.0 Anda sendiri, menggunakan kelas LPainter untuk rendering 2D dasar, atau memanfaatkan sistem LScene dan LView, yang mengelola kerusakan buffer dan juga dapat menangani kejadian input untuk Anda. Selain itu, ketiga pendekatan ini dapat digabungkan sesuai kebutuhan.
Louvre menawarkan performa luar biasa. Tolok ukur yang terdiri dari rendering berbagai wl_subsurfaces bergerak (buram dan tembus cahaya), yang diuji dengan kompositor contoh klon louvre-weston, menunjukkan bahwa Louvre dapat mempertahankan tingkat FPS yang tinggi bahkan dalam skenario yang kompleks. Selain itu, ia menggunakan lebih sedikit sumber daya CPU dan GPU dibandingkan kompositor populer seperti Weston dan Sway.
| Mesin | MacBook Pro A1398 (Retina, 15 inci, Pertengahan 2015) |
| CPU | Intel Core i7-4770HQ @ 2,20GHz (hingga 3,4GHz) dengan cache L3 bersama sebesar 6MB |
| Ingatan | 16GB DDR3L 1600MHz |
| GPU | Intel Iris Pro Graphics - i915 (Intel Graphics) versi 1.6.0 (20201103) |
| Menampilkan | Layar Retina 15 inci dengan mode tunggal 2880x1800@60Hz |
| sistem operasi | Linux Mint 21 - Linux 5.15.0-86-generik |
Jika Anda tertarik dengan detail cara kerja benchmark dan ingin mencobanya sendiri, silakan merujuk ke tautan ini.
Berikut adalah grafik yang menggambarkan hasil benchmark. Ini menampilkan FPS rata-rata setiap kompositor yang merender 1 hingga 50 permukaan bergerak menggunakan buffering ganda pada tampilan HiDPI.
Hasil benchmark belum diperbarui sejak tahun 2023 dan mungkin tidak mencerminkan secara akurat performa kompositor yang diuji saat ini.
Kebanyakan kompositor Wayland menggunakan satu thread, yang secara drastis memperlambat kinerjanya saat merender skenario yang kompleks. Alasannya adalah karena sinkronisasi vertikal , di mana kompositor harus menunggu beberapa milidetik sebelum dapat menukar framebuffer yang baru saja dirender dengan framebuffer yang ditampilkan di layar. Hal ini dilakukan untuk menyinkronkan pertukaran dengan kecepatan refresh tampilan ( vblank ) dan menghindari efek robek . Saat bekerja dengan satu thread, kompositor memiliki "waktu mati" yang mencegah mereka memproses dan merender konten tepat waktu untuk frame berikutnya. Itu sebabnya mereka akhirnya melewatkan vblank , menyebabkan kecepatan refreshnya turun setengah (atau lebih). Untuk menghindari masalah ini, Louvre bekerja dengan banyak thread. Setiap keluaran (tampilan) merender kontennya pada threadnya sendiri, memungkinkan kompositor untuk terus memproses permintaan dan merender ke keluaran lain sementara seseorang menunggu vblank. Hal ini mencegah kompositor Louvre mengalami "waktu mati" dan oleh karena itu memungkinkan mereka mempertahankan kecepatan refresh yang tinggi.
Grafik di sebelah kiri menampilkan hasil konsumsi CPU mentah, yang mungkin menunjukkan bahwa Louvre menggunakan lebih banyak sumber daya CPU. Namun, perbandingan ini tidak sepenuhnya adil, karena kecepatan refresh Louvre hampir dua kali lipat dibandingkan yang lain (rata-rata 60 FPS vs 30 FPS). Saat kita membagi konsumsi CPU dengan frame per detik (FPS), seperti yang ditunjukkan pada grafik di sebelah kanan, menjadi jelas bahwa Louvre, pada kenyataannya, menggunakan lebih sedikit sumber daya CPU dibandingkan FPS dibandingkan dengan kompositor lainnya.
Sama halnya dengan konsumsi CPU, kita dapat mengamati bahwa Louvre menggunakan lebih sedikit sumber daya GPU dibandingkan FPS dibandingkan kompositor lainnya.