한국어
Linux Programming
 

Wayland에 대한 간단한 소개

makersweb 2017.12.29 14:21 조회 수 : 4251

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

 

번호 제목 글쓴이 날짜 조회 수
» Wayland에 대한 간단한 소개 file makersweb 2017.12.29 4251
24 NFS를 통해 파일시스템 공유 makersweb 2018.03.05 1809
23 Ubuntu Linux에서 dbus-c++바인딩 D-Bus 테스트 file makersweb 2018.03.07 7910
22 tslib 크로스 컴파일과 터치스크린 보정 makersweb 2018.08.02 2937
21 libblkid - USB Storage의 정보 가져오기 makersweb 2018.10.18 1328
20 리눅스 컴파일러 최신으로 업데이트 linux 2018.12.26 2610
19 PATH에 새로운 경로 추가 makersweb 2019.09.19 1148
18 플랫폼 디바이스 드라이버 개발 시 많이 사용되는 커널 API 및 매크로 makersweb 2020.01.28 5958
17 initramfs (initial ram file system: 초기 램 파일 시스템) makersweb 2020.02.25 3053
16 64비트 리눅스에서 32비트 응용프로그램을 실행하려면 makersweb 2020.02.29 2895
15 Weston 의 설명 및 관련 컴포넌트 makersweb 2020.06.03 3849
14 Wayland 의 주요 객체들 makersweb 2020.06.04 2082
13 Wayland 의 Client Application 프로그래밍 기본 루틴 makersweb 2020.06.04 2876
12 wayland-scanner 를 통해 Wayland 프로토콜 코드생성 makersweb 2020.06.08 2166
11 리눅스 오디오 스택과 아키텍처 file makersweb 2020.09.02 4113
10 dbus-broker를 기본 DBus 구현으로 설정 makersweb 2021.01.20 2577
9 SocketCAN 유틸 사용방법 file makersweb 2022.02.05 10505
8 ifconfig 는 대부분 ip 명령으로 대체 makersweb 2022.02.12 2898
7 D-Bus ObjectManager file makersweb 2022.02.12 1833
6 리눅스에서 네트워크 구성 makersweb 2022.06.11 4198