본문 바로가기

wayland6

4. Weston 컴포지터 살펴보기 - 컴포지팅 (3/3) 스티브 잡스는 제록스(Xerox)의 팔로알토연구센터(PARC)에서 GUI에 대한 통찰을 얻고, 최초로 PC에 GUI를 도입하게 된다. 스티브잡스 전기에 따르면 잡스와 연구원들은 GUI를 개발하면서, 창들이 겹치는 기능을 구현하느라 꽤나 애를 먹었다고 한다. 당시 컴퓨터의 처리능력을 생각해보면, 실시간으로 여러 창들을 띄우고 컴포지팅하기 위해 얼마나 많은 최적화가 들어갔을지 채 짐작도 되지 않는다. 오늘날에는 컴퓨터의 처리능력이 스티브잡스 당시와 비교할 수 없이 좋아졌다. 그럼에도 여전히 (굳이 자원을 낭비할 필요는 없기 때문에) 컴포지팅을 효율적으로 할 수 있도록 weston은 레어이와 뷰를 사용한다. 레이어 위에 있는 weston 화면을 보자. 맨 위에는 시간정보를 제공하는 패널이 보이고, 아래에 세 .. 2020. 8. 21.
3. Weston 컴포지터 살펴보기 - 화면 갱신 (2/3) Weston은 다양한 역할을 수행한다. Input handling, Keyboard shortcut, 대기상태 enter / exit 등등. 그 중 가장 중요한 역할은 Desktop GUI의 변경사항을 처리하고, 이를 표현하는 것이다. 이를 다른말로 하면, 데스크탑의 윈도우들을 컴포지팅하는 일이다. 여기서는 weston 컴포지터가 화면을 어떤 원리와 구조로 화면을 갱신하고, 컴포지팅하는지 살펴보려고 한다. Weston 컴포지터 화면 갱신 구조 weston-flower 예제를 실행하면 일정 주기마다 화면이 변한다. Desktop App(weston-flower)와 Weston 컴포지터는 화면 변화를 처리하기 위해 다음과 같은 동작을 수행한다. 앱은 Wayland 서버에 프로토콜을 보낼 수 있는 handle.. 2020. 8. 12.
2. Weston 컴포지터 살펴보기 - 메인 플로우 (1/3) Weston 컴포지터는 Weston의 동작을 준비/실행하는 핵심 컴포넌트이다. Weston 컴포넌트가 하는 일은 크게 두 가지다. 하나는 Wayland 객체, Backend 컴포넌트, Shell 컴포넌트를 생성 / 로딩하고, 실행하는 것이고, 다른 하나는 주요 Wayland Interface의 동작(= 컴포지팅)을 정의하는 일이다. Weston 컴포지터의 코드는 compositor 폴더에서 찾을 수 있으며, libweston 폴더를 참조한다. 워크플로우와 실제 소스코드를 보며, Weson compositor가 어떤식으로 동작하는지 알아보자. (자세한 설명은 코드 주석 참조) // compositor/main.c WL_EXPORT int wet_main(int argc, char *argv[]) { str.. 2020. 8. 5.
번외. Wayland 프로토콜 Wayland에서는 서버(컴포지터/쉘)과 클라이언트(어플리케이션)이 프로토콜을 기반으로 통신한다. 프로토콜은 Wayland에서 기본으로 제공하는 프로토콜과, xdg(freedesktop)에서 제공하는 de facto 프로토콜, 그리고 서드파티에서 정의한 프로토콜로 구분된다. 아래는 Wayland에서 기본으로 제공하는 프로토콜이다. 참고자료: wayland.freedesktop.org/docs/html/apa.html 프로토콜 내용 싱글톤 wl_display 가장 중요한 객체. 클라이언트 측면에서는 해당 객체를 통해 서버와 연결(cf. wl_display_connect)을 형성할 수 있다. 서버 측면에서는 wl_display가 wl_compositor를 소유하고 있다. 따라서 클라이언트에서 들어오는 데이터.. 2020. 8. 4.
1. Weston 훑어보기 소스 다운로드: git clone gitlab.freedesktop.org/wayland/weston.git 소스 태그: 8.0.0 (commit - 33b06bde) 주 언어: C Weston은 Gnome, Kde와 마찬가지로, 리눅스 데스크탑 환경이다. 즉 weston을 통해 우리는 리눅스에서 GUI를 사용할 수 있다. Weston은 Gnome, Kde가 제공하던 주요 기능들을 제공한다. 예를 들어 GUI 앱 윈도우 생성, 리사이즈, 이동, 창 겹치기, 마우스 입력 전달 등등이 있다. 또한 구조화가 잘 되어있기 때문에 다양한 환경(fb, drm, wayland/x11)에서 유연하게 사용 가능하며, 다양한 구현체(desktop-shell, ivi-shell)이 존재한다. 이러한 장점들 덕분에, 데스크탑.. 2020. 8. 3.
0. Wayland란? (+ Weston) Wayland는 리눅스 데스크탑 환경을 구현하기 위한 프로토콜이다. 데스크탑 환경은 크게 보면 컴포지터와 쉘로 구분된다. 아래 사진에서 보이는 UI가 쉘이 그리는 것이고, 어플리케이션들의 창이 겹쳐졌을때의 처리를 컴포지터가 한다. Wayland는 컴포지터와 쉘의 구현을 돕는 API와 쉘이 어플리케이션과 통신할 수 있도록 프로토콜을 제공한다. Wayland 이전에는 X11이 컴포지터(X server)의 역할을 하였으며, 그 위에서 Gnome, KDE와 같은 서드파티 쉘이 동작했다. 이러한 모델은 수십년간 잘 작동하였다. 하지만 시간이 지나면서 몇 가지 문제가 생겼다. 우선 커널 구조가 많이 변경되었다. 이전에는 X11에서 처리해야 했던 많은 일들이, DRI, DRM 등을 통해 커널이 처리하기 시작했다. 시.. 2020. 8. 3.