2014년 6월 21일(토)
차세대 컴퓨팅 환경을 위한 기술 세미나
(2부) WAYLAND 기반 윈도우 매니저 소개
- 윈도우 매니저 최신 동향 소개
- 오픈 소스 기반 UI/UX 소프트웨어 아키텍처 소개(컴포지터/쉘/위젯 엔진..)
- 윈도우 매니저 역할 및 기본 동작 원리
NEMO-UX TEAM
http://nemoux.net
Introduction to Skia by Ryan Chou @20141008Ryan Chou
This introduces the fundamental knowledge about Skia which is open-source project used in Android. In this, it contains the history of skia, and the roll of skia in Android.
Slides from Android Builder's Summit 2014 in San Jose, CA
In this talk I describe the internal workings of the Android graphics stack from the Application layer down through the stack to pixels on the screen. It is a fairly complex journey, taking in two different 2D rendering engines, applications calling OpenGL ES directory, passing buffers on to the system compositor, SurfaceFlinger, and then down to the display controller or frame buffer.
2014년 6월 21일(토)
차세대 컴퓨팅 환경을 위한 기술 세미나
(2부) WAYLAND 기반 윈도우 매니저 소개
- 윈도우 매니저 최신 동향 소개
- 오픈 소스 기반 UI/UX 소프트웨어 아키텍처 소개(컴포지터/쉘/위젯 엔진..)
- 윈도우 매니저 역할 및 기본 동작 원리
NEMO-UX TEAM
http://nemoux.net
Introduction to Skia by Ryan Chou @20141008Ryan Chou
This introduces the fundamental knowledge about Skia which is open-source project used in Android. In this, it contains the history of skia, and the roll of skia in Android.
Slides from Android Builder's Summit 2014 in San Jose, CA
In this talk I describe the internal workings of the Android graphics stack from the Application layer down through the stack to pixels on the screen. It is a fairly complex journey, taking in two different 2D rendering engines, applications calling OpenGL ES directory, passing buffers on to the system compositor, SurfaceFlinger, and then down to the display controller or frame buffer.
Deconstructing SfM-Net architecture and beyond
"SfM-Net, a geometry-aware neural network for motion estimation in videos that decomposes frame-to-frame pixel motion in terms of scene and object depth, camera motion and 3D object rotations and translations. Given a sequence of frames, SfM-Net predicts depth, segmentation, camera and rigid object motions, converts those into a dense frame-to-frame motion field (optical flow), differentiably warps frames in time to match pixels and back-propagates."
Alternative download:
https://www.dropbox.com/s/aezl7ro8sy2xq7j/sfm_net_v2.pdf?dl=0
Docker Containers - Talk Linux Day 2015Fabio Ferrari
Overview sui Docker Container durante il Linux Day 2015.
Cosa sono i Docker container?
A cosa servono?
Come funzionano?
A cura di Fabio Ferrari di particles.io
A technical deep dive into the DX11 rendering in Battlefield 3, the first title to use the new Frostbite 2 Engine. Topics covered include DX11 optimization techniques, efficient deferred shading, high-quality rendering and resource streaming for creating large and highly-detailed dynamic environments on modern PCs.
Building a Photorealistic Real-Time 3D Configurator with Server-Side Renderin...Amazon Web Services
WebGL has made great improvements over the past years. However, it still can’t provide photorealistic experiences alone. In order to provide products with the best look and feel, we decided to use server-side 3D rendering. In this session, we show you how we built our real-time 3D configurator stack using Amazon EC2 Elastic GPUs, RESTful microservices, Lambda@Edge, Amazon CloudFront and other services.
Host fencing in oVirt - Fixing the unknown and allowing VMs to be highly avai...Martin Peřina
In order to support highly available VMs, oVirt needs a mechanism to determine the status of a VM running on non-responsive host. We need to be sure that VM is not running before restarting it on a different host to prevent data corruption. And oVirt fencing flow is crucial to achieve this goal.
Deconstructing SfM-Net architecture and beyond
"SfM-Net, a geometry-aware neural network for motion estimation in videos that decomposes frame-to-frame pixel motion in terms of scene and object depth, camera motion and 3D object rotations and translations. Given a sequence of frames, SfM-Net predicts depth, segmentation, camera and rigid object motions, converts those into a dense frame-to-frame motion field (optical flow), differentiably warps frames in time to match pixels and back-propagates."
Alternative download:
https://www.dropbox.com/s/aezl7ro8sy2xq7j/sfm_net_v2.pdf?dl=0
Docker Containers - Talk Linux Day 2015Fabio Ferrari
Overview sui Docker Container durante il Linux Day 2015.
Cosa sono i Docker container?
A cosa servono?
Come funzionano?
A cura di Fabio Ferrari di particles.io
A technical deep dive into the DX11 rendering in Battlefield 3, the first title to use the new Frostbite 2 Engine. Topics covered include DX11 optimization techniques, efficient deferred shading, high-quality rendering and resource streaming for creating large and highly-detailed dynamic environments on modern PCs.
Building a Photorealistic Real-Time 3D Configurator with Server-Side Renderin...Amazon Web Services
WebGL has made great improvements over the past years. However, it still can’t provide photorealistic experiences alone. In order to provide products with the best look and feel, we decided to use server-side 3D rendering. In this session, we show you how we built our real-time 3D configurator stack using Amazon EC2 Elastic GPUs, RESTful microservices, Lambda@Edge, Amazon CloudFront and other services.
Host fencing in oVirt - Fixing the unknown and allowing VMs to be highly avai...Martin Peřina
In order to support highly available VMs, oVirt needs a mechanism to determine the status of a VM running on non-responsive host. We need to be sure that VM is not running before restarting it on a different host to prevent data corruption. And oVirt fencing flow is crucial to achieve this goal.
2014년 6월 21일(토)
차세대 컴퓨팅 환경을 위한 기술 세미나
(1부) 미래 컴퓨팅 환경 소개
- 차세대 입출력 장치 소개(디스플레이/인터페이스)
- 최신 컴퓨터 그래픽 기술 소개(2D/3D)
- 차세대 컴퓨팅 환경 소개(wearable computing vs everywhere computing)
NEMO-UX TEAM
http://nemoux.net
Presentation from #andevcon by Anna Schaller
Peter van der Linden, Android Technology Evangelists from the Developer Platforms and Services team at Motorola Mobility. More info at http://developer.motorola.com
**** 도서관 프로그램 완성 ㅋ(서버(관리자), 클라이언트)
2015/7/22 ~ 2015/8/6 (약 2주)
개발자 : 안병현, 한골드 @한정수
사용한 언어 : 개발자
- JAVA JDK 1.8(Swing, Socket) : 한정수
- C#(WPF) : 안병현
- C/C++(Socket, DLL-Socket) : 안병현, 한정수
* 기능
관리자
(도서 추가/도서 검색/신청 도서 구입/고객 추가/고객 찾기/가입 허가/지출 및 수입 확인)
클라이언트
(도서 검색/대여/반납/도서 신청/회원 가입/로그인)
* Linux(Server)
- Cent OS Release 6.1
- Mysql(5.1.73, RDB)
- GCC version-4.4.7
*VM으로 돌리지 않음.
* 구성
1. JAVA(Swing, Socket)
자바 Swing에 Socket으로 서버소켓과 연결하여 입력된 명령(Command)에 따라 서버에서
해당하는 데이터를 송수신함.
2. C#
C# 소스에서는 주로 UI를 만들기 위한 소스를 만들었고, 소켓 통신을 C에 의존하였음.
이른 바인딩으로 C/C++로 만든 DLL을 참조하였고, 마찬가지로 입력된 명령에 따라 서버에서
해당하는 데이터를 송수신함.
3. C(리눅스 서버측)
-1 JAVA
자바와 통신하는 소스는 do~while 구문으로 하나의 명령에 하나의 소켓으로 일대일 방식으로 구성
* 구분자 '/'
-2 C#
C#과 통신하는 소스는 while 구문으로 해당 클라이언트에 하나의 쓰레드를 할당하였고,
전체 클라이언트 소켓관리는 int형 배열을 만들어 관리함.
* 구분자 ','
* 권장 사양
- JDK 설치
- .NET Framework 설치
- Windows 지원하는 OS
* 생각해니까 굉장히 쓸모 없는 도서관 프로그램임
* 포트 포워딩을 하지않아서 그런지 다른 네트워크 망에서는 리눅스 서버에 접근하지 못함(방화벽을 허물어도 안됨 ㅅㅂ..)
+ C/C++로 DLL 어셈블리 만드는게 처음이라서 개짜증났음. 게다가 C가 CLS에 맞지 않아서 자료형 맞추려다 보니 미치는줄
+ Server socket 예제가 채팅만 줠라게 많아서 미치는줄
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~YEONG-CHEON YOU
Windows 10의 UWP 앱을 개발하면 모든 Windows 10 디바이스에서 앱을 작동할 수 있습니다.
이 UWP 앱을 C++로 개발할 수 있습니다. C++로 앱을 개발하면 크로스 플랫폼 지원의 유리함, 기존 코드의 재활용, 성능향상 등의 이점이 있습니다. 본 세션에서는 몇 가지 예를 들어 C++로 UWP 앱을 개발하는 방법을 소개하며 특히 win32와 C++을 사용하던 개발자가 쉽게 UWP 앱 개발에 적응할 수 있도록 돕습니다.
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, …)
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
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, ...