SlideShare a Scribd company logo
nemoux00@gmail.com 
http://nemoux00.wordpress.com
윈도우 매니저 소개 WAYLAND 소개 X vs WAYLAND 오픈 소스 기반 UI/UX 플랫폼 기본 UI/UX 플랫폼 구조 필수 오픈소스 프로젝트 윈도우 매니저 구조 및 기본 동작 원리 컴포지터/쉘 역할 기본 동작 과정 WAYLAND/WESTON 구조 스터디 진행 계획
여러 어플리케이션이 하나의 입/출력 장치를 공유 데스크탑 환경 vs 스마트폰 환경 
APPLICATION 
WINDOW 
WINDOW 
APPLICATION 
WINDOW 
APPLICATION 
WINDOW 
WINDOW 
WINDOW
윈도우 프로토콜 윈도우 서버/클라이언트 간의 통신 규약 X protocol, WAYLAND protocol, ... 컴포지터 (compositor) 여러 윈도우 화면을 하나의 스크린에 출력하기 위해 합성 입력 장치로부터 들어온 이벤트를 적절한 윈도우로 전달 … 쉘 (shell) 윈도우 화면의 위치나 크기 변경 기능 제공 시작 메뉴, 바탕화면, 스크린세이버 제공 윈도우 포커스 관리 및 전환 기능 제공 …
WAYLAND 의 시작 2008년 레드햇의 개발자였던 Kristian Høgsberg (이하 krh) 의 개인 프로젝트로 시작 (현재 krh 는 인텔에서 근무) WAYLAND 의 목표 X 윈도우 프로토콜을 완전히 대체 데스크탑 환경 뿐 아니라 다양한 스마트 장치 효과적으로 지원 WAYLAND 의 특징 오픈 소스를 최대한 활용/내부를 최소한으로 유지 로컬 기반 (유닉스 도메인 소켓) 
■파일디스크립터 공유, 레퍼런스 기반 버퍼, … 컴포지팅 API 만 제공 (Direct Rendering 과 CSD (Client-Side Decoration 지원))
윈도우 서버/클라이언트 프로토콜 윈도우 화면 생성 및 갱신 (wl_surface, wl_buffer, …) 입력 장치 이벤트 전달 (wl_seat, wl_keyboard, wl_pointer, …) 윈도우 위치/크기 변경, 최대/최소화 (wl_shell_surface, xdg_surface, …) 윈도우 서버/클라이언트 기본 라이브러리 기본 프로토콜 정의 유닉스 도메인 소켓을 이용한 네트워크 통신 제공 기본 프로토콜을 위한 소켓 통신에 필요한 함수 제공 WESTON 기능 검증을 위한 레퍼런스 컴포지터/쉘
오래된 X 를 버리고 새롭게 시작하자! 기능적인 차이(x), 구조적인 차이(..) 하위 호환성 유지/새로운 기능 수용  프로토콜/코드 복잡도 증가 
X client 
X client 
X server 
compositor 
Kernel 
KMS 
evdev 
wayland client 
wayland client 
wayland compositor 
Kernel 
KMS 
evdev
일반적인 어플리케이션(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, …)
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
PIXMAN 픽셀 기반 이미지 관리 CPU 를 이용한 렌더링에 주로 활용 (FB 백엔드) http://www.pixman.org/ CAIRO 벡터 그래픽 지원 레스터라이징 vs 벡터 http://cairographics.org/ PANGO 폰트 레이아웃 지원 http://www.pango.org/
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
윈도우 생성 (클라이언트  컴포지터) 윈도우 화면 갱신 (클라이언트  컴포지터) 공유메모리 버퍼/DRM 버퍼 전달 결과 화면 갱신 (컴포지터  커널  장치) 모든 윈도우의 현재 버퍼, 위치, 크기를 이용하여 결과 화면 생성 
CLIENT 
BUFFER 
WAYLAND/WESTON (screen) 
WINDOW 
CLIENT 
BUFFER 
WINDOW 
shared memory buffer 
DRM buffer
렌더링 메모리 기반 vs 하드웨어가속 기반 
SCREEN 
GPU 
framebuffer 
framebuffer 
GUI framework (without opengl) 
GUI framework 
(with opengl) 
WINDOW 
WINDOW 
CPU
컴포지팅 여러 화면을 하나의 화면으로 합쳐주는 것 
■SCENE GRAPH  각 화면의 위치 정보 관리 다양한 그래픽 관련 분야에서 활용 
■윈도우 매니저  여러 윈도우를 하나의 프레임버퍼로 합성 
■위젯 엔진  여러 위젯을 하나의 윈도우 화면으로 합성 
■… 
window 
window 
framebuffer 
widget 
widget 
widget 
widget 
window 
widget 
widget 
window 
copy 
copy 
copy 
copy
입력 이벤트 수집 (장치  커널  컴포지터) 입력 이벤트 전달 (컴포지터  클라이언트) 윈도우 매니저에 바인딩되어있는 이벤트 우선 처리 포커스(window)를 소유 중인 클라이언트에게 해당 이벤트 전달 
CLIENT 
WAYLAND/WESTON (screen) 
WINDOW 
CLIENT 
WINDOW 
wl_keyboard 
wl_pointer
포커스(focus) 모델 Click to Focus  마우스(혹은 터치)로 클릭 Focus Follows Mouse  마우스 포인터의 현재 위치 이용 Sloppy Focus  패널이 아닌 윈도우만 포커스 그랩(grab) 인터페이스 마우스 버튼 (or 터치) 다운 + 모션 … + 업 이벤트 전달 방식 윈도우 이동/크기 변환/…, 드래그&드롭, … 일반 사용자에게 익숙한 인터페이스 방식 
SCREEN 
WINDOW 
WINDOW 
press 
motion 
release
다양한 렌더러/백엔드 지원 
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
키보드/마우스/멀티터치 지원 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
다양한 개발 언어/프로토콜/툴킷 지원 가능 
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)

More Related Content

What's hot

Shader model 5 0 and compute shader
Shader model 5 0 and compute shaderShader model 5 0 and compute shader
Shader model 5 0 and compute shader
zaywalker
 
game development
game  developmentgame  development
game development
umair khan
 
Deferred rendering using compute shader
Deferred rendering using compute shaderDeferred rendering using compute shader
Deferred rendering using compute shader
Pedram Mazloom
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리
changehee lee
 
텐서플로우 2.0 튜토리얼 - RNN
텐서플로우 2.0 튜토리얼 - RNN텐서플로우 2.0 튜토리얼 - RNN
텐서플로우 2.0 튜토리얼 - RNN
Hwanhee Kim
 
Optimizing unity games (Google IO 2014)
Optimizing unity games (Google IO 2014)Optimizing unity games (Google IO 2014)
Optimizing unity games (Google IO 2014)
Alexander Dolbilov
 
Vulkan 1.1 Reference Guide
Vulkan 1.1 Reference GuideVulkan 1.1 Reference Guide
Vulkan 1.1 Reference Guide
The Khronos Group Inc.
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
Ki Hyunwoo
 
Game Engine Architecture
Game Engine ArchitectureGame Engine Architecture
Game Engine Architecture
Attila Jenei
 
Introduction to Direct 3D 12 by Ivan Nevraev
Introduction to Direct 3D 12 by Ivan NevraevIntroduction to Direct 3D 12 by Ivan Nevraev
Introduction to Direct 3D 12 by Ivan Nevraev
AMD Developer Central
 
Driving Design through Examples
Driving Design through ExamplesDriving Design through Examples
Driving Design through Examples
CiaranMcNulty
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술henjeon
 
13 사용자 메세지 처리
13 사용자 메세지 처리13 사용자 메세지 처리
13 사용자 메세지 처리
jaypi Ko
 
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
Hwanhee Kim
 
Introduction to Unity3D and Building your First Game
Introduction to Unity3D and Building your First GameIntroduction to Unity3D and Building your First Game
Introduction to Unity3D and Building your First Game
Sarah Sexton
 
LAFS PREPRO Session 2 - Game Documentation
LAFS PREPRO Session 2 - Game DocumentationLAFS PREPRO Session 2 - Game Documentation
LAFS PREPRO Session 2 - Game Documentation
David Mullich
 
[133] 브라우저는 vsync를 어떻게 활용하고 있을까
[133] 브라우저는 vsync를 어떻게 활용하고 있을까[133] 브라우저는 vsync를 어떻게 활용하고 있을까
[133] 브라우저는 vsync를 어떻게 활용하고 있을까
NAVER D2
 
glTF 2.0 Reference Guide
glTF 2.0 Reference GuideglTF 2.0 Reference Guide
glTF 2.0 Reference Guide
The Khronos Group Inc.
 
Screen space reflection
Screen space reflectionScreen space reflection
Screen space reflection
Bongseok Cho
 
Software Engineer- A unity 3d Game
Software Engineer- A unity 3d GameSoftware Engineer- A unity 3d Game
Software Engineer- A unity 3d Game
Isfand yar Khan
 

What's hot (20)

Shader model 5 0 and compute shader
Shader model 5 0 and compute shaderShader model 5 0 and compute shader
Shader model 5 0 and compute shader
 
game development
game  developmentgame  development
game development
 
Deferred rendering using compute shader
Deferred rendering using compute shaderDeferred rendering using compute shader
Deferred rendering using compute shader
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리
 
텐서플로우 2.0 튜토리얼 - RNN
텐서플로우 2.0 튜토리얼 - RNN텐서플로우 2.0 튜토리얼 - RNN
텐서플로우 2.0 튜토리얼 - RNN
 
Optimizing unity games (Google IO 2014)
Optimizing unity games (Google IO 2014)Optimizing unity games (Google IO 2014)
Optimizing unity games (Google IO 2014)
 
Vulkan 1.1 Reference Guide
Vulkan 1.1 Reference GuideVulkan 1.1 Reference Guide
Vulkan 1.1 Reference Guide
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
 
Game Engine Architecture
Game Engine ArchitectureGame Engine Architecture
Game Engine Architecture
 
Introduction to Direct 3D 12 by Ivan Nevraev
Introduction to Direct 3D 12 by Ivan NevraevIntroduction to Direct 3D 12 by Ivan Nevraev
Introduction to Direct 3D 12 by Ivan Nevraev
 
Driving Design through Examples
Driving Design through ExamplesDriving Design through Examples
Driving Design through Examples
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
 
13 사용자 메세지 처리
13 사용자 메세지 처리13 사용자 메세지 처리
13 사용자 메세지 처리
 
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
 
Introduction to Unity3D and Building your First Game
Introduction to Unity3D and Building your First GameIntroduction to Unity3D and Building your First Game
Introduction to Unity3D and Building your First Game
 
LAFS PREPRO Session 2 - Game Documentation
LAFS PREPRO Session 2 - Game DocumentationLAFS PREPRO Session 2 - Game Documentation
LAFS PREPRO Session 2 - Game Documentation
 
[133] 브라우저는 vsync를 어떻게 활용하고 있을까
[133] 브라우저는 vsync를 어떻게 활용하고 있을까[133] 브라우저는 vsync를 어떻게 활용하고 있을까
[133] 브라우저는 vsync를 어떻게 활용하고 있을까
 
glTF 2.0 Reference Guide
glTF 2.0 Reference GuideglTF 2.0 Reference Guide
glTF 2.0 Reference Guide
 
Screen space reflection
Screen space reflectionScreen space reflection
Screen space reflection
 
Software Engineer- A unity 3d Game
Software Engineer- A unity 3d GameSoftware Engineer- A unity 3d Game
Software Engineer- A unity 3d Game
 

Viewers also liked

(NEMO-UX) WAYLAND 기반 윈도우 매니저 소개
(NEMO-UX) WAYLAND 기반 윈도우 매니저 소개(NEMO-UX) WAYLAND 기반 윈도우 매니저 소개
(NEMO-UX) WAYLAND 기반 윈도우 매니저 소개
nemoux
 
윈도우 매니저 스터디: 2. 윈도우 매니저 최적화
윈도우 매니저 스터디: 2. 윈도우 매니저 최적화윈도우 매니저 스터디: 2. 윈도우 매니저 최적화
윈도우 매니저 스터디: 2. 윈도우 매니저 최적화nemoux
 
윈도우 매니저 스터디: 3. 윈도우 매니저 입력
윈도우 매니저 스터디: 3. 윈도우 매니저 입력윈도우 매니저 스터디: 3. 윈도우 매니저 입력
윈도우 매니저 스터디: 3. 윈도우 매니저 입력nemoux
 
Windows handle 의 비밀 2
Windows handle 의 비밀 2Windows handle 의 비밀 2
Windows handle 의 비밀 2
Joosaeng Kim
 
2016 NEMO-UX Introduction
2016 NEMO-UX Introduction2016 NEMO-UX Introduction
2016 NEMO-UX Introduction
nemoux
 
(NEMO-UX) 미래 컴퓨팅 환경
(NEMO-UX) 미래 컴퓨팅 환경(NEMO-UX) 미래 컴퓨팅 환경
(NEMO-UX) 미래 컴퓨팅 환경
nemoux
 
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기zupet
 

Viewers also liked (7)

(NEMO-UX) WAYLAND 기반 윈도우 매니저 소개
(NEMO-UX) WAYLAND 기반 윈도우 매니저 소개(NEMO-UX) WAYLAND 기반 윈도우 매니저 소개
(NEMO-UX) WAYLAND 기반 윈도우 매니저 소개
 
윈도우 매니저 스터디: 2. 윈도우 매니저 최적화
윈도우 매니저 스터디: 2. 윈도우 매니저 최적화윈도우 매니저 스터디: 2. 윈도우 매니저 최적화
윈도우 매니저 스터디: 2. 윈도우 매니저 최적화
 
윈도우 매니저 스터디: 3. 윈도우 매니저 입력
윈도우 매니저 스터디: 3. 윈도우 매니저 입력윈도우 매니저 스터디: 3. 윈도우 매니저 입력
윈도우 매니저 스터디: 3. 윈도우 매니저 입력
 
Windows handle 의 비밀 2
Windows handle 의 비밀 2Windows handle 의 비밀 2
Windows handle 의 비밀 2
 
2016 NEMO-UX Introduction
2016 NEMO-UX Introduction2016 NEMO-UX Introduction
2016 NEMO-UX Introduction
 
(NEMO-UX) 미래 컴퓨팅 환경
(NEMO-UX) 미래 컴퓨팅 환경(NEMO-UX) 미래 컴퓨팅 환경
(NEMO-UX) 미래 컴퓨팅 환경
 
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
 

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

Designing Apps for Motorla Xoom Tablet
Designing Apps for Motorla Xoom TabletDesigning Apps for Motorla Xoom Tablet
Designing Apps for Motorla Xoom Tablet
Motorola Mobility - MOTODEV
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
현철 조
 
Manage book project
Manage book projectManage book project
Manage book project
Ann Byung Hyun
 
Manage book project
Manage book projectManage book project
Manage book project
Ann Byung Hyun
 
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
Sang Don Kim
 
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
YEONG-CHEON YOU
 
Mobile/Embedded for Silverlight
Mobile/Embedded for SilverlightMobile/Embedded for Silverlight
Mobile/Embedded for Silverlight
Seo Jinho
 
Mobile UX for Windows Mobile
Mobile UX for Windows MobileMobile UX for Windows Mobile
Mobile UX for Windows Mobile
Seo Jinho
 
Korean input overview in the linux desktop
Korean input overview in the linux desktopKorean input overview in the linux desktop
Korean input overview in the linux desktop
gnomekr
 
리눅스 데스크톱의 한국어 입력 개요
리눅스 데스크톱의 한국어 입력 개요리눅스 데스크톱의 한국어 입력 개요
리눅스 데스크톱의 한국어 입력 개요
Changwoo Ryu
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
funmeate
 
Html5 게임 기술의 개요
Html5 게임 기술의 개요Html5 게임 기술의 개요
Html5 게임 기술의 개요
Changhwan Yi
 
Node.js 살펴보기
Node.js 살펴보기Node.js 살펴보기
Node.js 살펴보기
명신 김
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
Jinuk Kim
 
하이브리드앱
하이브리드앱하이브리드앱
하이브리드앱knight1128
 
가상키패드 (Vkeypad)
가상키패드 (Vkeypad)가상키패드 (Vkeypad)
가상키패드 (Vkeypad)
시온시큐리티
 
스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기
Jae Sung Park
 
Html5+js with game engine cocos2d-html5 분석 @KGC2012
Html5+js with game engine   cocos2d-html5 분석 @KGC2012Html5+js with game engine   cocos2d-html5 분석 @KGC2012
Html5+js with game engine cocos2d-html5 분석 @KGC2012
Chanho Song
 
HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망
HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망
HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망Sang Seok Lim
 

Similar to 윈도우 매니저 스터디: 0.윈도우 매니저 소개 (20)

Designing Apps for Motorla Xoom Tablet
Designing Apps for Motorla Xoom TabletDesigning Apps for Motorla Xoom Tablet
Designing Apps for Motorla Xoom Tablet
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
Manage book project
Manage book projectManage book project
Manage book project
 
Manage book project
Manage book projectManage book project
Manage book project
 
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
 
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
 
Mobile/Embedded for Silverlight
Mobile/Embedded for SilverlightMobile/Embedded for Silverlight
Mobile/Embedded for Silverlight
 
Mobile UX for Windows Mobile
Mobile UX for Windows MobileMobile UX for Windows Mobile
Mobile UX for Windows Mobile
 
Korean input overview in the linux desktop
Korean input overview in the linux desktopKorean input overview in the linux desktop
Korean input overview in the linux desktop
 
리눅스 데스크톱의 한국어 입력 개요
리눅스 데스크톱의 한국어 입력 개요리눅스 데스크톱의 한국어 입력 개요
리눅스 데스크톱의 한국어 입력 개요
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
 
Html5 게임 기술의 개요
Html5 게임 기술의 개요Html5 게임 기술의 개요
Html5 게임 기술의 개요
 
Node.js 살펴보기
Node.js 살펴보기Node.js 살펴보기
Node.js 살펴보기
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
 
하이브리드앱
하이브리드앱하이브리드앱
하이브리드앱
 
가상키패드 (Vkeypad)
가상키패드 (Vkeypad)가상키패드 (Vkeypad)
가상키패드 (Vkeypad)
 
스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기
 
Html5+js with game engine cocos2d-html5 분석 @KGC2012
Html5+js with game engine   cocos2d-html5 분석 @KGC2012Html5+js with game engine   cocos2d-html5 분석 @KGC2012
Html5+js with game engine cocos2d-html5 분석 @KGC2012
 
HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망
HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망
HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망
 
jhj port.
jhj port.jhj port.
jhj port.
 

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

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