Louvre는 개발 용이성에 중점을 두고 Wayland 컴포지터를 구축하기 위해 설계된 고성능 C++ 라이브러리입니다.
Wayland 컴포지터를 만드는 것은 어려운 작업이 될 수 있으며, 종종 몇 달 또는 몇 년에 걸쳐 헌신해야 합니다. 이 어려운 작업에는 Linux 입력 및 그래픽 API를 마스터하고, 그래픽 버퍼를 관리하고, 수많은 Wayland 프로토콜과 해당 인터페이스를 꼼꼼하게 구현하는 것이 포함됩니다.
다행스럽게도 Louvre는 사용자를 대신하여 모든 복잡한 하위 수준 작업을 처리함으로써 이 복잡한 프로세스를 단순화합니다. 프로토콜 관리를 위한 기본 방법도 제공하므로 처음부터 기본적이지만 기능적인 합성기를 보유하고 요구 사항에 정확하게 일치하도록 해당 기능을 점진적으로 탐색하고 사용자 정의할 수 있습니다.
루브르 내에서는 자체 OpenGL ES 2.0 셰이더/프로그램을 사용하거나, 기본적인 2D 렌더링을 위해 LPainter 클래스를 사용하거나, 버퍼 손상을 관리하고 입력 이벤트도 처리할 수 있는 LScene 및 LView 시스템을 활용할 수 있는 유연성이 있습니다. 또한 필요에 따라 이 세 가지 접근 방식을 결합하는 것도 가능합니다.
루브르 박물관은 뛰어난 성능을 제공합니다. 수많은 움직이는 wl_subsurfaces(불투명 및 반투명) 렌더링으로 구성된 벤치마크에서 louvre-weston-clone 예제 컴포지터를 테스트한 결과 Louvre는 복잡한 시나리오에서도 높은 FPS 속도를 유지할 수 있음을 보여줍니다. 또한 Weston 및 Sway와 같은 인기 있는 컴포지터보다 적은 CPU 및 GPU 리소스를 사용합니다.
기계 | MacBook Pro A1398 (Retina, 15인치, 2015년 중반) |
CPU | Intel Core i7-4770HQ @ 2.20GHz(최대 3.4GHz), 6MB 공유 L3 캐시 |
메모리 | 16GB 1600MHz DDR3L |
GPU | Intel Iris Pro 그래픽 - i915(Intel 그래픽) 버전 1.6.0(20201103) |
표시하다 | 15인치 Retina 디스플레이(단일 모드 2880x1800@60Hz) |
운영체제 | 리눅스 민트 21 - 리눅스 5.15.0-86-일반 |
벤치마크 작동 방식에 대한 자세한 내용이 궁금하고 직접 사용해 보고 싶다면 이 링크를 참조하세요.
벤치마크 결과를 보여주는 그래프입니다. 이는 HiDPI 디스플레이에서 이중 버퍼링을 사용하여 1~50개의 움직이는 표면을 렌더링하는 각 컴포지터의 평균 FPS를 표시합니다.
벤치마크 결과는 2023년 이후 업데이트되지 않았으며 테스트된 합성기의 현재 성능을 정확하게 반영하지 못할 수 있습니다.
대부분의 Wayland 컴포지터는 단일 스레드를 사용하므로 복잡한 시나리오를 렌더링할 때 성능이 크게 저하됩니다. 그 이유는 합성기가 방금 렌더링한 프레임 버퍼를 화면에 표시되는 프레임 버퍼와 교체하기 전에 몇 밀리초를 기다려야 하는 수직 동기화 때문입니다. 이는 스와핑을 디스플레이 새로 고침 빈도( vblank )와 동기화하고 찢어짐 효과를 방지하기 위해 수행됩니다. 단일 스레드로 작업할 때 컴포지터에는 다음 프레임에 맞춰 콘텐츠를 처리하고 렌더링하지 못하게 하는 "데드 타임"이 있습니다. 그렇기 때문에 결국 vblank 를 건너뛰고 새로 고침 빈도가 절반(또는 그 이상)으로 떨어지게 됩니다. 이 문제를 방지하기 위해 Louvre는 여러 스레드로 작업합니다. 각 출력(디스플레이)은 자체 스레드에서 콘텐츠를 렌더링하므로 합성기가 vblank를 기다리는 동안 계속해서 요청을 처리하고 다른 출력으로 렌더링할 수 있습니다. 이를 통해 루브르 합성기에서 "데드 타임"이 발생하는 것을 방지하고 높은 새로 고침 빈도를 유지할 수 있습니다.
왼쪽 그래프는 원시 CPU 소비 결과를 표시하며, 이는 Louvre가 더 많은 CPU 리소스를 사용함을 시사할 수 있습니다. 그러나 Louvre의 새로 고침 빈도가 다른 것보다 거의 두 배(평균 60FPS 대 30FPS)이기 때문에 이 비교는 전적으로 공평하지 않습니다. CPU 사용량을 초당 프레임 수(FPS)로 나누면 오른쪽 그래프처럼 실제로 루브르가 다른 컴포지터에 비해 FPS에 비해 CPU 리소스를 적게 사용한다는 사실이 분명해집니다.
CPU 소비와 마찬가지로 Louvre는 다른 컴포지터보다 FPS에 비해 더 적은 GPU 리소스를 사용하는 것을 확인할 수 있습니다.