5.2 Wayland
5.2.1 Introduction
Wayland는 해당 프로토콜의 C 라이브러리 구현뿐만 아니라 클라이언트와 교신하기 위한 컴포지터용 프로토콜이다. 컴포지터는 Linux 커널 모드 설정과 evdev 입력 디바이스, X 애플리케이션 또는 Wayland 클라이언트 자체에서 실행되는 독립형 디스플레이 서버일 수 있다. 클라이언트는 기존 애플리케이션, X 서버나 기타 디스플레이 서버일 수 있다.
Wayland 프로젝트의 일부는 Wayland 컴포지터의 Weston 레퍼런스 구현일 수 있다. Weston 컴포지터는 최소의 빠른 컴포지터이며, 많은 임베디드와 모바일 사용 사례에 적합하다.
이 장에서는 i.MX 시리즈 디바이스에서 Wayland/Weston 지원을 활성화하는 방법을 설명한다.
5.2.2 Software Operation
이 릴리스는 Wayland 1.16 버전과 Weston 5.0.0 버전 기반이다.
5.2.3 Yocto Build Instructions
Yocto Project 빌드 지침은 아래와 같다:
- Yocto 빌드 디렉토리를 준비하고, DISTRO Wayland를 위한 i.MX Yocto Project User's Guide (IMXLXYOCTOUG)의 설정 지침을 따른다.
- 빌드 디렉토리에서 Wayland를 위한 Yocto를 설정한다:
$ MACHINE = <your-machine> DISTRO=fsl-imx-xwayland source imx-setup-release.sh -b build-wayland
- 이미지를 빌드한다.
$ bitbake imx-image-multimedia
5.2.4 Customizing Weston
i.MX Weston에는 두 개의 컴포지터가 포함되어 있다. 하나는 3D 코어에 의해 가속화되는 EGL3D 컴포지터이다. 다른 하나는 2D BLT 엔진으로 가속화되는 G2D 컴포지터이다.
Weston 옵션은 “/etc/init.d/weston” 파일에서 업데이트할 수 있다.
Table 51. Common options for Weston
Weston option | Description |
---|---|
tty | 현재 tty의 기본값 |
device | "/dev/fb0", 기본 프레임 버퍼, G2D 컴포지터에서 지원하는 다중 디스플레이. |
use-gl | EGL 가속, 기본값은 1이다. |
use-g2d | G2D 가속, 기본값은 0이다. |
idle-time | 유휴 시간(초) |
5.2.4.1 Multi display supported in Weston
멀티 디스플레이는 G2D 컴포지터에서만 지원된다. Weston을 시작하려면, 다음 옵션을 추가한다:
weston --tty=1 --device=/dev/fb0,/dev/fb2 --use-g2d=1 &
5.2.4.2 Multi buffer supported in Weston
Weston 서버는 단일 버퍼링과 멀티 버퍼링을 모두 지원한다. 단일 버퍼링에서, 대미지 영역은 오프스크린 표면에 렌더링되고 프론트 버퍼로 복사된다. 오프스크린 표면은 깜박임(flickering)을 방지하는 데 사용된다. 기본적으로, Weston 서버는 단일 버퍼링으로 시작한다.
멀티 버퍼링에서는 오프스크린으로 렌더링하는 대신, 대미지 영역을 백 버퍼로 렌더링하고 플립하지만, 프레임 속도는 디스플레이 속도로 제한된다. 최대 3개의 버퍼가 지원된다.
Weston 서버를 시작하기 전에, 사용할 버퍼 수를 컨트롤하기 위해 FB_MULTI_BUFFER를 노출한다.
단일 버퍼링을 위한 환경 변수:
export FB_MULTI_BUFFER=1
멀티 버퍼링을 위한 환경 변수:
export FB_MULTI_BUFFER=2
5.2.5 Running Weston
아래 작업을 수행하여 Weston을 실행한다:
- i.MX 디바이스를 부팅한다.
- 클라이언트를 실행하려면, 상단 바의 두 번째 버튼이 weston-terminal을 실행할 수 있고, 여기서 클라이언트를 실행할 수 있다. Weston 빌드 디렉토리에서 사용할 수 있는 몇 가지 데모 클라이언트가 있지만, 모두 매우 단순하고 주로 Wayland 프로토콜의 특정 기능을 테스트하기 위한 것이다:
- 'weston-terminal'은 간단한 터미널 에물레이터로 호환되지는 않지만, bash를 위해 충분하게 동작한다.
- 'weston-flower'는 프레임 프로토콜을 테스트하면서 화면세 꽃을 그린다.
- 'weston-smoke'는 SHM 버퍼 공유를 테스트한다.
- 'weston-image'는 커맨드 라인에 전달된 이미지 파일을 로드하여 보여준다.