전체 글 21

1. DRM driver & panel output

*아래 내용은 임베디드 리눅스 기반 장치로 한정 합니다) 모바일 기기를 포함한 모든 디스플레이 장치에서 보여지는 한장(한 frame)의 화면은 어플리케이션에 의해 만들어진 LCD패널 크기 만큼의 최종 합성된 메모리 데이터(FHD인경우 대략 8MByte)가 DMA를 통해 LCD패널로 전달 되어 출력된 결과 이다. DRM이 도입 되면서 기존 FBDEV에서 하지 못했던 "그래픽 메모리의 부분적인 갱신(plane update)"이 가능해 졌다. 기존 FBDEV에서는 그래픽메모리의 어느 한 부분이 바뀌면 전체 화면을 다시 그려 그래픽 메모리에 다시 업데이트(full refresh) 해 주어야 했지만 DRM 드라이버에서는 기존 영역은 그대로 놔두고 바뀐 부분만 업데이트 할 수 있다. 그만큼 메모리를 동작을 효율적으..

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..

0. 블로그 시작

아래와 같이 개발 했던 디스플레이부터 Wayland까지, 전반적인 임베디드 리눅스 기반 그래픽 시스템을 정리 합니다 - 저전력 디스플레이 패널(self refresh, mipi command mode)- Display controller(H/W IP)- HDMI controller(H/W IP)- Framebuffer driver, DRM driver(Linux kernel device driver)- User space graphic component(opengl, libdrm...)- Display server(Xorg, Wayland)- Application - Device driver- Linux AMP booting

카테고리 없음 2017.05.27

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..