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_GETCONNECTOR, &conn);
// CPU 렌더링을 위한 DUMB버퍼를 생성한다(GPU
access불가능)
// DUMB-Buffer : http://manpages.ubuntu.com/manpages/wily/man7/drm-memory.7.html
-- Create DUMB buffer --
ioctl(fd, DRM_IOCTL_MODE_CREATE_DUMB, &dumb);
// CRTC에 Framebuffer object 추가 한다
-- Add a new FB object --
ioctl(fd, DRM_IOCTL_MODE_ADDFB, &cmd_dumb);
//drm장치 노드의 주소 공간에 옵셋을 할당하여 버퍼를 메모리 맵핑 할 수 있게 한다
-- Create an mmap offset for a dumb buffer --
ioctl(fd,DRM_IOCTL_MODE_MAP_DUMB,&map_dumb);
//CRTC 설정 적용(fbid, connector mode등)
-- Set CRTC parameters --
ioctl(fd, DRM_IOCTL_MODE_SETCRTC, &crtc);
// 다른 프로세스의 dri사용을 위해 Master권한을 release한다
-- Release Master right –
ioctl(fd, DRM_IOCTL_DROP_MASTER, 0);
// FB메모리에 그린다.
-- Draw to FB –
*fb_base = “color data”
libdrm을 사용하여 DRM 사용하는 어플리케이션 예제
다음에 시간날때....
'Wayland in Embedded linux > 1. Linux graphic system and DRM' 카테고리의 다른 글
3. libdrm을 사용하여 DRM 사용하는 어플리케이션 예제 (0) | 2017.06.11 |
---|---|
1. DRM driver & panel output (0) | 2017.06.08 |
1. 임베디드 linux 그래픽 시스템과 DRM (8) | 2017.05.26 |