Back to DirectFB!
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Subtitle |
| |
Title of Series | ||
Number of Parts | 287 | |
Author | ||
Contributors | ||
License | CC Attribution 2.0 Belgium: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/56844 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
FOSDEM 202212 / 287
2
4
6
8
12
17
21
23
31
35
37
41
44
45
46
47
50
62
65
66
67
68
71
73
81
84
85
86
90
92
94
100
102
105
111
114
115
116
117
118
121
122
124
127
131
133
135
137
139
140
141
142
145
149
150
156
164
165
167
169
170
171
172
174
176
178
180
183
184
189
190
192
194
198
205
206
207
208
210
218
220
224
225
229
230
232
235
236
238
239
240
242
243
244
245
246
249
250
253
260
262
264
267
273
274
277
282
283
287
00:00
System programmingRevision controlComputer configurationHypermediaInstallation artImplementationIndependence (probability theory)Modul <Datentyp>Source codeEmbedded systemInterface (computing)Computer fileRepository (publishing)BuildingCore dumpGeneric programmingModule (mathematics)outputLibrary (computing)Directory serviceWindowVideoconferencingComputer-generated imageryComputer fontEmailDigital rights managementLevel (video gaming)Kernel (computing)InterprozesskommunikationMereologySystem programmingFlow separationGoodness of fitDescriptive statisticsSource codeModel theoryStandard deviationMessage passingOrder (biology)TelecommunicationWindowSeries (mathematics)WhiteboardDirection (geometry)Exception handlingData managementRepository (publishing)Electronic visual displayDirectory serviceComputer configurationCore dumpLibrary (computing)Revision controlHypermediaHash functionMultiplication signComputer fileBuildingTable (information)Interface (computing)Digital rights managementInterprozesskommunikationStability theoryFormal languageModule (mathematics)Module (mathematics)Kernel (computing)MereologyEmailEnterprise architectureoutputDiagramComputer animation
04:08
Core dumpSicSystem programmingDirectory serviceRepository (publishing)Process (computing)Source codeSystem programmingModule (mathematics)Operator (mathematics)WindowoutputInterface (computing)Data managementLibrary (computing)
05:07
Directory serviceCore dumpRepository (publishing)Computer fileComputer-generated imageryFile formatInternet service providerVideoconferencingInterface (computing)VideoconferencingRaw image formatDirectory serviceInternet service providerHypermediaInformationSet (mathematics)View (database)Machine visionExt functorCuboidComputer animation
05:41
outputProduct (business)Flow separationCore dumpRepository (publishing)Modul <Datentyp>System programmingVideoconferencingComputer-generated imageryComputer hardwareInterprozesskommunikationExtension (kinesiology)Virtual realityOperations researchTriangleRectangleDefault (computer science)MultiplicationKernel (computing)Module (mathematics)Installation artRootkitEmailSicCivil engineeringRevision controlForm (programming)Mach's principleSystem programmingVideoconferencingoutputInternet forumCartesian coordinate systemModel theorySingle-precision floating-point formatMultiplication signData managementComputing platformGraphical user interfaceRepository (publishing)Medical imagingGraphics processing unitWindowOperator (mathematics)Internet service providerAdditionCore dumpModule (mathematics)Configuration spaceComputer hardwareMultiplicationKernel (computing)Computer animation
07:49
ArmLibrary (computing)Configuration spaceSystem programmingBinary fileHypermediaInstallation artSample (statistics)Demo (music)outputTriangleMatrix (mathematics)Alpha (investment)Scaling (geometry)Texture mappingVideoconferencingRepository (publishing)Core dumpAdditionGroup actionSystem programming1 (number)ArmInternet service providerBuildingRevision controlComputer fileLibrary (computing)InformationComputer animation
08:53
BenchmarkRectangleForceSample (statistics)Cloud computingTexture mappingSemiconductor memoryComputer programmingDemo (music)WindowCartesian coordinate systemDarstellungsmatrixSoftware testingStack (abstract data type)Sound effectModule (mathematics)VideoconferencingGraph coloringTriangleoutputAlpha (investment)Data storage deviceMetric systemInternet forumNetwork topologyTransformation (genetics)Computer animation
12:48
Civil engineeringForceSample (statistics)VideoconferencingComputer-generated imageryInternet service providerHypermediaTape driveComputer configurationInterface (computing)ImplementationAdditionMedical imagingHypermediaComputer fontType theoryInternet service providerSampling (statistics)VideoconferencingFile viewerComputer programmingComputer fileRepository (publishing)Shape (magazine)Multiplication signDirection (geometry)Software testingScripting languageComputer animation
14:28
UnicodeWeb pagePixelInterface (computing)Table (information)VideoconferencingDifferent (Kate Ryan album)Streaming mediaInternet service providerImplementationComputer configurationDefault (computer science)Interface (computing)Computer fileMedical imagingComputer animationXML
16:22
PixelUnicodeHypermediaInstallation artInterface (computing)Extension (kinesiology)ImplementationModule (mathematics)Projective planeMilitary basePhase transitionLatent heatLibrary (computing)ImplementationSheaf (mathematics)Interface (computing)Demo (music)Computer animation
17:41
OctahedronDodekaederIcosahedronInterface (computing)MorphingForceProjective planeDemo (music)Computer configurationImplementationPresentation of a groupWordInterface (computing)
18:56
Interface (computing)Direction (geometry)Computing platformDemo (music)TriangleComputer configurationMultiplication signInterface (computing)Computer animation
20:06
HypermediaInstallation artExtension (kinesiology)Ext functorImplementationArtistic renderingWeightGroup actionExtension (kinesiology)SurfaceQueue (abstract data type)Revision controlProjective planeSinc functionArtistic renderingShader <Informatik>Computer animation
21:03
Ext functorExtension (kinesiology)Extension (kinesiology)Order (biology)Computer configurationProjective planeDemosceneComputer animation
22:15
User interfaceTerm (mathematics)EmulatorComputer-generated imageryProbability density functionWeb browserHypermediaComputer programmingUser interfaceInformationAbstractionDirection (geometry)System programmingFacebookRight angleLibrary (computing)40 (number)Cartesian coordinate systemTerm (mathematics)Level (video gaming)WikiPresentation of a groupVideo projectorComputer animation
23:38
Computer animationMeeting/Interview
24:05
System programmingBranch (computer science)Matching (graph theory)Level (video gaming)Projective planeNetwork topologyDescriptive statisticsLabour Party (Malta)Series (mathematics)Core dumpRepository (publishing)Machine visionCompilerState of matterDigital rights managementMathematicsCodeSoftware developerMeeting/Interview
25:58
Branch (computer science)Axiom of choiceMeeting/Interview
26:26
Ocean currentPlanningPrisoner's dilemmaSystem programmingComputer configurationOperator (mathematics)WindowMultiplication signMedical imagingPresentation of a groupDampingGraphics processing unitDevice driverBlock (periodic table)BitComputing platformWhiteboardModule (mathematics)Heat transferElectronic visual displayKernel (computing)Graph (mathematics)NP-hardSoftware testingReading (process)Source codeMeeting/Interview
28:05
Online helpSystem callQuicksortMeeting/Interview
28:29
Meeting/InterviewComputer animation
Transcript: English(auto-generated)
00:08
Back to DirectFB I start by coming back 20 years in the past. In 2001, DirectFB is released on directfb.org with this message
00:22
X is dead A succession of stable versions were released until 2012 and in 2015, the last official version of DirectFB was released, 1.7.7
00:40
2016 was the year of the last commit for the never published 1.8 series DirectFB eventually died before X or so it seemed until DirectFB 2 was created in order to maintain DirectFB
01:03
for its use on embedded systems DirectFB 2 is now public on GitHub I will first give an overview of DirectFB 2 and how to get started with it
01:21
Next, we'll look at the DirectFB examples I will introduce the DirectFB 2 media package which complements DirectFB 2 OpenGL and Vulkan rendering with DirectFB will be addressed
01:47
The meson build system is used in DirectFB 2 and all source code is implemented in pure C language There is no external dependency except a C library
02:03
and a tool for converting description files into C files Only Linux is supported at this time but support for other embedded OS is expected in the future
02:22
DirectFB 2 architecture is focused on a modular design with a main repository for the core and separate repositories for modules that are more specific
02:42
Let's have a look on this core repository The DirectFB API is described in the directfb.h header file The DirectFB library is contained in the src directory
03:02
and is based on two internal libraries The direct library for all low-level parts such as operating system wrappers, linked list, hash tables The fusion library for inter-process communication
03:24
Note that an optional kernel module that implements the critical parts of fusion can be used The display is managed by a system module Two generic system modules are available
03:43
one based on the legacy framebuffer interface and the other based on the modern DRM KMS interface The inputs are managed by a driver module
04:01
There is also a module for window management So if we enter in the repository we can list the src directory
04:25
A software implementation for every graphics operation is contained in the gfx subdirectory
04:42
and we can see the include directory the input driver module the direct on fusion internal libraries We also have system modules on the window manager module We also have an interfaces directory on the tools directory
05:09
The interfaces directory contains what we call media providers These basic providers allow rendering of forefront raw image or raw video
05:26
The tools directory provides in particular DFB info to check directfv settings on your target
05:46
Typically the video mode, the system and input used Separate repositories are used for additional system and input driver modules
06:07
Additional window manager modules Additional font, image and video providers Graphics card driver modules This consists of performing graphics operations in hardware
06:25
if a chipset on your platform can support it Now to install directfb2
06:41
First, you need to configure the build for a single application core or for a multi-application core It depends on whether you need to run a single application or multiple applications at the same time on your target
07:01
for a multi-application core configuration Just note that you can enable the use of the optional fusion kernel module Then, start the build with ninja to show you the configuration on the build
07:52
Some information for cross-compiling directfb2 for example for an ARM target Create a cross file like this and run meson specifying this cross file
08:08
Note that the size of the generated library is around 1 MB For getting familiar with various directfv features
08:23
I suggest to have a look on the directfv examples Compared to the latest 1.7.0 version released in 2013
08:41
The meson build system is also used In addition, the examples not only use the basic providers Let's take a quick tour of these examples
09:00
It will probably bring back memories for some people dfinput is a test application for input devices
09:30
dfhandy is a penguin animation
09:46
dfdoc is a benchmarking program
10:18
dfwindow is a window stack example
10:29
dffire is a fire effect demo
10:42
dfmatrix is a transformation matrix example
11:03
dftexture is a texture mapping program
11:25
It's also possible to map a video to the texture dfknuckle is a 3D scroll toward using triangles
12:02
dfparticle is a moving fountain demo dfneo is a scaling animation with alpha blending and color modulation
12:31
dfvideo starts video playback in a moving window
12:54
These are screenshots of the examples we just saw
13:12
directfv2 media package This repository contains additional font, image and video providers
13:24
Which come from the original directfv These complement the basic providers of directfv2 and usually depend on external libraries such as
13:40
the free type 2 font provider png on jpeg, image providers ffmpeg on gstreamer, video providers, etc When a media is loaded a probing is done by directfv for finding a suitable provider
14:03
sample viewers are available for testing media providers We're going to run these sample programs for viewing a tooltype font png on jpeg, images on the hmp4 video file
14:35
It's possible to display the asunder, descender and baseline on the font table
15:03
png on jpeg, image providers are automatically selected during the file probing
15:22
Here we have just started the video playback without worrying about the video provider used ffmpeg video provider on gstreamer video provider can handle this video
15:56
So if needed, we can see that the default interface implementation option
16:03
allows to explicitly select the provider to use
16:32
The next section is devoted to OpenGL rendering with directfv
16:43
To do OpenGL rendering, an interface named directfvGL can be used but it's also possible to use the eGL interface Thanks to the Mesa3D project, it's possible to experiment with these two interfaces
17:04
but depending on the chipset, a specific implementation supporting one or both interfaces may be available
17:21
Let's have a look on directfvGL interface We can find an example of use in YAGIRS or try examples of mesa demo ported to directfvGL
17:43
We're going to run YAGIRS and we're going to run dfmov3d coming from mesa demo A word about the YAGIRS project as we'll see it again in the presentation YAGIRS is another implementation of the popular GIRS OpenGL demo
18:05
that supports many rendering methods That's why when running YAGIRS, we specify glDirectfv in the options to use directfvGL interface With eGL interface, it's similar
19:02
We can find an example of use in YAGIRS or try examples of mesa demo updated for the directfv platform We're going to run YAGIRS but this time we specify eglDirectfv in the options
19:23
to use egl interface And we're going to run the triangle example coming from mesa demo
20:10
Vulkan rendering can also be done with directfv To do this, the vkxdirectfv surface extension can be used
20:24
and is available in Vulkan since version 1.2.146 Thanks to the Swift Shader project It's possible to experiment with this extension
20:47
Let's have a look on it We can find various examples supporting the Vulkan extension for directfv
21:07
We're going to run the Vulkan scene example and we're going to run vkcube available in Vulkan tools The YAGIRS project that we've seen before
21:21
is launched with vkdirectfv in the options in order to use the Vulkan extension for directfv and to go beyond with directfv
22:22
Do not hesitate to take a look at this wiki where you can find information on programs running directly on directfv that has the fv term or projector that I'm using today for this presentation You can also run directfv applications through the lite on alixi toolkits
22:49
or use the kero on eva's drawing libraries But on SDL graphics abstraction layers have a directfv support
23:02
and it's possible to run a high level application based on user interface toolkits like GTK or Qt built on top of directfv So let's go with directfv on your embedded system
23:22
Any help or contribution are welcome
23:49
So what were the main challenges in resurrecting this codebase and taking it forwards again? What kept you awake at night?
24:05
Welcome, thanks for listening to this talk Your question was about the main challenges and the development history of the original directfv
24:26
The work done to revive directfv was delicate In fact, to understand directfv2 versus directfv you need to consider all the branches available on the git repository
24:45
Starting with the 1.6 branch some C++ code was introduced into the core in particular the description files generated by the flex compiler In the 1.7 branch, projects related to directfv have been merged into the core repository
25:05
resulting in a big repository I really think that working on small repositories without dependencies is easier for integration on small embedded systems The DRM KMS system module, for example, comes from the 1.7 branch
25:25
All code changes from the never published 1.8 series are present in directfv2 That's why it's important to take into account all the branches available on the git repository
25:40
All the git history is available in the repository You really need to consider all these branches to understand directfv2 Your feeling was that the repository was not in a clean state
26:04
It's delicate, but all branches are available You can easily switch between branches It's important to consider that you understand directfv2 on the choice
26:20
It's important to switch between branches But there is a release here Going forward then, do you have plans to port this to other operating systems? Currently it's on Linux, I imagine?
26:45
I said in the presentation directfv is not a replacement for a windowing system like Quelon It is an option that mainly targets more systems You can get great performance if a graphics accelerator is available on your platform
27:06
That has a beater for block image transfer The goal of directfv2 is also to target embedded operating systems such as FreeRTOS I hope to see directfv working on iMX RT boards
27:25
For example, with a graphics driver module for bit operations Directfv may be worth considering on platforms like this Whenever I start a new embedded platform
27:41
I really enjoy building my system from scratch Just by using the kernel and then immediately testing the display with directfv It gives you the feeling of having the system in your hand It's really cool to quickly play with the graphics with almost nothing
28:03
I think we're about to run out of time If people want to continue talking then switch to the directfv devroom I'm sure Nicolas will be around for a little while longer to answer any further questions
28:22
Again, any help and contribution are welcome I'm going to sign off from this channel but I'll keep on on the directfv channel Thanks