한국어
Linux Programming
 

Wayland에 대한 간단한 소개

makersweb 2017.12.29 14:21 조회 수 : 4268

Wayland 는 그용어를 몇가지 다른 의미로 생각해볼 수 있는데 큰의미로는 X11을 대체하기위한 새로운 윈도우시스템이다.
다른 의미로는 컴포지터와 클라이언트가 통신하기위한 프로토콜이며 라이브러리형태로 존재한다.
이 의미에서의 Wayland는 단지 라이브러리이므로 X서버를 대체하기 위해서는 Weston과 같은 컴포지터가 필요한데, Weston은 Wayland의 컴포지터 참조 구현이며 현재 Wayland프로젝트에 포함되어 개발, 제공되고있다.
참고로 컴포지터는 윈도우 시스템에서 윈도우들의 합성을 담당함으로써 하나의 장면을 만들어내는 역할을 한다.
 
Wayland 컴포지터(weston)는 KMS 및 evdev, X 어플리케이션 또는 wayland 클라이언트에서 실행되는 독립 실행 형 서버 프로세스인데 이것은 Wayland가 KMS로 동작하는 시스템에서만 작동한다는 것을 의미한다. 또한 Weston은 X클라이언트로도 동작 할 수 있다.
 
아래의 그림은 Wayland공식 사이트에서 가져온 그림인데 Wayland시스템의 흐름을 잘 나타내주고있다.
wayland-architecture.png
간단히 설명하면,
  1. 커널은 이벤트(예를 들어 인풋이벤트)를 가져와서 컴포지터로 전달한다. (아래그림참조)dot_libinput-stack-wayland.png 
  2. 컴포지터는 어떤 윈도우가 이벤트를 수신해야하는지 결정한다.
  3. 클라이언트는 이벤트를 수신하면 클라이언트에서 렌더링이 발생하며, 클라이언트가 컴포지터에게 업데이트된 영역을 표시하는 요청만 보낸다.
  4. 컴포지터는 클라이언트로부터 요청을 받은 다음 화면을 다시 구성하고 직접 ioctl을 실행하여 KMS로 최종화면을 요청한다.
애플리케이션은 EGL을 사용하여 직접 컨텐츠를 그리고 Compositor와 (새 컨텐츠를 렌더링했는지)통신한다. EGL은 DRM API를 사용하여 버퍼에 액세스할 수 있으며 프레임 버퍼는 DRM에 의해 관리된다. 

 

아래 그림은 위에서 설명한 내용을 잘 설명해주고 있다.

1280px-The_Linux_Graphics_Stack_and_glamor.svg.png

 

X와 비교하여 불필요한 절차를 줄였으며 구조를 간결하게 설계하여 유지, 관리가 쉽도록 했고 X에서 마이그레이션하는 경우를 위해 하위 호환성도 고려했다.

 

 

아래 사이트를 참조하여 작성하였고 조금 더 자세한 정보를 얻길 원한다면 방문해보자!

 

https://wayland.freedesktop.org

https://en.wikipedia.org/wiki/X.Org_Server

https://wayland.freedesktop.org/libinput/doc/latest/index.html