forked from bootlin/training-materials
-
Notifications
You must be signed in to change notification settings - Fork 0
/
graphics-agenda.tex
262 lines (243 loc) · 7.09 KB
/
graphics-agenda.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
\documentclass[a4paper,12pt,obeyspaces,spaces,hyphens]{article}
\def \trainingtype{onsite}
\def \agendalanguage{english}
\input{agenda/graphics.inc}
\usepackage{agenda}
\begin{document}
\feshowtitle
\feshowinfo
\section{Day 1 - Morning}
\feagendatwocolumn
{Lecture - Image and Color Representation}
{
\begin{itemize}
\item Light, pixels and pictures
\item Sampling, frequency domain, aliasing
\item Color quantization and representation
\item Colorspaces and channels, alpha
\item YUV and chroma sub-sampling
\item Pixel data planes, scan order
\item Pixel formats, FourCC codes, modifiers
\end{itemize}
\vspace{0.5em}
{\em Introducing the basic notions used for representing color images in graphics.}
}
{Lecture - Pixel Drawing}
{
\begin{itemize}
\item Accessing and iterating over pixel data
\item Concepts about rasterization
\item Rectangle drawing
\item Linear gradient drawing
\item Disk drawing
\item Circular gradient drawing
\item Line drawing
\item Line and shape aliasing, sub-pixel drawing
\item Circles and polar coordinates
\item Parametric curves
\end{itemize}
\vspace{0.5em}
{\em Presenting how to access pixel data in memory and draw basic shapes.}
}
\\
\feagendatwocolumn
{Lecture - Pixel Operations}
{
\begin{itemize}
\item Region copy
\item Alpha blending
\item Color-keying
\item Scaling and interpolation
\item Linear filtering and convolution
\item Blur filters
\item Dithering
\end{itemize}
\vspace{0.5em}
{\em Providing basic notions about filtering, with very common examples of how it's used.}
}
{Demo - Drawing and operations}
{
\begin{itemize}
\item Examples of various shapes and region drawing
\item Examples of basic pixel operations
\end{itemize}
\vspace{0.5em}
{\em Illustrating the concepts presented along the way.}
}
\section{Day 1 - Afternoon}
\feagendatwocolumn
{Lecture - Pipeline Components Overview and Generalities}
{
\begin{itemize}
\item Types of graphics hardware implementations
\item Graphics memory and buffers
\item Graphics pipelines
\item Display, render and video hardware overview
\end{itemize}
\vspace{0.5em}
{\em Presenting the hardware involved in graphics pipelines.}
}
{Lecture - Display hardware}
{
\begin{itemize}
\item Visual display technologies: CRT, plasma, LCD, OLED, EPD
\item Display timings, modes and EDID
\item DIsplay interfaces: VGA, DVI, HDMI, DP, LVDS, DSI, DP
\item Bridges and transcoders
\end{itemize}
\vspace{0.5em}
{\em Presenting the inner workings of display hardware.}
}
\\
\feagendatwocolumn
{Lecture - Rendering Hardware Specifics}
{
\begin{itemize}
\item Digital Signal Processors (DSPs)
\item Dedicated hardware accelerators
\item Graphics Processing Unit (GPUs)
\end{itemize}
\vspace{0.5em}
{\em Describing the architecture of processing and rendering hardware.}
}
{Lecture - System Integration, Memory and Performance}
{
\begin{itemize}
\item Graphics integration and memory
\item Shared graphics memory access
\item Graphics memory constraints and performance
\item Offloading graphics to hardware
\item Graphics performance tips
\end{itemize}
\vspace{0.5em}
{\em Topics related to graphics integration, memory management and performance aspects.}
}
\section{Day 2 - Morning}
\feagendatwocolumn
{Lecture - Display Stack Overview}
{
\begin{itemize}
\item System-agnostic overview: kernel, userspace display and rendering
\item Linux kernel overview
\item Linux-compatible low-level userspace overview
\item X Window and Wayland overview
\item High-level graphics libraries and desktop environments overview
\end{itemize}
\vspace{0.5em}
{\em Presenting what software components are required for modern computer graphics and how they are divided between kernel and userspace.}
}
{Lecture - TTY Kernel Aspects, Framebuffer Device Kernel Aspects}
{
\begin{itemize}
\item Linux TTY subsystem introduction
\item Virtual terminals and graphics
\item Virtual terminals switching and graphics
\end{itemize}
\vspace{0.5em}
\begin{itemize}
\item Fbdev overview
\item Fbdev basic operations
\item Fbdev limitations
\end{itemize}
\vspace{0.5em}
{\em How TTYs interact with graphics in Linux along with a short presentation of fbdev and why it's deprecated.}
}
\\
\feagendatwocolumn
{Lecture - DRM Kernel Aspects}
{
\begin{itemize}
\item DRM devices
\item DRM driver identification and capabilities
\item DRM master, magic and authentication
\item DRM memory management
\item DRM KMS dumb buffer API
\item DRM FourCCs and modifiers
\item DRM KMS resources probing
\item DRM KMS modes
\item DRM KMS framebuffer management
\item DRM KMS legacy configuration and page flipping
\item DRM event notification
\item DRM KMS object properties
\item DRM KMS atomic
\item DRM render
\item DRM Prime zero-copy memory sharing (dma-buf)
\item DRM sync object fencing
\item DRM debug and documentation
\end{itemize}
\vspace{0.5em}
{\em An exaustive presentation of the DRM interface.}
}
{Demo - Kernel Aspects}
{
\begin{itemize}
\item Linux TTY and virtual terminals
\item DRM KMS mode-setting
\item DRM KMS driver walkthrough
\item DRM render driver walkthrough
\end{itemize}
\vspace{0.5em}
{\em Illustrating how kernel aspects work.}
}
\section{Day 2 - Afternoon}
\feagendatwocolumn
{Lecture - X Window Userspace Aspects}
{
\begin{itemize}
\item X11 protocol and architecture
\item X11 protocol extensions
\item Xorg architecture and acceleration
\item Xorg drivers overview
\item X11 and OpenGL acceleration: GLX and DRI2
\item Xorg usage, integration and configuration
\item Major issues with X11
\item Xorg debug and documentation
\end{itemize}
\vspace{0.5em}
{\em Presenting all things related to X11 and Xorg.}
}
{Lecture - Wayland Userspace Aspects}
{
\begin{itemize}
\item Wayland overview and paradigm
\item Wayland protocol and architecture
\item Wayland core protocol details
\item Wayland extra protocols
\item Wayland asynchronous interface
\item Wayland OpenGL integration
\item Wayland status and adoption
\item Wayland debug and documentation
\end{itemize}
\vspace{0.5em}
{\em An in-depth presentation of Wayland.}
}\\
\feagendatwocolumn
{Lecture - Mesa 3D Userspace Aspects}
{
\begin{itemize}
\item Standardized 3D rendering APIs: OpenGL, OpenGL ES, EGL and Vulkan
\item Mesa 3D overview
\item Mesa 3D implementation highlights
\item Mesa 3D internals: Gallium 3D
\item Mesa 3D internals: intermediate representations
\item Mesa 3D Generic Buffer Management (GBM)
\item Mesa 3D hardware support status
\item Mesa 3D versus proprietary implementations
\item Mesa 3D hardware support: debug and documentation
\end{itemize}
\vspace{0.5em}
{\em Presenting 3D APIs and the Mesa 3D implementation.}
}
{Demo - Userspace Aspects}
{
\begin{itemize}
\item Xorg code walkthrough
\item Wayland compositor core walkthrough
\item Wayland client examples
\item Mesa code walk-through
\item OpenGL and EGL examples
\end{itemize}
\vspace{0.5em}
{\em Illustrating userspace aspects, client and server implementations.}
}
\end{document}