Talk: add all demo code to the slides

This commit is contained in:
Fischlurch 2026-08-12 07:43:34 +02:00
parent 76a41aacdc
commit 471ae12153
3 changed files with 570 additions and 120 deletions

View file

@ -1161,7 +1161,11 @@
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node CREATED="1786299650606" ID="ID_1358348030" MODIFIED="1786299654447" TEXT="state definition"/>
<node CREATED="1786299650606" ID="ID_1358348030" MODIFIED="1786299654447" TEXT="state definition">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1786506976676" ID="ID_305985132" MODIFIED="1786506978969" TEXT="use of state per slot...">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1786329171661" ID="ID_652095992" MODIFIED="1786329177583" TEXT="cursor nextShow_">
<node CREATED="1786329188409" ID="ID_1322310081" MODIFIED="1786329219244" TEXT="advanced only when display complete"/>
<node CREATED="1786329228286" ID="ID_1649533931" MODIFIED="1786329233043" TEXT="used to access state"/>
@ -1185,6 +1189,15 @@
<edge COLOR="#c00636"/>
<font NAME="SansSerif" SIZE="15"/>
</node>
<node CREATED="1786459033198" ID="ID_633597539" MODIFIED="1786459039338" TEXT="Relevance for Lumiera">
<node CREATED="1786459047294" ID="ID_226094184" MODIFIED="1786459216633" TEXT="Push vs Pull">
<node CREATED="1786459117828" ID="ID_1474858578" MODIFIED="1786459119350" TEXT="Proactor requires dispatch of tasks"/>
<node CREATED="1786459204313" ID="ID_973630114" MODIFIED="1786459211335" TEXT="Lumiera is entirely oriented towards pull"/>
</node>
<node CREATED="1786459308503" ID="ID_800162032" MODIFIED="1786459309672" TEXT="active Workers and passive Scheduler"/>
<node CREATED="1786459422382" ID="ID_1700153508" MODIFIED="1786459423553" TEXT="Worker peeks URing &#x27f6; follow-up Job"/>
</node>
<node CREATED="1786459430927" ID="ID_1463634499" MODIFIED="1786459435868" TEXT="Have a closer look..."/>
</node>
</node>
<node CREATED="1754271624646" ID="ID_52826289" MODIFIED="1754271626857" TEXT="Grafik">
@ -1290,7 +1303,8 @@
</node>
<node CREATED="1786245367557" ID="ID_1248853430" MODIFIED="1786245382367" TEXT="Animation, die schreib- und Leseoperationen zeigt..."/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1785877291601" ID="ID_517600933" MODIFIED="1785877301089" TEXT="Diagramm &quot;State-Ring&quot;">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1785877291601" ID="ID_517600933" MODIFIED="1786466625791" TEXT="Diagramm &quot;State-Ring&quot;">
<linktarget COLOR="#c23657" DESTINATION="ID_517600933" ENDARROW="Default" ENDINCLINATION="134;15;" ID="Arrow_ID_670746681" SOURCE="ID_270282240" STARTARROW="None" STARTINCLINATION="23;-122;"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#accdc3" COLOR="#3f4015" CREATED="1785877302464" ID="ID_1725774104" MODIFIED="1785880120631" STYLE="fork" TEXT="Ein Schema ist nebenbei im Chat mit Claude &quot;angefallen&quot;">
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
@ -1377,6 +1391,18 @@
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1785877113392" ID="ID_23421813" MODIFIED="1785877124875" TEXT="Animation: Application-Setup">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1786466566730" ID="ID_57913077" MODIFIED="1786466585119" TEXT="Animation: Player and Displayer-Object">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1786466585843" ID="ID_1116610832" MODIFIED="1786466590526" TEXT="Animation: Proactor">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1786466604005" ID="ID_270282240" MODIFIED="1786466632751" TEXT="integrate animated State-Ring">
<arrowlink COLOR="#c23657" DESTINATION="ID_517600933" ENDARROW="Default" ENDINCLINATION="134;15;" ID="Arrow_ID_670746681" STARTARROW="None" STARTINCLINATION="23;-122;"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1786466591383" ID="ID_1030877081" MODIFIED="1786466602726" TEXT="Animation: show Frame">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1527792581594" ID="ID_790723996" MODIFIED="1784563161118" TEXT="Einteilung">
@ -1526,6 +1552,56 @@
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1786467933495" ID="ID_1038344188" MODIFIED="1786467938593" TEXT="Animationen / Transitions">
<node CREATED="1786467939404" ID="ID_1595177363" MODIFIED="1786467957429" TEXT="Wipe-Transition rundet auf ganze Sec">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1786467964227" ID="ID_1767548224" MODIFIED="1786468004220" TEXT="Workaround...">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Transition auf &quot;None&quot;, dann Zeit eingeben, dann Transition auf &quot;Wipe&quot;, dann Richtung w&#228;hlen....
</p>
<p>
Funktioniert sogar, wenn man alle Slides der Animation ausw&#228;hlt
</p>
</body>
</html>
</richcontent>
</node>
</node>
<node CREATED="1786500620618" ID="ID_506862674" MODIFIED="1786500633235" TEXT="Dissolve-in f&#xfc;r ganzen Code-Frame">
<icon BUILTIN="idea"/>
<node CREATED="1786500635064" ID="ID_749122408" MODIFIED="1786500717725" TEXT="manchmal erstellt er einzelne Animationen f&#xfc;r jede Zeile">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
...das w&#252;rde zwar letztlich funktionieren, wenn man dann ab dem 2.Absatz alle auf &quot;with previous&quot; umschaltet .... ist aber irre un&#252;bersichtlich.&#160; Verstehe nicht, warum er das manchmal macht (vielleicht, wenn man einzelne Abs&#228;tze schon formatiert hat?)
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1786500657782" ID="ID_1681249470" MODIFIED="1786500756647" TEXT="Workaround: mit einem andern Objekt zusammen markieren">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
Zwei Objekte markieren, Animation hinzuf&#252;gen, dann Animation des 2. Objekts wieder l&#246;schen &#10233; Ergebnis: man bekommt die Animation auf den ganzen Frame, nicht einzelne Abs&#228;tze
</p>
</body>
</html>
</richcontent>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1519523032397" ID="ID_1864078267" MODIFIED="1519527416043" TEXT="Outline">
@ -1636,6 +1712,31 @@
</node>
<node CREATED="1755783372396" ID="ID_908215409" MODIFIED="1755783394951" TEXT="Aufl&#xf6;sung pro Block erh&#xf6;hen">
<icon BUILTIN="idea"/>
<node CREATED="1786460010198" HGAP="40" ID="ID_179261156" MODIFIED="1786460087338" TEXT="qrencode -o demoCodeQR.png -l M -s 12 -m 3 -d 90 https://www.lumiera.org/research/ioUring/index.html" VSHIFT="12">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<ul>
<li>
W&#228;hle diesmal mittlestarke Fehlerkorrektur (-l M)
</li>
<li>
Ein Dot = 12px hat sich bew&#228;hrt (-s 12)
</li>
<li>
mache den Rand etwas schm&#228;ler (-m 3)
</li>
<li>
setze 300 dpi f&#252;r die Bilddatei
</li>
</ul>
</body>
</html>
</richcontent>
<icon BUILTIN="list"/>
</node>
</node>
</node>
</node>

Binary file not shown.

View file

@ -1,123 +1,472 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.42.4 (0)
-->
<!-- Title: handoff Pages: 1 -->
<svg width="728pt" height="352pt"
viewBox="0.00 0.00 728.00 352.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 348)">
<title>handoff</title>
<g id="clust1" class="cluster">
<title>cluster_proactor</title>
<path fill="#eef4ff" stroke="#7092c0" d="M241.5,-143C241.5,-143 688,-143 688,-143 694,-143 700,-149 700,-155 700,-155 700,-324 700,-324 700,-330 694,-336 688,-336 688,-336 241.5,-336 241.5,-336 235.5,-336 229.5,-330 229.5,-324 229.5,-324 229.5,-155 229.5,-155 229.5,-149 235.5,-143 241.5,-143"/>
<text text-anchor="middle" x="361" y="-322.4" font-family="sans-serif" font-size="12.00"> &#160;»Proactor« thread &#160;— &#160;playVideo() loop &#160;</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_gui</title>
<path fill="#eefaee" stroke="#6bab6b" d="M205,-8C205,-8 700,-8 700,-8 706,-8 712,-14 712,-20 712,-20 712,-69 712,-69 712,-75 706,-81 700,-81 700,-81 205,-81 205,-81 199,-81 193,-75 193,-69 193,-69 193,-20 193,-20 193,-14 199,-8 205,-8"/>
<text text-anchor="middle" x="258.5" y="-67.4" font-family="sans-serif" font-size="12.00"> &#160;GTK / GUI thread &#160;</text>
</g>
<!-- file -->
<g id="node1" class="node">
<title>file</title>
<path fill="#eeeeee" stroke="black" d="M101,-216.73C101,-218.53 78.37,-220 50.5,-220 22.63,-220 0,-218.53 0,-216.73 0,-216.73 0,-187.27 0,-187.27 0,-185.47 22.63,-184 50.5,-184 78.37,-184 101,-185.47 101,-187.27 101,-187.27 101,-216.73 101,-216.73"/>
<path fill="none" stroke="black" d="M101,-216.73C101,-214.92 78.37,-213.45 50.5,-213.45 22.63,-213.45 0,-214.92 0,-216.73"/>
<text text-anchor="middle" x="50.5" y="-199.2" font-family="sans-serif" font-size="11.00">demovideo.raw</text>
</g>
<!-- ring -->
<g id="node4" class="node">
<title>ring</title>
<polygon fill="#ffffff" stroke="black" points="237.5,-152 237.5,-252 379.5,-252 379.5,-152 237.5,-152"/>
<text text-anchor="middle" x="308.5" y="-239.2" font-family="sans-serif" font-size="11.00">ring buffers (RING_SIZ)</text>
<polyline fill="none" stroke="black" points="237.5,-232 379.5,-232 "/>
<text text-anchor="middle" x="308.5" y="-219.2" font-family="sans-serif" font-size="11.00">slot</text>
<polyline fill="none" stroke="black" points="237.5,-212 379.5,-212 "/>
<text text-anchor="middle" x="308.5" y="-199.2" font-family="sans-serif" font-size="11.00">slot</text>
<polyline fill="none" stroke="black" points="237.5,-192 379.5,-192 "/>
<text text-anchor="middle" x="308.5" y="-179.2" font-family="sans-serif" font-size="11.00">slot</text>
<polyline fill="none" stroke="black" points="237.5,-172 379.5,-172 "/>
<text text-anchor="middle" x="308.5" y="-159.2" font-family="sans-serif" font-size="11.00">…</text>
</g>
<!-- file&#45;&gt;ring -->
<g id="edge1" class="edge">
<title>file&#45;&gt;ring</title>
<path fill="none" stroke="black" d="M101.16,-202C136.89,-202 185.86,-202 227.12,-202"/>
<polygon fill="black" stroke="black" points="219.5,-205.5 229.5,-202 219.5,-198.5 219.5,-205.5"/>
<text text-anchor="middle" x="151" y="-205" font-family="sans-serif" font-size="10.00">io_uring read</text>
</g>
<!-- wait -->
<g id="node2" class="node">
<title>wait</title>
<path fill="#ffffff" stroke="black" d="M680,-307C680,-307 582,-307 582,-307 576,-307 570,-301 570,-295 570,-295 570,-283 570,-283 570,-277 576,-271 582,-271 582,-271 680,-271 680,-271 686,-271 692,-277 692,-283 692,-283 692,-295 692,-295 692,-301 686,-307 680,-307"/>
<text text-anchor="middle" x="631" y="-292.2" font-family="sans-serif" font-size="11.00">io_uring_wait_cqe()</text>
<text text-anchor="middle" x="631" y="-280.2" font-family="sans-serif" font-size="11.00">(blocking)</text>
</g>
<!-- timer -->
<g id="node3" class="node">
<title>timer</title>
<path fill="#ffedcc" stroke="black" d="M353,-307C353,-307 264,-307 264,-307 258,-307 252,-301 252,-295 252,-295 252,-283 252,-283 252,-277 258,-271 264,-271 264,-271 353,-271 353,-271 359,-271 365,-277 365,-283 365,-283 365,-295 365,-295 365,-301 359,-307 353,-307"/>
<text text-anchor="middle" x="308.5" y="-292.2" font-family="sans-serif" font-size="11.00">frame&#45;beat timer</text>
<text text-anchor="middle" x="308.5" y="-280.2" font-family="sans-serif" font-size="11.00">20 ms · multishot</text>
</g>
<!-- timer&#45;&gt;wait -->
<g id="edge2" class="edge">
<title>timer&#45;&gt;wait</title>
<path fill="none" stroke="black" stroke-dasharray="1,5" d="M365.33,-289C419.3,-289 501.26,-289 559.66,-289"/>
<polygon fill="black" stroke="black" points="559.92,-292.5 569.92,-289 559.92,-285.5 559.92,-292.5"/>
<text text-anchor="middle" x="487" y="-292" font-family="sans-serif" font-size="10.00">CQE (TICK_TAG)</text>
</g>
<!-- baton -->
<g id="node7" class="node">
<title>baton</title>
<polygon fill="#e7d8ff" stroke="black" stroke-width="1.6" points="698.5,-131 563.5,-131 563.5,-95 698.5,-95 698.5,-131"/>
<text text-anchor="middle" x="631" y="-116.2" font-family="sans-serif" font-size="11.00">toDisplay_</text>
<text text-anchor="middle" x="631" y="-104.2" font-family="sans-serif" font-size="11.00">std::atomic&lt;Buffer*&gt;</text>
</g>
<!-- ring&#45;&gt;baton -->
<g id="edge3" class="edge">
<title>ring&#45;&gt;baton</title>
<path fill="none" stroke="#5a2ca0" d="M379.84,-182.47C431.79,-168.04 502.39,-148.44 555.34,-133.73"/>
<polygon fill="#5a2ca0" stroke="#5a2ca0" points="556.31,-137.09 565.01,-131.05 554.44,-130.35 556.31,-137.09"/>
<text text-anchor="middle" x="487" y="-179" font-family="sans-serif" font-size="10.00" fill="#5a2ca0">publish</text>
<text text-anchor="middle" x="487" y="-168" font-family="sans-serif" font-size="10.00" fill="#5a2ca0">store(release)</text>
</g>
<!-- disp -->
<g id="node5" class="node">
<title>disp</title>
<path fill="#ffffff" stroke="black" d="M404,-52C404,-52 213,-52 213,-52 207,-52 201,-46 201,-40 201,-40 201,-28 201,-28 201,-22 207,-16 213,-16 213,-16 404,-16 404,-16 410,-16 416,-22 416,-28 416,-28 416,-40 416,-40 416,-46 410,-52 404,-52"/>
<text text-anchor="middle" x="308.5" y="-37.2" font-family="sans-serif" font-size="11.00">EglDisplay::displayFrame()</text>
<text text-anchor="middle" x="308.5" y="-25.2" font-family="sans-serif" font-size="11.00">retrieveFrame() / completedFrame()</text>
</g>
<!-- gpu -->
<g id="node6" class="node">
<title>gpu</title>
<path fill="#ffffff" stroke="black" d="M692,-52C692,-52 570,-52 570,-52 564,-52 558,-46 558,-40 558,-40 558,-28 558,-28 558,-22 564,-16 570,-16 570,-16 692,-16 692,-16 698,-16 704,-22 704,-28 704,-28 704,-40 704,-40 704,-46 698,-52 692,-52"/>
<text text-anchor="middle" x="631" y="-37.2" font-family="sans-serif" font-size="11.00">GPU texture</text>
<text text-anchor="middle" x="631" y="-25.2" font-family="sans-serif" font-size="11.00">(glTexImage2D → draw)</text>
</g>
<!-- disp&#45;&gt;gpu -->
<g id="edge5" class="edge">
<title>disp&#45;&gt;gpu</title>
<path fill="none" stroke="black" d="M416.22,-34C458.94,-34 507.39,-34 547.35,-34"/>
<polygon fill="black" stroke="black" points="547.58,-37.5 557.58,-34 547.58,-30.5 547.58,-37.5"/>
<text text-anchor="middle" x="487" y="-37" font-family="sans-serif" font-size="10.00">upload + draw</text>
</g>
<!-- disp&#45;&gt;baton -->
<g id="edge6" class="edge">
<title>disp&#45;&gt;baton</title>
<path fill="none" stroke="#3a7a3a" stroke-dasharray="5,2" d="M341.45,-52.07C365.99,-65.08 401.13,-81.88 434,-91 472.45,-101.67 516.52,-107.18 553.11,-110.02"/>
<polygon fill="#3a7a3a" stroke="#3a7a3a" points="553,-113.52 563.22,-110.76 553.5,-106.54 553,-113.52"/>
<text text-anchor="middle" x="487" y="-122" font-family="sans-serif" font-size="10.00" fill="#3a7a3a">completedFrame</text>
<text text-anchor="middle" x="487" y="-111" font-family="sans-serif" font-size="10.00" fill="#3a7a3a">store(nullptr, release)</text>
</g>
<!-- baton&#45;&gt;disp -->
<g id="edge4" class="edge">
<title>baton&#45;&gt;disp</title>
<path fill="none" stroke="#5a2ca0" d="M577.04,-94.93C570.45,-91.95 563.95,-88.64 558,-85 548.87,-79.42 549.69,-73.55 540,-69 519.39,-59.33 472.38,-51.4 426.16,-45.55"/>
<polygon fill="#5a2ca0" stroke="#5a2ca0" points="426.36,-42.05 416.01,-44.29 425.5,-48.99 426.36,-42.05"/>
<text text-anchor="middle" x="487" y="-83" font-family="sans-serif" font-size="10.00" fill="#5a2ca0">retrieveFrame</text>
<text text-anchor="middle" x="487" y="-72" font-family="sans-serif" font-size="10.00" fill="#5a2ca0">load(acquire)</text>
</g>
</g>
<svg
width="15.78cm"
height="10.38cm"
viewBox="0 0 760.11559 500"
version="1.1"
id="svg29"
sodipodi:docname="thread-handoff.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
inkscape:export-filename="../handoff.svg"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<title
id="title33">Proactor data handoff</title>
<defs
id="defs29">
<marker
style="overflow:visible"
id="marker29"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Dart arrow"
markerWidth="2"
markerHeight="2"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:context-stroke;fill-rule:evenodd;stroke:none"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
transform="scale(-0.5)"
id="path29" />
</marker>
</defs>
<sodipodi:namedview
id="namedview29"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="pt"
inkscape:zoom="1.3948107"
inkscape:cx="323.34138"
inkscape:cy="234.44042"
inkscape:window-width="1920"
inkscape:window-height="1061"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg29" />
<g
id="clust1"
class="cluster"
style="stroke-width:0.780137"
transform="matrix(1.1565668,0,0,1.420652,-67.271267,489.33908)">
<title
id="title2">cluster_proactor</title>
<path
fill="#eef4ff"
stroke="#7092c0"
d="m 241.5,-143 c 0,0 446.5,0 446.5,0 6,0 12,-6 12,-12 0,0 0,-169 0,-169 0,-6 -6,-12 -12,-12 0,0 -446.5,0 -446.5,0 -6,0 -12,6 -12,12 0,0 0,169 0,169 0,6 6,12 12,12"
id="path2"
style="stroke-width:0.780137" />
<text
text-anchor="middle"
x="361"
y="-322.39999"
font-family="sans-serif"
font-size="12px"
id="text2"
style="font-size:13.257px;stroke-width:0.780137"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.257px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans'"
id="tspan29"> »Proactor« thread  —  playVideo()</tspan></text>
</g>
<g
id="clust2"
class="cluster"
style="stroke-width:0.780137"
transform="matrix(1.1565668,0,0,1.420652,-81.150069,489.33908)">
<title
id="title3">cluster_gui</title>
<path
fill="#eefaee"
stroke="#6bab6b"
d="m 205,-8 c 0,0 495,0 495,0 6,0 12,-6 12,-12 0,0 0,-49 0,-49 0,-6 -6,-12 -12,-12 0,0 -495,0 -495,0 -6,0 -12,6 -12,12 0,0 0,49 0,49 0,6 6,12 12,12"
id="path3"
style="stroke-width:0.780137;fill:#d7faf7;fill-opacity:1" />
<text
text-anchor="middle"
x="272.72073"
y="-68.043182"
font-family="sans-serif"
font-size="12px"
id="text3"
style="font-size:13.257px;stroke-width:0.780137"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold'"
id="tspan31"> GTK / GUI thread  </tspan></text>
</g>
<g
id="node1"
class="node"
style="stroke-width:1.03353"
transform="matrix(0.85777003,0,0,1.0913897,4.0126228,416.88882)">
<title
id="title4">file</title>
<path
fill="#eee"
stroke="black"
d="m 101,-216.73 c 0,-1.8 -22.63,-3.27 -50.5,-3.27 -27.87,0 -50.5,1.47 -50.5,3.27 0,0 0,29.46 0,29.46 0,1.8 22.63,3.27 50.5,3.27 27.87,0 50.5,-1.47 50.5,-3.27 0,0 0,-29.46 0,-29.46"
id="path4"
style="stroke-width:1.03353" />
<path
fill="none"
stroke="black"
d="m 101,-216.73 c 0,1.81 -22.63,3.28 -50.5,3.28 -27.87,0 -50.5,-1.47 -50.5,-3.28"
id="path5"
style="stroke-width:1.03353" />
<text
text-anchor="middle"
x="50.5"
y="-199.2"
font-family="sans-serif"
font-size="11px"
id="text5"
style="stroke-width:1.03353">demovideo.raw</text>
</g>
<g
id="node4"
class="node"
style="stroke-width:0.780137"
transform="matrix(1.1565668,0,0,1.420652,-67.271267,489.33908)">
<title
id="title5">ring</title>
<polygon
fill="white"
stroke="black"
points="237.5,-252 379.5,-252 379.5,-152 237.5,-152 "
id="polygon5"
style="stroke-width:0.780137" />
<text
text-anchor="middle"
x="308.5"
y="-239.2"
font-family="sans-serif"
font-size="11px"
id="text6"
style="stroke-width:0.780137">ring buffers (RING_SIZ)</text>
<polyline
fill="none"
stroke="black"
points="237.5,-232 379.5,-232 "
id="polyline6"
style="stroke-width:0.780137" />
<text
text-anchor="middle"
x="308.5"
y="-219.2"
font-family="sans-serif"
font-size="11px"
id="text7"
style="stroke-width:0.780137">slot</text>
<polyline
fill="none"
stroke="black"
points="237.5,-212 379.5,-212 "
id="polyline7"
style="stroke-width:0.780137" />
<text
text-anchor="middle"
x="308.5"
y="-199.2"
font-family="sans-serif"
font-size="11px"
id="text8"
style="stroke-width:0.780137">slot</text>
<polyline
fill="none"
stroke="black"
points="237.5,-192 379.5,-192 "
id="polyline8"
style="stroke-width:0.780137" />
<text
text-anchor="middle"
x="308.5"
y="-179.2"
font-family="sans-serif"
font-size="11px"
id="text9"
style="stroke-width:0.780137">slot</text>
<polyline
fill="none"
stroke="black"
points="237.5,-172 379.5,-172 "
id="polyline9"
style="stroke-width:0.780137" />
<text
text-anchor="middle"
x="308.5"
y="-159.2"
font-family="sans-serif"
font-size="11px"
id="text10"
style="stroke-width:0.780137">…</text>
</g>
<path
fill="none"
stroke="black"
d="M 90.647396,202.36738 H 193.58071"
id="path10"
style="stroke-width:1;marker-end:url(#marker29)"
sodipodi:nodetypes="cc" />
<text
text-anchor="middle"
x="162.54471"
y="178.74663"
font-family="sans-serif"
font-size="12.8183px"
id="text11"
style="stroke-width:1"
transform="scale(0.90228035,1.108303)">io_uring read</text>
<g
id="node2"
class="node"
style="stroke-width:0.780137"
transform="matrix(1.1565668,0,0,1.420652,-67.271267,489.33908)">
<title
id="title11">wait</title>
<path
fill="white"
stroke="black"
d="m 680,-307 c 0,0 -98,0 -98,0 -6,0 -12,6 -12,12 0,0 0,12 0,12 0,6 6,12 12,12 0,0 98,0 98,0 6,0 12,-6 12,-12 0,0 0,-12 0,-12 0,-6 -6,-12 -12,-12"
id="path11"
style="stroke-width:0.780137" />
<text
text-anchor="middle"
x="631"
y="-292.20001"
font-family="sans-serif"
font-size="11px"
id="text12"
style="stroke-width:0.780137">io_uring_wait_cqe()</text>
<text
text-anchor="middle"
x="631"
y="-280.20001"
font-family="sans-serif"
font-size="11px"
id="text13"
style="stroke-width:0.780137">(blocking)</text>
</g>
<g
id="node3"
class="node"
style="stroke-width:0.780137"
transform="matrix(1.1565668,0,0,1.420652,-67.271267,489.33908)">
<title
id="title13">timer</title>
<path
fill="#ffedcc"
stroke="black"
d="m 353,-307 c 0,0 -89,0 -89,0 -6,0 -12,6 -12,12 0,0 0,12 0,12 0,6 6,12 12,12 0,0 89,0 89,0 6,0 12,-6 12,-12 0,0 0,-12 0,-12 0,-6 -6,-12 -12,-12"
id="path13"
style="stroke-width:0.780137" />
<text
text-anchor="middle"
x="308.5"
y="-292.20001"
font-family="sans-serif"
font-size="11px"
id="text14"
style="stroke-width:0.780137">frame-beat timer</text>
<text
text-anchor="middle"
x="308.5"
y="-280.20001"
font-family="sans-serif"
font-size="11px"
id="text15"
style="stroke-width:0.780137">20 ms · multishot</text>
</g>
<g
id="edge2"
class="edge"
style="stroke-width:0.780137"
transform="matrix(1.1565668,0,0,1.420652,-67.271267,489.33908)">
<title
id="title15">timer-&gt;wait</title>
<path
fill="none"
stroke="black"
stroke-dasharray="0.780137, 3.90068"
d="m 365.33,-289 c 53.97,0 135.93,0 194.33,0"
id="path15"
style="stroke-width:0.780137" />
<polygon
fill="black"
stroke="black"
points="559.92,-285.5 559.92,-292.5 569.92,-289 "
id="polygon15"
style="stroke-width:0.780137" />
</g>
<g
id="node7"
class="node"
style="stroke-width:0.780137"
transform="matrix(1.1565668,0,0,1.420652,-67.271267,489.33908)">
<title
id="title16">baton</title>
<polygon
fill="#e7d8ff"
stroke="black"
stroke-width="1.24822"
points="563.5,-131 563.5,-95 698.5,-95 698.5,-131 "
id="polygon16"
style="fill:#cdcaff;fill-opacity:1" />
<text
text-anchor="middle"
x="631"
y="-116.2"
font-family="sans-serif"
font-size="11px"
id="text17"
style="stroke-width:0.780137;stroke:#241bab;stroke-opacity:1">toDisplay_</text>
<text
text-anchor="middle"
x="631"
y="-104.2"
font-family="sans-serif"
font-size="11px"
id="text18"
style="stroke-width:0.780137;stroke:#241bab;stroke-opacity:1">std::atomic&lt;Buffer*&gt;</text>
</g>
<g
id="node5"
class="node"
style="stroke-width:0.780137"
transform="matrix(1.1565668,0,0,1.420652,258.4525,489.33908)">
<title
id="title20">disp</title>
<path
fill="white"
stroke="black"
d="m 404,-52 c 0,0 -191,0 -191,0 -6,0 -12,6 -12,12 0,0 0,12 0,12 0,6 6,12 12,12 0,0 191,0 191,0 6,0 12,-6 12,-12 0,0 0,-12 0,-12 0,-6 -6,-12 -12,-12"
id="path20"
style="stroke-width:0.780137" />
<text
text-anchor="middle"
x="308.5"
y="-37.200001"
font-family="sans-serif"
font-size="11px"
id="text21"
style="stroke-width:0.780137">EglDisplay::displayFrame()</text>
<text
text-anchor="middle"
x="308.5"
y="-25.200001"
font-family="sans-serif"
font-size="11px"
id="text22"
style="stroke-width:0.780137">retrieveFrame() / completedFrame()</text>
</g>
<g
id="node6"
class="node"
style="stroke-width:0.780137"
transform="matrix(1.1565668,0,0,1.420652,-493.129,489.33908)">
<title
id="title22">gpu</title>
<path
fill="white"
stroke="black"
d="m 692,-52 c 0,0 -122,0 -122,0 -6,0 -12,6 -12,12 0,0 0,12 0,12 0,6 6,12 12,12 0,0 122,0 122,0 6,0 12,-6 12,-12 0,0 0,-12 0,-12 0,-6 -6,-12 -12,-12"
id="path22"
style="stroke-width:0.780137" />
<text
text-anchor="middle"
x="631"
y="-37.200001"
font-family="sans-serif"
font-size="11px"
id="text23"
style="stroke-width:0.780137">GPU texture</text>
<text
text-anchor="middle"
x="631"
y="-25.200001"
font-family="sans-serif"
font-size="11px"
id="text24"
style="stroke-width:0.780137">(glTexImage2D → draw)</text>
</g>
<g
id="edge5"
class="edge"
style="stroke-width:0.780137"
transform="matrix(1.1565668,0,0,1.420652,-157.48563,489.33908)">
<title
id="title24">disp-&gt;gpu</title>
<path
fill="none"
stroke="black"
d="m 558.76077,-34 c -42.72,0 -91.17,0 -131.13,0"
id="path24"
style="stroke-width:0.780137" />
<polygon
fill="black"
stroke="black"
points="557.58,-34 547.58,-30.5 547.58,-37.5 "
id="polygon24"
style="stroke-width:0.780137"
transform="matrix(-1,0,0,1,974.98077,0)" />
<text
text-anchor="middle"
x="487"
y="-37"
font-family="sans-serif"
font-size="10px"
id="text25"
style="stroke-width:0.780137">upload + draw</text>
</g>
<metadata
id="metadata33">
<rdf:RDF>
<cc:Work
rdf:about="">
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-nc-sa/4.0/" />
<dc:title>Proactor data handoff</dc:title>
<dc:creator>
<cc:Agent>
<dc:title>Ichthyostega</dc:title>
</cc:Agent>
</dc:creator>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-nc-sa/4.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Notice" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Attribution" />
<cc:prohibits
rdf:resource="http://creativecommons.org/ns#CommercialUse" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
</svg>

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 14 KiB