Wayland in Embedded linux 16

2. libdrm없이 kernel의 DRM드라이버를 바로 사용하는 어플리케이션 예제

Linux Graphics system with DRM libdrm없이 kernel의 DRM드라이버를 바로 사용하는 어플리케이션 예제 /* Opening the DRI device */// DRM device 오픈int fd = open("/dev/dri/card0",O_RDWR | O_CLOEXEC);/* Kernel Mode Setting (KMS) *///KMS셋팅을 위해 Master권한을 얻는다-- Acquire Master right --ioctl(fd, DRM_IOCTL_SET_MASTER, 0);//사용 가능한 커넥터 리소스를 찾는다-- Get connectors resource to find available connectors --ioctl(fd, DRM_IOCTL_MODE_GETCONN..

Wayland 클라이언트 앱 작성하기

Create display- Wayland 사용을 위한 준비아래 그림은 Application이 weston compositor를 이용하여 자신의 wayland object를 생성 하고, 등록, 디스패치 하는 과정을 보여준다. Create surface- Wayland surface생성아래 그림은 Application이 weston compositor에서 사용될 surface를 만드는 과정을 보여준다. Draw- Buffer draw아래 그림은 Application이 그린 이미지를 출력하기 위해 wayland에게 요청하는 과정을 보여준다

1. Wayland와 DRM드라이버

[Wayland기반 관련 모듈들의 역할] 위 그림은 사용자 터치 이벤트 발생으로부터 패널의 화면이 출력 되기까지 불리워 지는 주요 함수들을 보여주고 있다. 커널에서 lcd가 출력되는 기본적인 메커니즘(vblank, page flip)을 이해한 뒤 코드를 보면 좀 더 이해가 쉽다. kernel의 함수는 일단 라즈베리파이 코드를 참조하였다. 위 그림은 wayland가 libdrm을 통해 커널의 DRM드라이버를 사용하여 패널에 이미지를 출력시키기 까지의 과정만 간단히 표현 하였다. 1. Weston은 어플리케이션들이 요청한 이미지를 하나의 이미지로 composite(합성)한다. 2. composite이 완료되면 wayland 서버에 이를 등록하고 커널로부터 FLIP_COMPLETE이벤트를 기다린다. 3. we..

1. 리눅스 그래픽 시스템과 Wayland/Weston

wayland는 그래픽 시스템에 있어 서버와 클라이언트간의 통신을 정의한 프로토콜 이다. wayland는 초창기에 Kristian Høgsberg에 의해 기존 X window를 더 단순하고 모던하게 바꾸려는 목적과 함께 오픈소스 프로젝트로서 주도 되었으며 이러한 노력의 일환으로 wayland 레퍼런스 컴포지터인 weston의 개발이 함께 시작되었다. 프로젝트가 시작 된 주요 이유는 X window에서 수행되던 수많은 하부 기능들이 커널(memory management, command scheduling, mode setting)이나 라이브러리(cairo, pixman, freetype, fontconfig, pango, etc)로 옮겨져 사용 되지 않음에도 불구하고 user는 잔존해 있는 X protoc..

1. 임베디드 linux 그래픽 시스템과 DRM

디스플레이 패널은 CPU/GPU가 준비해 놓은 버퍼를 특정 주기마다 출력한다(AP를 사용하는 임베디드에서는 디스플레이 컨트롤러 H/W IP가 이역할을 담당한다). 이 출력되는 구간을 Vertical Blank(일반적인 패널에서 좌측 위 끝에서 우측아래 끝까지 그려지는 구간)라고 하며 이 주기가 패널의 fps를 결정 하게 된다. 또한 tearing을 방지하기 위해 이 구간 동안 AP의 디스플레이 컨트롤러 IP가 frame buffer에 접근하지 않도록 구현되어 있다.(Vsync, sync/fence 활용)*tearing: framebuffer가 패널로 출력 되고 있는도중 CPU가 frambuffer 영역을 갱신하여 패널 화면에 다음 frame이 섞여 출력되어 화면이 깨져보이는 현상 예를 들어 60fps인 ..