Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

윈도우 매니저 스터디: 0.윈도우 매니저 소개

  • Be the first to comment

윈도우 매니저 스터디: 0.윈도우 매니저 소개

  1. 1. nemoux00@gmail.com http://nemoux00.wordpress.com
  2. 2. 윈도우 매니저 소개 WAYLAND 소개 X vs WAYLAND 오픈 소스 기반 UI/UX 플랫폼 기본 UI/UX 플랫폼 구조 필수 오픈소스 프로젝트 윈도우 매니저 구조 및 기본 동작 원리 컴포지터/쉘 역할 기본 동작 과정 WAYLAND/WESTON 구조 스터디 진행 계획
  3. 3. 여러 어플리케이션이 하나의 입/출력 장치를 공유 데스크탑 환경 vs 스마트폰 환경 APPLICATION WINDOW WINDOW APPLICATION WINDOW APPLICATION WINDOW WINDOW WINDOW
  4. 4. 윈도우 프로토콜 윈도우 서버/클라이언트 간의 통신 규약 X protocol, WAYLAND protocol, ... 컴포지터 (compositor) 여러 윈도우 화면을 하나의 스크린에 출력하기 위해 합성 입력 장치로부터 들어온 이벤트를 적절한 윈도우로 전달 … 쉘 (shell) 윈도우 화면의 위치나 크기 변경 기능 제공 시작 메뉴, 바탕화면, 스크린세이버 제공 윈도우 포커스 관리 및 전환 기능 제공 …
  5. 5. WAYLAND 의 시작 2008년 레드햇의 개발자였던 Kristian Høgsberg (이하 krh) 의 개인 프로젝트로 시작 (현재 krh 는 인텔에서 근무) WAYLAND 의 목표 X 윈도우 프로토콜을 완전히 대체 데스크탑 환경 뿐 아니라 다양한 스마트 장치 효과적으로 지원 WAYLAND 의 특징 오픈 소스를 최대한 활용/내부를 최소한으로 유지 로컬 기반 (유닉스 도메인 소켓) ■파일디스크립터 공유, 레퍼런스 기반 버퍼, … 컴포지팅 API 만 제공 (Direct Rendering 과 CSD (Client-Side Decoration 지원))
  6. 6. 윈도우 서버/클라이언트 프로토콜 윈도우 화면 생성 및 갱신 (wl_surface, wl_buffer, …) 입력 장치 이벤트 전달 (wl_seat, wl_keyboard, wl_pointer, …) 윈도우 위치/크기 변경, 최대/최소화 (wl_shell_surface, xdg_surface, …) 윈도우 서버/클라이언트 기본 라이브러리 기본 프로토콜 정의 유닉스 도메인 소켓을 이용한 네트워크 통신 제공 기본 프로토콜을 위한 소켓 통신에 필요한 함수 제공 WESTON 기능 검증을 위한 레퍼런스 컴포지터/쉘
  7. 7. 오래된 X 를 버리고 새롭게 시작하자! 기능적인 차이(x), 구조적인 차이(..) 하위 호환성 유지/새로운 기능 수용  프로토콜/코드 복잡도 증가 X client X client X server compositor Kernel KMS evdev wayland client wayland client wayland compositor Kernel KMS evdev
  8. 8. 일반적인 어플리케이션(GUI) 개발 형태 APPLICATION vs TOOLKIT vs WINDOW MANAGER GTK+/QT/… drm-backend application (GTK+) application (wayland) application (drm) application (QT) wayland-backend shell (gnome-shell, plasma, …) kernel (drm, fb, kms, evdev, …) GPU, KEYBOARD, MOUSE, … drm-backend …-backend compositor (mutter, kwin, …)
  9. 9. DRM/MESA 하드웨어 가속 지원 (OPENGL) OPENGL 라이브러리/GPU 드라이버 플랫폼 API(GLX/WGL/EGL/…)/렌더링 API weston mesa gl-renderer EGL-api gallium GL-api i915-driver drm kernel drm-driver (kms, gem, …) i915-driver nv, radeon, … nv, radeon, … OpenGL app OpenGL app gl-renderer OpenGL app OpenGL app nvidia OpenGL library EGL-api GL-api nvidia kernel driver
  10. 10. PIXMAN 픽셀 기반 이미지 관리 CPU 를 이용한 렌더링에 주로 활용 (FB 백엔드) http://www.pixman.org/ CAIRO 벡터 그래픽 지원 레스터라이징 vs 벡터 http://cairographics.org/ PANGO 폰트 레이아웃 지원 http://www.pango.org/
  11. 11. SURFACE  윈도우 BUFFER  윈도우 화면 내용 VIEW  윈도우 위치 속성 SHELL_SURFACE  윈도우 관리 (위치, 크기, 속성, …) WAYLAND/WESTON weston_surface weston_view shell_surface weston_view weston_view shell_surface shell_surface CLIENT wl_surface wl_shell_surface wl_surface wl_buffer wl_compositor weston_compositor wl_surface
  12. 12. 윈도우 생성 (클라이언트  컴포지터) 윈도우 화면 갱신 (클라이언트  컴포지터) 공유메모리 버퍼/DRM 버퍼 전달 결과 화면 갱신 (컴포지터  커널  장치) 모든 윈도우의 현재 버퍼, 위치, 크기를 이용하여 결과 화면 생성 CLIENT BUFFER WAYLAND/WESTON (screen) WINDOW CLIENT BUFFER WINDOW shared memory buffer DRM buffer
  13. 13. 렌더링 메모리 기반 vs 하드웨어가속 기반 SCREEN GPU framebuffer framebuffer GUI framework (without opengl) GUI framework (with opengl) WINDOW WINDOW CPU
  14. 14. 컴포지팅 여러 화면을 하나의 화면으로 합쳐주는 것 ■SCENE GRAPH  각 화면의 위치 정보 관리 다양한 그래픽 관련 분야에서 활용 ■윈도우 매니저  여러 윈도우를 하나의 프레임버퍼로 합성 ■위젯 엔진  여러 위젯을 하나의 윈도우 화면으로 합성 ■… window window framebuffer widget widget widget widget window widget widget window copy copy copy copy
  15. 15. 입력 이벤트 수집 (장치  커널  컴포지터) 입력 이벤트 전달 (컴포지터  클라이언트) 윈도우 매니저에 바인딩되어있는 이벤트 우선 처리 포커스(window)를 소유 중인 클라이언트에게 해당 이벤트 전달 CLIENT WAYLAND/WESTON (screen) WINDOW CLIENT WINDOW wl_keyboard wl_pointer
  16. 16. 포커스(focus) 모델 Click to Focus  마우스(혹은 터치)로 클릭 Focus Follows Mouse  마우스 포인터의 현재 위치 이용 Sloppy Focus  패널이 아닌 윈도우만 포커스 그랩(grab) 인터페이스 마우스 버튼 (or 터치) 다운 + 모션 … + 업 이벤트 전달 방식 윈도우 이동/크기 변환/…, 드래그&드롭, … 일반 사용자에게 익숙한 인터페이스 방식 SCREEN WINDOW WINDOW press motion release
  17. 17. 다양한 렌더러/백엔드 지원 CLIENT wl_shm wl_egl_window wl_surface WAYLAND/WESTON pixman-renderer gl-renderer rpi-renderer compositor- fbdev compositor- drm compositor- rdp compositor- rpi compositor- wayland compositor- x11 shm_buffer egl_texture weston_surface wl_buffer
  18. 18. 키보드/마우스/멀티터치 지원 UDEV 기반 장치 검색 EVDEV/MTDEV 프로토콜 지원 CLIENT WAYLAND/WESTON kernel touch mtdev udev seat touch pointer mouse evdev wl_seat wl_touch wl_pointer grab (default) grab (default) button motion key default move resize … keyboard keyboard wl_keyboard evdev grab (default) touch motion
  19. 19. 다양한 개발 언어/프로토콜/툴킷 지원 가능 wayland core interface xdg shell interface wl_surface wl_buffer wl_seat … xdg_surface xdg_popup … GTK+/QT/… X11-backend wayland-backend X11 protocol EGL mesa nvidia opengl driver … xserver xwayland application (GTK+) application (QT) application (wayland) application (OpenGL-wayland) kwin mutter weston application (X11) GLX application (OpenGL-X11)
  20. 20. 1주차 : 출력 과정 이해 컴포지팅 동작 원리 이해 공유 메모리 기반 컴포지팅 과정 이해 (shm, pixman, …) 하드웨어 가속 기반 컴포지팅 과정 이해 (opengl/egl, drm, …) WAYLAND/WESTON 기반 컴포지팅 과정 이해 2주차 : 입력 과정 이해 입력 장치 관리 이해 (udev, evdev, …) 포커스 모델 이해 (마우스, 키보드, 멀티터치, …) WAYLAND/WESTON 기반 입력 장치 동작 과정 이해 WAYLAND/WESTON 기반 가상 키보드/한글 입력 동작 과정 이해
  21. 21. 3주차 : 렌더링 최적화 기술 분석 SCENE GRAPH 동작 과정 분석 (레이어 관리, 데미지/클리핑 관리, …) 더블 버퍼링, 디스플레이 동기화, 하드웨어 플레인 동작 과정 분석 OpenGL 확장 기능 분석 ■buffer_age, unpack_subimage, swap_buffers_with_damage, … 4주차 : WAYLAND 기반 윈도우 매니저 분석 서페이스 관리 분석 (윈도우 활성화, 서브서페이스, …) 그랩 인터페이스 분석 (윈도우 이동, 크기 변환, …) 데이터 인터페이스 분석 (drag & drop, selection, clipboard, …) 쉘 인터페이스 분석 (wayland/xdg shell, workspace, …) 확장 프로토콜 분석 (subsurface, presentation, …)
  22. 22. 5주차 : UI/UX 플랫폼 분석 WAYLAND 기반 UI/UX 플랫폼 구조 분석 툴킷 엔진 지원 분석 (GTK, QT, …) X 프로토콜 지원 분석 (xwayland) 어플리케이션 지원 분석 (브라우저, 영상 재생, …) WAYLAND 기반 윈도우 매니저 소개 ■weston, mutter, kwin, hawaii, ...

×