Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Documentation/gpu/amdgpu: Add programming model for DCN

One of the challenges to contributing to the display code is the
complexity of the DC component. This commit adds a documentation page
that discusses the programming model used by DCN and an overview of how
the display code is organized.

Cc: Leo Li <sunpeng.li@amd.com>
Cc: Aurabindo Pillai <aurabindo.pillai@amd.com>
Cc: Hamza Mahfooz <hamza.mahfooz@amd.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Mario Limonciello <mario.limonciello@amd.com>
Cc: Christian Konig <christian.koenig@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Rodrigo Siqueira and committed by
Alex Deucher
4c5d0fc5 dec36b22

+1630
+731
Documentation/gpu/amdgpu/display/dc-arch-overview.svg
··· 1 + <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 + <!-- Created with Inkscape (http://www.inkscape.org/) --> 3 + 4 + <svg 5 + width="1204.058" 6 + height="510.57321" 7 + viewBox="0 0 318.57366 135.08917" 8 + version="1.1" 9 + id="svg8" 10 + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" 11 + sodipodi:docname="dc-arch-overview.svg" 12 + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 13 + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 14 + xmlns="http://www.w3.org/2000/svg" 15 + xmlns:svg="http://www.w3.org/2000/svg" 16 + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 17 + xmlns:cc="http://creativecommons.org/ns#" 18 + xmlns:dc="http://purl.org/dc/elements/1.1/"> 19 + <defs 20 + id="defs2"> 21 + <marker 22 + inkscape:stockid="Arrow2Mend" 23 + orient="auto" 24 + refY="0" 25 + refX="0" 26 + id="marker8858" 27 + style="overflow:visible" 28 + inkscape:isstock="true"> 29 + <path 30 + id="path8616" 31 + style="fill:#aa00d4;fill-opacity:1;fill-rule:evenodd;stroke:#aa00d4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 32 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 33 + transform="scale(-0.6)" 34 + inkscape:connector-curvature="0" /> 35 + </marker> 36 + <marker 37 + inkscape:stockid="Arrow2Send" 38 + orient="auto" 39 + refY="0" 40 + refX="0" 41 + id="Arrow2Send" 42 + style="overflow:visible" 43 + inkscape:isstock="true"> 44 + <path 45 + id="path8622" 46 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 47 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 48 + transform="matrix(-0.3,0,0,-0.3,0.69,0)" 49 + inkscape:connector-curvature="0" /> 50 + </marker> 51 + <marker 52 + inkscape:stockid="Arrow1Lend" 53 + orient="auto" 54 + refY="0" 55 + refX="0" 56 + id="Arrow1Lend" 57 + style="overflow:visible" 58 + inkscape:isstock="true"> 59 + <path 60 + id="path8592" 61 + d="M 0,0 5,-5 -12.5,0 5,5 Z" 62 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" 63 + transform="matrix(-0.8,0,0,-0.8,-10,0)" 64 + inkscape:connector-curvature="0" /> 65 + </marker> 66 + <marker 67 + inkscape:stockid="Arrow2Lend" 68 + orient="auto" 69 + refY="0" 70 + refX="0" 71 + id="Arrow2Lend" 72 + style="overflow:visible" 73 + inkscape:isstock="true"> 74 + <path 75 + id="path8610" 76 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 77 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 78 + transform="matrix(-1.1,0,0,-1.1,-1.1,0)" 79 + inkscape:connector-curvature="0" /> 80 + </marker> 81 + <marker 82 + inkscape:stockid="Arrow2Mend" 83 + orient="auto" 84 + refY="0" 85 + refX="0" 86 + id="Arrow2Mend" 87 + style="overflow:visible" 88 + inkscape:isstock="true"> 89 + <path 90 + id="path1200" 91 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 92 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 93 + transform="scale(-0.6)" 94 + inkscape:connector-curvature="0" /> 95 + </marker> 96 + <marker 97 + inkscape:stockid="Arrow2Mend" 98 + orient="auto" 99 + refY="0" 100 + refX="0" 101 + id="Arrow2Mend-8" 102 + style="overflow:visible" 103 + inkscape:isstock="true"> 104 + <path 105 + inkscape:connector-curvature="0" 106 + id="path1200-9" 107 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 108 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 109 + transform="scale(-0.6)" /> 110 + </marker> 111 + <marker 112 + inkscape:stockid="Arrow2Mend" 113 + orient="auto" 114 + refY="0" 115 + refX="0" 116 + id="Arrow2Mend-8-3" 117 + style="overflow:visible" 118 + inkscape:isstock="true"> 119 + <path 120 + inkscape:connector-curvature="0" 121 + id="path1200-9-6" 122 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 123 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 124 + transform="scale(-0.6)" /> 125 + </marker> 126 + <marker 127 + inkscape:stockid="Arrow2Mend" 128 + orient="auto" 129 + refY="0" 130 + refX="0" 131 + id="Arrow2Mend-8-3-2" 132 + style="overflow:visible" 133 + inkscape:isstock="true"> 134 + <path 135 + inkscape:connector-curvature="0" 136 + id="path1200-9-6-9" 137 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 138 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 139 + transform="scale(-0.6)" /> 140 + </marker> 141 + <marker 142 + inkscape:stockid="Arrow2Mend" 143 + orient="auto" 144 + refY="0" 145 + refX="0" 146 + id="Arrow2Mend-8-3-2-1" 147 + style="overflow:visible" 148 + inkscape:isstock="true"> 149 + <path 150 + inkscape:connector-curvature="0" 151 + id="path1200-9-6-9-9" 152 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 153 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 154 + transform="scale(-0.6)" /> 155 + </marker> 156 + <marker 157 + inkscape:stockid="Arrow2Mend" 158 + orient="auto" 159 + refY="0" 160 + refX="0" 161 + id="Arrow2Mend-8-3-2-7" 162 + style="overflow:visible" 163 + inkscape:isstock="true"> 164 + <path 165 + inkscape:connector-curvature="0" 166 + id="path1200-9-6-9-8" 167 + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 168 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 169 + transform="scale(-0.6)" /> 170 + </marker> 171 + <marker 172 + inkscape:stockid="Arrow2Mend" 173 + orient="auto" 174 + refY="0" 175 + refX="0" 176 + id="Arrow2Mend-8-3-4" 177 + style="overflow:visible" 178 + inkscape:isstock="true"> 179 + <path 180 + inkscape:connector-curvature="0" 181 + id="path1200-9-6-5" 182 + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 183 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 184 + transform="scale(-0.6)" /> 185 + </marker> 186 + <marker 187 + inkscape:stockid="Arrow2Mend" 188 + orient="auto" 189 + refY="0" 190 + refX="0" 191 + id="Arrow2Mend-8-0" 192 + style="overflow:visible" 193 + inkscape:isstock="true"> 194 + <path 195 + inkscape:connector-curvature="0" 196 + id="path1200-9-3" 197 + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 198 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 199 + transform="scale(-0.6)" /> 200 + </marker> 201 + <marker 202 + inkscape:stockid="Arrow2Mend" 203 + orient="auto" 204 + refY="0" 205 + refX="0" 206 + id="Arrow2Mend-6" 207 + style="overflow:visible" 208 + inkscape:isstock="true"> 209 + <path 210 + inkscape:connector-curvature="0" 211 + id="path1200-1" 212 + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 213 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 214 + transform="scale(-0.6)" /> 215 + </marker> 216 + <marker 217 + inkscape:stockid="Arrow2Mend" 218 + orient="auto" 219 + refY="0" 220 + refX="0" 221 + id="Arrow2Mend-8-3-2-6" 222 + style="overflow:visible" 223 + inkscape:isstock="true"> 224 + <path 225 + inkscape:connector-curvature="0" 226 + id="path1200-9-6-9-1" 227 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 228 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 229 + transform="scale(-0.6)" /> 230 + </marker> 231 + <marker 232 + inkscape:stockid="Arrow2Mend" 233 + orient="auto" 234 + refY="0" 235 + refX="0" 236 + id="Arrow2Mend-8-0-7" 237 + style="overflow:visible" 238 + inkscape:isstock="true"> 239 + <path 240 + inkscape:connector-curvature="0" 241 + id="path1200-9-3-4" 242 + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 243 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 244 + transform="scale(-0.6)" /> 245 + </marker> 246 + <marker 247 + inkscape:stockid="Arrow2Mend" 248 + orient="auto" 249 + refY="0" 250 + refX="0" 251 + id="Arrow2Mend-6-3" 252 + style="overflow:visible" 253 + inkscape:isstock="true"> 254 + <path 255 + inkscape:connector-curvature="0" 256 + id="path1200-1-0" 257 + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 258 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 259 + transform="scale(-0.6)" /> 260 + </marker> 261 + <marker 262 + inkscape:stockid="Arrow2Mend" 263 + orient="auto" 264 + refY="0" 265 + refX="0" 266 + id="Arrow2Mend-8-3-2-8" 267 + style="overflow:visible" 268 + inkscape:isstock="true"> 269 + <path 270 + inkscape:connector-curvature="0" 271 + id="path1200-9-6-9-6" 272 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 273 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 274 + transform="scale(-0.6)" /> 275 + </marker> 276 + <marker 277 + inkscape:stockid="Arrow2Mend" 278 + orient="auto" 279 + refY="0" 280 + refX="0" 281 + id="Arrow2Mend-3" 282 + style="overflow:visible" 283 + inkscape:isstock="true"> 284 + <path 285 + id="path1200-6" 286 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 287 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 288 + transform="scale(-0.6)" 289 + inkscape:connector-curvature="0" /> 290 + </marker> 291 + <marker 292 + inkscape:stockid="Arrow2Mend" 293 + orient="auto" 294 + refY="0" 295 + refX="0" 296 + id="marker8858-3" 297 + style="overflow:visible" 298 + inkscape:isstock="true"> 299 + <path 300 + id="path8616-5" 301 + style="fill:#00ffcc;fill-opacity:1;fill-rule:evenodd;stroke:#00ffcc;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 302 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 303 + transform="scale(-0.6)" 304 + inkscape:connector-curvature="0" /> 305 + </marker> 306 + <marker 307 + inkscape:stockid="Arrow2Mend" 308 + orient="auto" 309 + refY="0" 310 + refX="0" 311 + id="Arrow2Mend-8-3-3" 312 + style="overflow:visible" 313 + inkscape:isstock="true"> 314 + <path 315 + inkscape:connector-curvature="0" 316 + id="path1200-9-6-56" 317 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 318 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 319 + transform="scale(-0.6)" /> 320 + </marker> 321 + <marker 322 + inkscape:stockid="Arrow2Mend" 323 + orient="auto" 324 + refY="0" 325 + refX="0" 326 + id="Arrow2Mend-8-0-2" 327 + style="overflow:visible" 328 + inkscape:isstock="true"> 329 + <path 330 + inkscape:connector-curvature="0" 331 + id="path1200-9-3-9" 332 + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 333 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 334 + transform="scale(-0.6)" /> 335 + </marker> 336 + </defs> 337 + <sodipodi:namedview 338 + id="base" 339 + pagecolor="#ffffff" 340 + bordercolor="#666666" 341 + borderopacity="1.0" 342 + inkscape:pageopacity="0.0" 343 + inkscape:pageshadow="2" 344 + inkscape:zoom="1.4" 345 + inkscape:cx="812.5" 346 + inkscape:cy="315" 347 + inkscape:document-units="mm" 348 + inkscape:current-layer="layer1" 349 + showgrid="false" 350 + inkscape:window-width="3840" 351 + inkscape:window-height="2083" 352 + inkscape:window-x="0" 353 + inkscape:window-y="0" 354 + inkscape:window-maximized="1" 355 + showguides="false" 356 + fit-margin-top="0" 357 + fit-margin-left="0" 358 + fit-margin-right="0" 359 + fit-margin-bottom="0" 360 + units="px" 361 + inkscape:snap-global="false" 362 + inkscape:showpageshadow="2" 363 + inkscape:pagecheckerboard="0" 364 + inkscape:deskcolor="#d1d1d1" /> 365 + <metadata 366 + id="metadata5"> 367 + <rdf:RDF> 368 + <cc:Work 369 + rdf:about=""> 370 + <dc:format>image/svg+xml</dc:format> 371 + <dc:type 372 + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 373 + </cc:Work> 374 + </rdf:RDF> 375 + </metadata> 376 + <g 377 + inkscape:label="Layer 1" 378 + inkscape:groupmode="layer" 379 + id="layer1" 380 + transform="translate(399.57097,11.171866)"> 381 + <text 382 + xml:space="preserve" 383 + style="font-style:normal;font-weight:normal;font-size:6.54816px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163704" 384 + x="-297.75696" 385 + y="109.44505" 386 + id="text1063" /> 387 + <path 388 + style="fill:#008000;stroke:#008000;stroke-width:0.463298;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.463298, 0.926596;stroke-dashoffset:0;stroke-opacity:1" 389 + d="m -120.41395,84.001461 h -9.04766" 390 + id="path1171-0-7" 391 + inkscape:connector-curvature="0" /> 392 + <path 393 + style="fill:none;stroke:#ff0000;stroke-width:0.982225;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.982225, 1.96445;stroke-dashoffset:0;stroke-opacity:1" 394 + d="m -129.96274,90.649221 h 8.66407" 395 + id="path1171-7-1-3-8" 396 + inkscape:connector-curvature="0" /> 397 + <path 398 + style="fill:none;stroke:#3771c8;stroke-width:0.745037;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" 399 + d="m -121.33167,97.283841 h -7.91265" 400 + id="path7149-3-7-8" 401 + inkscape:connector-curvature="0" /> 402 + <text 403 + xml:space="preserve" 404 + style="font-style:normal;font-weight:normal;font-size:6.54816px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163704" 405 + x="-115.55721" 406 + y="85.330681" 407 + id="text12079"><tspan 408 + sodipodi:role="line" 409 + id="tspan12077" 410 + x="-115.55721" 411 + y="85.330681" 412 + style="font-size:4.80199px;stroke-width:0.163704">Board/Platform</tspan></text> 413 + <text 414 + xml:space="preserve" 415 + style="font-style:normal;font-weight:normal;font-size:6.54816px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163704" 416 + x="-115.75885" 417 + y="92.435066" 418 + id="text12079-3"><tspan 419 + sodipodi:role="line" 420 + id="tspan12077-1" 421 + x="-115.75885" 422 + y="92.435066" 423 + style="font-size:4.80199px;stroke-width:0.163704">SoC</tspan></text> 424 + <text 425 + xml:space="preserve" 426 + style="font-style:normal;font-weight:normal;font-size:6.54816px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163704" 427 + x="-115.6041" 428 + y="98.608604" 429 + id="text12079-3-4"><tspan 430 + sodipodi:role="line" 431 + id="tspan12077-1-9" 432 + x="-115.6041" 433 + y="98.608604" 434 + style="font-size:4.80199px;stroke-width:0.163704">Component</tspan></text> 435 + <text 436 + xml:space="preserve" 437 + style="font-style:normal;font-weight:normal;font-size:3.175px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" 438 + x="-368.54205" 439 + y="92.633011" 440 + id="text1010-5"><tspan 441 + sodipodi:role="line" 442 + x="-368.54205" 443 + y="92.633011" 444 + style="font-size:6.35px;text-align:center;text-anchor:middle;stroke-width:0.264583" 445 + id="tspan1057">DRAM</tspan></text> 446 + <g 447 + id="g730" 448 + transform="translate(6.9386906,-2.5203356)"> 449 + <text 450 + id="text838-5-2-6-2" 451 + y="32.372173" 452 + x="-372.97867" 453 + style="font-style:normal;font-weight:normal;font-size:6.54814px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163704" 454 + xml:space="preserve"><tspan 455 + id="tspan936-1-2-3" 456 + style="text-align:center;text-anchor:middle;stroke-width:0.163704" 457 + y="32.372173" 458 + x="-372.97867" 459 + sodipodi:role="line">dc_plane</tspan></text> 460 + <rect 461 + ry="6.9139691e-07" 462 + y="18.717371" 463 + x="-390.50565" 464 + height="23.904575" 465 + width="35.080177" 466 + id="rect834-5-2-6-75" 467 + style="fill:none;stroke:#000000;stroke-width:0.561714;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 468 + </g> 469 + <g 470 + id="g738" 471 + transform="translate(6.9386906,31.346346)"> 472 + <text 473 + id="text734" 474 + y="32.372173" 475 + x="-372.97867" 476 + style="font-style:normal;font-weight:normal;font-size:6.54814px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163704" 477 + xml:space="preserve"><tspan 478 + id="tspan732" 479 + style="text-align:center;text-anchor:middle;stroke-width:0.163704" 480 + y="32.372173" 481 + x="-372.97867" 482 + sodipodi:role="line">dc_plane</tspan></text> 483 + <rect 484 + ry="6.9139691e-07" 485 + y="18.717371" 486 + x="-390.50565" 487 + height="23.904575" 488 + width="35.080177" 489 + id="rect736" 490 + style="fill:none;stroke:#000000;stroke-width:0.561714;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 491 + </g> 492 + <rect 493 + ry="2.1256196e-06" 494 + y="8.5983658" 495 + x="-389.18051" 496 + height="73.491852" 497 + width="46.307304" 498 + id="rect744" 499 + style="fill:none;stroke:#3771c8;stroke-width:1.13159;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 500 + <g 501 + id="g757" 502 + transform="translate(-19.949528,-8.6078171)"> 503 + <text 504 + id="text600" 505 + y="56.289795" 506 + x="-256.91336" 507 + style="font-style:normal;font-weight:normal;font-size:6.54814px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163704" 508 + xml:space="preserve"><tspan 509 + id="tspan598" 510 + style="text-align:center;text-anchor:middle;stroke-width:0.163704" 511 + y="56.289795" 512 + x="-256.91336" 513 + sodipodi:role="line">DC</tspan></text> 514 + <rect 515 + ry="1.7458606e-06" 516 + y="23.771139" 517 + x="-289.21854" 518 + height="60.361938" 519 + width="65.042557" 520 + id="rect602" 521 + style="fill:none;stroke:#000000;stroke-width:1.21541;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 522 + </g> 523 + <rect 524 + ry="2.3633565e-06" 525 + y="4.4885707" 526 + x="-316.43292" 527 + height="81.711441" 528 + width="79.57225" 529 + id="rect787" 530 + style="fill:none;stroke:#3771c8;stroke-width:1.5641;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 531 + <g 532 + id="g765" 533 + transform="translate(6.5577393,-7.020317)"> 534 + <text 535 + id="text608" 536 + y="31.942825" 537 + x="-189.71797" 538 + style="font-style:normal;font-weight:normal;font-size:6.54814px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163704" 539 + xml:space="preserve"><tspan 540 + id="tspan606" 541 + style="text-align:center;text-anchor:middle;stroke-width:0.163704" 542 + y="31.942825" 543 + x="-189.71797" 544 + sodipodi:role="line">dc_link</tspan></text> 545 + <rect 546 + ry="6.8036792e-07" 547 + y="18.197111" 548 + x="-211.99069" 549 + height="23.523254" 550 + width="44.846642" 551 + id="rect610" 552 + style="fill:none;stroke:#000000;stroke-width:0.630025;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 553 + </g> 554 + <rect 555 + ry="1.0582555e-06" 556 + y="4.3160448" 557 + x="-210.69141" 558 + height="36.588463" 559 + width="55.543594" 560 + id="rect794" 561 + style="fill:none;stroke:#3771c8;stroke-width:0.874443;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 562 + <g 563 + id="g781" 564 + transform="translate(6.5577393,37.542802)"> 565 + <text 566 + id="text777" 567 + y="31.942825" 568 + x="-189.71797" 569 + style="font-style:normal;font-weight:normal;font-size:6.54814px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163704" 570 + xml:space="preserve"><tspan 571 + id="tspan775" 572 + style="text-align:center;text-anchor:middle;stroke-width:0.163704" 573 + y="31.942825" 574 + x="-189.71797" 575 + sodipodi:role="line">dc_link</tspan></text> 576 + <rect 577 + ry="6.8036792e-07" 578 + y="18.197111" 579 + x="-211.99069" 580 + height="23.523254" 581 + width="44.846642" 582 + id="rect779" 583 + style="fill:none;stroke:#000000;stroke-width:0.630025;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 584 + </g> 585 + <rect 586 + ry="1.0582555e-06" 587 + y="50.466679" 588 + x="-210.69141" 589 + height="36.588463" 590 + width="55.543594" 591 + id="rect796" 592 + style="fill:none;stroke:#3771c8;stroke-width:0.874443;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 593 + <g 594 + id="g2151" 595 + transform="translate(2.1659807,-25.895798)"> 596 + <rect 597 + ry="9.2671934e-07" 598 + y="29.395185" 599 + x="-132.25786" 600 + height="32.040688" 601 + width="44.742229" 602 + id="rect618" 603 + style="fill:none;stroke:#3771c8;stroke-width:0.734435;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 604 + <g 605 + id="g838" 606 + transform="translate(1.9073486e-6,0.26687336)"> 607 + <text 608 + id="text616" 609 + y="47.132744" 610 + x="-110.03735" 611 + style="font-style:normal;font-weight:normal;font-size:6.54814px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163704" 612 + xml:space="preserve"><tspan 613 + id="tspan614" 614 + style="text-align:center;text-anchor:middle;stroke-width:0.163704" 615 + y="47.132744" 616 + x="-110.03735" 617 + sodipodi:role="line">dc_link</tspan></text> 618 + <rect 619 + ry="5.7260945e-07" 620 + y="35.249866" 621 + x="-126.21788" 622 + height="19.797579" 623 + width="32.66227" 624 + id="rect833" 625 + style="fill:none;stroke:#000000;stroke-width:0.493257;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 626 + </g> 627 + </g> 628 + <rect 629 + ry="3.6076738e-06" 630 + y="-9.4559708" 631 + x="-397.85507" 632 + height="124.73286" 633 + width="250.94243" 634 + id="rect1307" 635 + style="fill:none;stroke:#008000;stroke-width:3.43179;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6.86358, 3.43179;stroke-dashoffset:0" /> 636 + <rect 637 + ry="2.9172609e-06" 638 + y="-4.5401988" 639 + x="-393.52301" 640 + height="100.8623" 641 + width="174.14117" 642 + id="rect1990" 643 + style="fill:none;stroke:#ff0000;stroke-width:2.57074;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:2.57074, 5.14148;stroke-dashoffset:0" /> 644 + <path 645 + style="fill:none;stroke:#aa00d4;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" 646 + d="m -317.69814,47.452094 h -23.80954" 647 + id="path2142" /> 648 + <path 649 + style="fill:none;stroke:#aa00d4;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" 650 + d="m -130.71642,19.101665 h -23.80954" 651 + id="path2144" /> 652 + <g 653 + aria-label="}" 654 + transform="rotate(180,-59.876965,-0.22738225)" 655 + style="font-style:normal;font-weight:normal;font-size:3.175px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#aa00d4;fill-opacity:1;stroke:none;stroke-width:0.264583" 656 + id="text1003-5"> 657 + <path 658 + d="m 92.00239,-21.748413 h 0.86816 c 0,0 15.81267,-0.177767 16.15994,-0.5333 0.35553,-0.355534 1.10026,-1.124479 1.10026,-2.306836 v -20.048953 c 0,-1.289844 0.18603,-2.228288 0.5581,-2.815332 0.37207,-0.587044 0.45004,-0.992187 1.36781,-1.215429 -0.91777,-0.206706 -0.99574,-0.603581 -1.36781,-1.190625 -0.37207,-0.587045 -0.5581,-1.529623 -0.5581,-2.827735 v -19.913761 c 0,-1.174088 -0.74473,-1.938899 -1.10026,-2.294433 -0.34727,-0.363802 -15.00239,-0.545703 -16.15994,-0.545703 h -0.86816 v -1.773536 h 0.78134 c 2.05879,0 17.33403,0.305924 18.02029,0.917774 0.69453,0.60358 1.0418,1.81901 1.0418,3.646289 v 19.814542 c 0,1.231966 0.22324,2.087728 0.66973,2.567285 0.44648,0.471289 1.25677,0.706934 2.43086,0.706934 h 0.76894 v 1.773535 h -0.76894 c -1.17409,0 -1.98438,0.239778 -2.43086,0.719336 -0.44649,0.479557 -0.66973,1.343587 -0.66973,2.59209 v 19.937331 c 0,1.827279 -0.34727,3.046842 -1.0418,3.658691 -0.68626,0.611849 -15.9615,0.917774 -18.02029,0.917774 h -0.78134 z" 659 + style="font-size:25.4px;fill:#aa00d4;stroke-width:0.264583" 660 + id="path1005-3" 661 + inkscape:connector-curvature="0" 662 + sodipodi:nodetypes="cccsscccsscsccscsscsccscsscscc" /> 663 + </g> 664 + <text 665 + xml:space="preserve" 666 + style="font-style:normal;font-weight:normal;font-size:3.175px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" 667 + x="-275.85803" 668 + y="92.633011" 669 + id="text2157"><tspan 670 + sodipodi:role="line" 671 + x="-275.85803" 672 + y="92.633011" 673 + style="font-size:6.35px;text-align:center;text-anchor:middle;stroke-width:0.264583" 674 + id="tspan2155">DCN</tspan></text> 675 + <text 676 + xml:space="preserve" 677 + style="font-style:normal;font-weight:normal;font-size:3.175px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" 678 + x="-279.29822" 679 + y="110.19857" 680 + id="text3141"><tspan 681 + sodipodi:role="line" 682 + x="-279.29822" 683 + y="110.19857" 684 + style="font-weight:bold;font-size:6.35px;text-align:center;text-anchor:middle;stroke-width:0.264583" 685 + id="tspan3139">SoC</tspan></text> 686 + <text 687 + xml:space="preserve" 688 + style="font-style:normal;font-weight:normal;font-size:3.175px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" 689 + x="-275.85803" 690 + y="123.8538" 691 + id="text3375"><tspan 692 + sodipodi:role="line" 693 + x="-275.85803" 694 + y="123.8538" 695 + style="font-size:6.35px;text-align:center;text-anchor:middle;stroke-width:0.264583" 696 + id="tspan3373">Board/Platform</tspan></text> 697 + <text 698 + xml:space="preserve" 699 + style="font-style:normal;font-weight:normal;font-size:3.175px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" 700 + x="-107.57491" 701 + y="42.939579" 702 + id="text3379"><tspan 703 + sodipodi:role="line" 704 + x="-107.57491" 705 + y="42.939579" 706 + style="font-size:6.35px;text-align:center;text-anchor:middle;stroke-width:0.264583" 707 + id="tspan3377">Display</tspan></text> 708 + <text 709 + xml:space="preserve" 710 + style="font-style:normal;font-weight:normal;font-size:3.175px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" 711 + x="-182.71582" 712 + y="46.643749" 713 + id="text3383"><tspan 714 + sodipodi:role="line" 715 + x="-182.71582" 716 + y="46.643749" 717 + style="font-size:6.35px;text-align:center;text-anchor:middle;stroke-width:0.264583" 718 + id="tspan3381">Connector</tspan></text> 719 + <text 720 + xml:space="preserve" 721 + style="font-style:normal;font-weight:normal;font-size:3.175px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" 722 + x="-182.71582" 723 + y="93.210457" 724 + id="text3387"><tspan 725 + sodipodi:role="line" 726 + x="-182.71582" 727 + y="93.210457" 728 + style="font-size:6.35px;text-align:center;text-anchor:middle;stroke-width:0.264583" 729 + id="tspan3385">Connector</tspan></text> 730 + </g> 731 + </svg>
+732
Documentation/gpu/amdgpu/display/dc-components.svg
··· 1 + <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 + <!-- Created with Inkscape (http://www.inkscape.org/) --> 3 + 4 + <svg 5 + width="533.42053" 6 + height="631.18573" 7 + viewBox="0 0 141.13418 167.00122" 8 + version="1.1" 9 + id="svg8" 10 + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" 11 + sodipodi:docname="dc-components.svg" 12 + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 13 + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 14 + xmlns="http://www.w3.org/2000/svg" 15 + xmlns:svg="http://www.w3.org/2000/svg" 16 + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 17 + xmlns:cc="http://creativecommons.org/ns#" 18 + xmlns:dc="http://purl.org/dc/elements/1.1/"> 19 + <defs 20 + id="defs2"> 21 + <marker 22 + inkscape:stockid="Arrow2Mend" 23 + orient="auto" 24 + refY="0" 25 + refX="0" 26 + id="marker8858" 27 + style="overflow:visible" 28 + inkscape:isstock="true"> 29 + <path 30 + id="path8616" 31 + style="fill:#aa00d4;fill-opacity:1;fill-rule:evenodd;stroke:#aa00d4;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 32 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 33 + transform="scale(-0.6)" 34 + inkscape:connector-curvature="0" /> 35 + </marker> 36 + <marker 37 + inkscape:stockid="Arrow2Send" 38 + orient="auto" 39 + refY="0" 40 + refX="0" 41 + id="Arrow2Send" 42 + style="overflow:visible" 43 + inkscape:isstock="true"> 44 + <path 45 + id="path8622" 46 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 47 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 48 + transform="matrix(-0.3,0,0,-0.3,0.69,0)" 49 + inkscape:connector-curvature="0" /> 50 + </marker> 51 + <marker 52 + inkscape:stockid="Arrow1Lend" 53 + orient="auto" 54 + refY="0" 55 + refX="0" 56 + id="Arrow1Lend" 57 + style="overflow:visible" 58 + inkscape:isstock="true"> 59 + <path 60 + id="path8592" 61 + d="M 0,0 5,-5 -12.5,0 5,5 Z" 62 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1" 63 + transform="matrix(-0.8,0,0,-0.8,-10,0)" 64 + inkscape:connector-curvature="0" /> 65 + </marker> 66 + <marker 67 + inkscape:stockid="Arrow2Lend" 68 + orient="auto" 69 + refY="0" 70 + refX="0" 71 + id="Arrow2Lend" 72 + style="overflow:visible" 73 + inkscape:isstock="true"> 74 + <path 75 + id="path8610" 76 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 77 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 78 + transform="matrix(-1.1,0,0,-1.1,-1.1,0)" 79 + inkscape:connector-curvature="0" /> 80 + </marker> 81 + <marker 82 + inkscape:stockid="Arrow2Mend" 83 + orient="auto" 84 + refY="0" 85 + refX="0" 86 + id="Arrow2Mend" 87 + style="overflow:visible" 88 + inkscape:isstock="true"> 89 + <path 90 + id="path1200" 91 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 92 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 93 + transform="scale(-0.6)" 94 + inkscape:connector-curvature="0" /> 95 + </marker> 96 + <marker 97 + inkscape:stockid="Arrow2Mend" 98 + orient="auto" 99 + refY="0" 100 + refX="0" 101 + id="Arrow2Mend-8" 102 + style="overflow:visible" 103 + inkscape:isstock="true"> 104 + <path 105 + inkscape:connector-curvature="0" 106 + id="path1200-9" 107 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 108 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 109 + transform="scale(-0.6)" /> 110 + </marker> 111 + <marker 112 + inkscape:stockid="Arrow2Mend" 113 + orient="auto" 114 + refY="0" 115 + refX="0" 116 + id="Arrow2Mend-8-3" 117 + style="overflow:visible" 118 + inkscape:isstock="true"> 119 + <path 120 + inkscape:connector-curvature="0" 121 + id="path1200-9-6" 122 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 123 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 124 + transform="scale(-0.6)" /> 125 + </marker> 126 + <marker 127 + inkscape:stockid="Arrow2Mend" 128 + orient="auto" 129 + refY="0" 130 + refX="0" 131 + id="Arrow2Mend-8-3-2" 132 + style="overflow:visible" 133 + inkscape:isstock="true"> 134 + <path 135 + inkscape:connector-curvature="0" 136 + id="path1200-9-6-9" 137 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 138 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 139 + transform="scale(-0.6)" /> 140 + </marker> 141 + <marker 142 + inkscape:stockid="Arrow2Mend" 143 + orient="auto" 144 + refY="0" 145 + refX="0" 146 + id="Arrow2Mend-8-3-2-1" 147 + style="overflow:visible" 148 + inkscape:isstock="true"> 149 + <path 150 + inkscape:connector-curvature="0" 151 + id="path1200-9-6-9-9" 152 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 153 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 154 + transform="scale(-0.6)" /> 155 + </marker> 156 + <marker 157 + inkscape:stockid="Arrow2Mend" 158 + orient="auto" 159 + refY="0" 160 + refX="0" 161 + id="Arrow2Mend-8-3-2-7" 162 + style="overflow:visible" 163 + inkscape:isstock="true"> 164 + <path 165 + inkscape:connector-curvature="0" 166 + id="path1200-9-6-9-8" 167 + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 168 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 169 + transform="scale(-0.6)" /> 170 + </marker> 171 + <marker 172 + inkscape:stockid="Arrow2Mend" 173 + orient="auto" 174 + refY="0" 175 + refX="0" 176 + id="Arrow2Mend-8-3-4" 177 + style="overflow:visible" 178 + inkscape:isstock="true"> 179 + <path 180 + inkscape:connector-curvature="0" 181 + id="path1200-9-6-5" 182 + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 183 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 184 + transform="scale(-0.6)" /> 185 + </marker> 186 + <marker 187 + inkscape:stockid="Arrow2Mend" 188 + orient="auto" 189 + refY="0" 190 + refX="0" 191 + id="Arrow2Mend-8-0" 192 + style="overflow:visible" 193 + inkscape:isstock="true"> 194 + <path 195 + inkscape:connector-curvature="0" 196 + id="path1200-9-3" 197 + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 198 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 199 + transform="scale(-0.6)" /> 200 + </marker> 201 + <marker 202 + inkscape:stockid="Arrow2Mend" 203 + orient="auto" 204 + refY="0" 205 + refX="0" 206 + id="Arrow2Mend-6" 207 + style="overflow:visible" 208 + inkscape:isstock="true"> 209 + <path 210 + inkscape:connector-curvature="0" 211 + id="path1200-1" 212 + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 213 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 214 + transform="scale(-0.6)" /> 215 + </marker> 216 + <marker 217 + inkscape:stockid="Arrow2Mend" 218 + orient="auto" 219 + refY="0" 220 + refX="0" 221 + id="Arrow2Mend-8-3-2-6" 222 + style="overflow:visible" 223 + inkscape:isstock="true"> 224 + <path 225 + inkscape:connector-curvature="0" 226 + id="path1200-9-6-9-1" 227 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 228 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 229 + transform="scale(-0.6)" /> 230 + </marker> 231 + <marker 232 + inkscape:stockid="Arrow2Mend" 233 + orient="auto" 234 + refY="0" 235 + refX="0" 236 + id="Arrow2Mend-8-0-7" 237 + style="overflow:visible" 238 + inkscape:isstock="true"> 239 + <path 240 + inkscape:connector-curvature="0" 241 + id="path1200-9-3-4" 242 + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 243 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 244 + transform="scale(-0.6)" /> 245 + </marker> 246 + <marker 247 + inkscape:stockid="Arrow2Mend" 248 + orient="auto" 249 + refY="0" 250 + refX="0" 251 + id="Arrow2Mend-6-3" 252 + style="overflow:visible" 253 + inkscape:isstock="true"> 254 + <path 255 + inkscape:connector-curvature="0" 256 + id="path1200-1-0" 257 + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 258 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 259 + transform="scale(-0.6)" /> 260 + </marker> 261 + <marker 262 + inkscape:stockid="Arrow2Mend" 263 + orient="auto" 264 + refY="0" 265 + refX="0" 266 + id="Arrow2Mend-8-3-2-8" 267 + style="overflow:visible" 268 + inkscape:isstock="true"> 269 + <path 270 + inkscape:connector-curvature="0" 271 + id="path1200-9-6-9-6" 272 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 273 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 274 + transform="scale(-0.6)" /> 275 + </marker> 276 + <marker 277 + inkscape:stockid="Arrow2Mend" 278 + orient="auto" 279 + refY="0" 280 + refX="0" 281 + id="Arrow2Mend-3" 282 + style="overflow:visible" 283 + inkscape:isstock="true"> 284 + <path 285 + id="path1200-6" 286 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 287 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 288 + transform="scale(-0.6)" 289 + inkscape:connector-curvature="0" /> 290 + </marker> 291 + <marker 292 + inkscape:stockid="Arrow2Mend" 293 + orient="auto" 294 + refY="0" 295 + refX="0" 296 + id="marker8858-3" 297 + style="overflow:visible" 298 + inkscape:isstock="true"> 299 + <path 300 + id="path8616-5" 301 + style="fill:#00ffcc;fill-opacity:1;fill-rule:evenodd;stroke:#00ffcc;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 302 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 303 + transform="scale(-0.6)" 304 + inkscape:connector-curvature="0" /> 305 + </marker> 306 + <marker 307 + inkscape:stockid="Arrow2Mend" 308 + orient="auto" 309 + refY="0" 310 + refX="0" 311 + id="Arrow2Mend-8-3-3" 312 + style="overflow:visible" 313 + inkscape:isstock="true"> 314 + <path 315 + inkscape:connector-curvature="0" 316 + id="path1200-9-6-56" 317 + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 318 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 319 + transform="scale(-0.6)" /> 320 + </marker> 321 + <marker 322 + inkscape:stockid="Arrow2Mend" 323 + orient="auto" 324 + refY="0" 325 + refX="0" 326 + id="Arrow2Mend-8-0-2" 327 + style="overflow:visible" 328 + inkscape:isstock="true"> 329 + <path 330 + inkscape:connector-curvature="0" 331 + id="path1200-9-3-9" 332 + style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#008000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 333 + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" 334 + transform="scale(-0.6)" /> 335 + </marker> 336 + </defs> 337 + <sodipodi:namedview 338 + id="base" 339 + pagecolor="#ffffff" 340 + bordercolor="#666666" 341 + borderopacity="1.0" 342 + inkscape:pageopacity="0.0" 343 + inkscape:pageshadow="2" 344 + inkscape:zoom="1.4" 345 + inkscape:cx="482.85714" 346 + inkscape:cy="470" 347 + inkscape:document-units="mm" 348 + inkscape:current-layer="layer1" 349 + showgrid="false" 350 + inkscape:window-width="3840" 351 + inkscape:window-height="2083" 352 + inkscape:window-x="0" 353 + inkscape:window-y="0" 354 + inkscape:window-maximized="1" 355 + showguides="false" 356 + fit-margin-top="0" 357 + fit-margin-left="0" 358 + fit-margin-right="0" 359 + fit-margin-bottom="0" 360 + units="px" 361 + inkscape:snap-global="false" 362 + inkscape:showpageshadow="2" 363 + inkscape:pagecheckerboard="0" 364 + inkscape:deskcolor="#d1d1d1" /> 365 + <metadata 366 + id="metadata5"> 367 + <rdf:RDF> 368 + <cc:Work 369 + rdf:about=""> 370 + <dc:format>image/svg+xml</dc:format> 371 + <dc:type 372 + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 373 + </cc:Work> 374 + </rdf:RDF> 375 + </metadata> 376 + <g 377 + inkscape:label="Layer 1" 378 + inkscape:groupmode="layer" 379 + id="layer1" 380 + transform="translate(384.1992,26.608359)"> 381 + <text 382 + xml:space="preserve" 383 + style="font-style:normal;font-weight:normal;font-size:4.0511px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.101278" 384 + x="-330.72058" 385 + y="57.56284" 386 + id="text1063" /> 387 + <rect 388 + ry="4.7572436e-07" 389 + y="-26.142614" 390 + x="-383.73346" 391 + height="16.447845" 392 + width="140.2027" 393 + id="rect744" 394 + style="fill:none;stroke:#3771c8;stroke-width:0.93149;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 395 + <rect 396 + ry="1.0800992e-06" 397 + y="-5.1415901" 398 + x="-383.27942" 399 + height="37.343693" 400 + width="40.239418" 401 + id="rect602" 402 + style="fill:none;stroke:#000000;stroke-width:0.751929;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 403 + <text 404 + xml:space="preserve" 405 + style="font-style:normal;font-weight:normal;font-size:10.476px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163688" 406 + x="-363.2121" 407 + y="17.270189" 408 + id="text3379"><tspan 409 + sodipodi:role="line" 410 + x="-363.2121" 411 + y="17.270189" 412 + style="font-size:10.476px;text-align:center;text-anchor:middle;stroke-width:0.163688" 413 + id="tspan3377">Core</tspan></text> 414 + <rect 415 + ry="1.0800992e-06" 416 + y="-5.1415901" 417 + x="-331.06259" 418 + height="37.343693" 419 + width="40.239418" 420 + id="rect526" 421 + style="fill:none;stroke:#000000;stroke-width:0.751929;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 422 + <rect 423 + ry="4.4701343e-07" 424 + y="-5.2654457" 425 + x="-286.88507" 426 + height="15.455184" 427 + width="43.167706" 428 + id="rect528" 429 + style="fill:none;stroke:#000000;stroke-width:0.501024;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 430 + <rect 431 + ry="4.4701343e-07" 432 + y="15.68337" 433 + x="-286.88507" 434 + height="15.455184" 435 + width="43.167706" 436 + id="rect530" 437 + style="fill:none;stroke:#000000;stroke-width:0.501024;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 438 + <rect 439 + ry="4.4701343e-07" 440 + y="36.959518" 441 + x="-286.88507" 442 + height="15.455184" 443 + width="43.167706" 444 + id="rect532" 445 + style="fill:none;stroke:#000000;stroke-width:0.501024;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 446 + <rect 447 + ry="1.6213723e-06" 448 + y="60.089264" 449 + x="-286.65378" 450 + height="56.057846" 451 + width="42.705132" 452 + id="rect534" 453 + style="fill:none;stroke:#000000;stroke-width:0.949072;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 454 + <rect 455 + ry="4.4031123e-07" 456 + y="37.077362" 457 + x="-382.96875" 458 + height="15.223459" 459 + width="92.225845" 460 + id="rect536" 461 + style="fill:none;stroke:#000000;stroke-width:0.726817;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 462 + <rect 463 + ry="4.4031123e-07" 464 + y="59.989784" 465 + x="-382.96875" 466 + height="15.223459" 467 + width="92.225845" 468 + id="rect538" 469 + style="fill:none;stroke:#000000;stroke-width:0.726817;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 470 + <rect 471 + ry="4.4031123e-07" 472 + y="80.283493" 473 + x="-382.96875" 474 + height="15.223459" 475 + width="92.225845" 476 + id="rect540" 477 + style="fill:none;stroke:#000000;stroke-width:0.726817;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 478 + <rect 479 + ry="4.3543034e-07" 480 + y="124.89404" 481 + x="-382.88803" 482 + height="15.054706" 483 + width="139.2859" 484 + id="rect554" 485 + style="fill:none;stroke:#000000;stroke-width:0.888245;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 486 + <text 487 + xml:space="preserve" 488 + style="font-style:normal;font-weight:normal;font-size:8.73001px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163688" 489 + x="-311.29712" 490 + y="-16.144287" 491 + id="text660"><tspan 492 + sodipodi:role="line" 493 + x="-311.29712" 494 + y="-16.144287" 495 + style="font-size:8.73001px;text-align:center;text-anchor:middle;stroke-width:0.163688" 496 + id="tspan658">Display Core API (dc/dc.h)</tspan></text> 497 + <text 498 + xml:space="preserve" 499 + style="font-style:normal;font-weight:normal;font-size:10.476px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163688" 500 + x="-311.40384" 501 + y="17.511137" 502 + id="text664"><tspan 503 + sodipodi:role="line" 504 + x="-311.40384" 505 + y="17.511137" 506 + style="font-size:10.476px;text-align:center;text-anchor:middle;stroke-width:0.163688" 507 + id="tspan662">Link</tspan></text> 508 + <text 509 + xml:space="preserve" 510 + style="font-style:normal;font-weight:normal;font-size:4.36501px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163688" 511 + x="-336.97806" 512 + y="43.095863" 513 + id="text668"><tspan 514 + sodipodi:role="line" 515 + x="-336.97806" 516 + y="43.095863" 517 + style="font-size:4.36501px;text-align:center;text-anchor:middle;stroke-width:0.163688" 518 + id="tspan666">Hardware Sequencer API</tspan><tspan 519 + sodipodi:role="line" 520 + x="-336.97806" 521 + y="48.552124" 522 + style="font-size:4.36501px;text-align:center;text-anchor:middle;stroke-width:0.163688" 523 + id="tspan670">(dc/inc/hw_sequence.h)</tspan></text> 524 + <text 525 + xml:space="preserve" 526 + style="font-style:normal;font-weight:normal;font-size:4.36501px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163688" 527 + x="-337.03479" 528 + y="68.73642" 529 + id="text750"><tspan 530 + sodipodi:role="line" 531 + x="-337.03479" 532 + y="68.73642" 533 + style="font-size:4.36501px;text-align:center;text-anchor:middle;stroke-width:0.163688" 534 + id="tspan748">Hardware Sequencer</tspan></text> 535 + <text 536 + xml:space="preserve" 537 + style="font-style:normal;font-weight:normal;font-size:4.36501px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163688" 538 + x="-336.98022" 539 + y="89.209091" 540 + id="text756"><tspan 541 + sodipodi:role="line" 542 + x="-336.98022" 543 + y="89.209091" 544 + style="font-size:4.36501px;text-align:center;text-anchor:middle;stroke-width:0.163688" 545 + id="tspan754">Block Level API (dc/inc/hw)</tspan></text> 546 + <g 547 + id="g1543" 548 + transform="matrix(0.61866289,0,0,0.61866289,-146.50941,-10.146755)"> 549 + <rect 550 + ry="7.3007396e-07" 551 + y="180.25436" 552 + x="-382.5336" 553 + height="25.241808" 554 + width="29.376135" 555 + id="rect542" 556 + style="fill:none;stroke:#000000;stroke-width:0.528201;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 557 + <text 558 + xml:space="preserve" 559 + style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" 560 + x="-367.99722" 561 + y="195.3941" 562 + id="text838"><tspan 563 + sodipodi:role="line" 564 + x="-367.99722" 565 + y="195.3941" 566 + style="font-size:7.05556px;text-align:center;text-anchor:middle;stroke-width:0.264583" 567 + id="tspan836">DCHUB</tspan></text> 568 + </g> 569 + <a 570 + id="a1538" 571 + transform="matrix(0.61866289,0,0,0.61866289,-154.037,-10.146755)"> 572 + <rect 573 + ry="7.3027257e-07" 574 + y="180.25093" 575 + x="-339.82092" 576 + height="25.248676" 577 + width="28.609333" 578 + id="rect546" 579 + style="fill:none;stroke:#000000;stroke-width:0.521332;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 580 + <text 581 + xml:space="preserve" 582 + style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" 583 + x="-325.67853" 584 + y="195.35883" 585 + id="text842"><tspan 586 + sodipodi:role="line" 587 + x="-325.67853" 588 + y="195.35883" 589 + style="font-size:7.05556px;text-align:center;text-anchor:middle;stroke-width:0.264583" 590 + id="tspan840">HUBP</tspan></text> 591 + </a> 592 + <g 593 + id="g1533" 594 + transform="matrix(0.61866289,0,0,0.61866289,-154.69251,-10.146755)"> 595 + <rect 596 + ry="7.3027257e-07" 597 + y="180.25093" 598 + x="-308.59961" 599 + height="25.248676" 600 + width="28.609333" 601 + id="rect844" 602 + style="fill:none;stroke:#000000;stroke-width:0.521332;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 603 + <text 604 + xml:space="preserve" 605 + style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" 606 + x="-294.45721" 607 + y="195.3941" 608 + id="text848"><tspan 609 + sodipodi:role="line" 610 + x="-294.45721" 611 + y="195.3941" 612 + style="font-size:7.05556px;text-align:center;text-anchor:middle;stroke-width:0.264583" 613 + id="tspan846">DPP</tspan></text> 614 + </g> 615 + <g 616 + id="g1528" 617 + transform="matrix(0.61866289,0,0,0.61866289,-155.67539,-10.146755)"> 618 + <rect 619 + ry="7.3027257e-07" 620 + y="180.25093" 621 + x="-276.84912" 622 + height="25.248676" 623 + width="28.609333" 624 + id="rect850" 625 + style="fill:none;stroke:#000000;stroke-width:0.521332;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 626 + <text 627 + xml:space="preserve" 628 + style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" 629 + x="-262.77728" 630 + y="195.3941" 631 + id="text854"><tspan 632 + sodipodi:role="line" 633 + x="-262.77728" 634 + y="195.3941" 635 + style="font-size:7.05556px;text-align:center;text-anchor:middle;stroke-width:0.264583" 636 + id="tspan852">MPC</tspan></text> 637 + </g> 638 + <g 639 + id="g1523" 640 + transform="matrix(0.61866289,0,0,0.61866289,-157.64019,-10.146755)"> 641 + <rect 642 + ry="7.3027257e-07" 643 + y="180.25093" 644 + x="-243.51147" 645 + height="25.248676" 646 + width="28.609333" 647 + id="rect856" 648 + style="fill:none;stroke:#000000;stroke-width:0.521332;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" /> 649 + <text 650 + xml:space="preserve" 651 + style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" 652 + x="-229.2068" 653 + y="193.25275" 654 + id="text860"><tspan 655 + sodipodi:role="line" 656 + x="-229.2068" 657 + y="193.25275" 658 + style="font-size:7.05556px;text-align:center;text-anchor:middle;stroke-width:0.264583" 659 + id="tspan858">...</tspan></text> 660 + </g> 661 + <text 662 + xml:space="preserve" 663 + style="font-style:normal;font-weight:normal;font-size:4.36501px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163688" 664 + x="-313.35858" 665 + y="133.55629" 666 + id="text951"><tspan 667 + sodipodi:role="line" 668 + x="-313.35858" 669 + y="133.55629" 670 + style="font-size:4.36501px;text-align:center;text-anchor:middle;stroke-width:0.163688" 671 + id="tspan949">Hardware Registers</tspan></text> 672 + <text 673 + xml:space="preserve" 674 + style="font-style:normal;font-weight:normal;font-size:4.36501px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163688" 675 + x="-265.39505" 676 + y="86.926537" 677 + id="text1044"><tspan 678 + sodipodi:role="line" 679 + x="-265.39505" 680 + y="86.926537" 681 + style="font-size:4.36501px;text-align:center;text-anchor:middle;stroke-width:0.163688" 682 + id="tspan1042">DMUB</tspan><tspan 683 + sodipodi:role="line" 684 + x="-265.39505" 685 + y="92.382797" 686 + style="font-size:4.36501px;text-align:center;text-anchor:middle;stroke-width:0.163688" 687 + id="tspan1046">Block</tspan></text> 688 + <text 689 + xml:space="preserve" 690 + style="font-style:normal;font-weight:normal;font-size:4.36501px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163688" 691 + x="-265.42343" 692 + y="43.272846" 693 + id="text1052"><tspan 694 + sodipodi:role="line" 695 + x="-265.42343" 696 + y="43.272846" 697 + style="font-size:4.36501px;text-align:center;text-anchor:middle;stroke-width:0.163688" 698 + id="tspan1048">DMUB Hardware API</tspan><tspan 699 + sodipodi:role="line" 700 + x="-265.42343" 701 + y="48.729107" 702 + style="font-size:4.36501px;text-align:center;text-anchor:middle;stroke-width:0.163688" 703 + id="tspan1050">(dmub/dmub_srv.h)</tspan></text> 704 + <text 705 + xml:space="preserve" 706 + style="font-style:normal;font-weight:normal;font-size:4.36501px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163688" 707 + x="-265.40161" 708 + y="24.997644" 709 + id="text1058"><tspan 710 + sodipodi:role="line" 711 + x="-265.40161" 712 + y="24.997644" 713 + style="font-size:4.36501px;text-align:center;text-anchor:middle;stroke-width:0.163688" 714 + id="tspan1056">DMUB Service</tspan></text> 715 + <text 716 + xml:space="preserve" 717 + style="font-style:normal;font-weight:normal;font-size:4.36501px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.163688" 718 + x="-265.30121" 719 + y="0.99768418" 720 + id="text1064"><tspan 721 + sodipodi:role="line" 722 + x="-265.30121" 723 + y="0.99768418" 724 + style="font-size:4.36501px;text-align:center;text-anchor:middle;stroke-width:0.163688" 725 + id="tspan1062">DMUB Service API</tspan><tspan 726 + sodipodi:role="line" 727 + x="-265.30121" 728 + y="6.4539466" 729 + style="font-size:4.36501px;text-align:center;text-anchor:middle;stroke-width:0.163688" 730 + id="tspan1066">(dc/dc_dmub_srv.h)</tspan></text> 731 + </g> 732 + </svg>
+2
Documentation/gpu/amdgpu/display/dcn-blocks.rst
··· 1 + .. _dcn_blocks: 2 + 1 3 ========== 2 4 DCN Blocks 3 5 ==========
+2
Documentation/gpu/amdgpu/display/dcn-overview.rst
··· 1 + .. _dcn_overview: 2 + 1 3 ======================= 2 4 Display Core Next (DCN) 3 5 =======================
+1
Documentation/gpu/amdgpu/display/index.rst
··· 90 90 display-manager.rst 91 91 dcn-overview.rst 92 92 dcn-blocks.rst 93 + programming-model-dcn.rst 93 94 mpo-overview.rst 94 95 dc-debug.rst 95 96 display-contributing.rst
+162
Documentation/gpu/amdgpu/display/programming-model-dcn.rst
··· 1 + ==================== 2 + DC Programming Model 3 + ==================== 4 + 5 + In the :ref:`Display Core Next (DCN) <dcn_overview>` and :ref:`DCN Block 6 + <dcn_blocks>` pages, you learned about the hardware components and how they 7 + interact with each other. On this page, the focus is shifted to the display 8 + code architecture. Hence, it is reasonable to remind the reader that the code 9 + in DC is shared with other OSes; for this reason, DC provides a set of 10 + abstractions and operations to connect different APIs with the hardware 11 + configuration. See DC as a service available for a Display Manager (amdgpu_dm) 12 + to access and configure DCN/DCE hardware (DCE is also part of DC, but for 13 + simplicity's sake, this documentation only examines DCN). 14 + 15 + .. note:: 16 + For this page, we will use the term GPU to refers to dGPU and APU. 17 + 18 + Overview 19 + ======== 20 + 21 + From the display hardware perspective, it is plausible to expect that if a 22 + problem is well-defined, it will probably be implemented at the hardware level. 23 + On the other hand, when there are multiple ways of achieving something without 24 + a very well-defined scope, the solution is usually implemented as a policy at 25 + the DC level. In other words, some policies are defined in the DC core 26 + (resource management, power optimization, image quality, etc.), and the others 27 + implemented in hardware are enabled via DC configuration. 28 + 29 + In terms of hardware management, DCN has multiple instances of the same block 30 + (e.g., HUBP, DPP, MPC, etc), and during the driver execution, it might be 31 + necessary to use some of these instances. The core has policies in place for 32 + handling those instances. Regarding resource management, the DC objective is 33 + quite simple: minimize the hardware shuffle when the driver performs some 34 + actions. When the state changes from A to B, the transition is considered 35 + easier to maneuver if the hardware resource is still used for the same set of 36 + driver objects. Usually, adding and removing a resource to a `pipe_ctx` (more 37 + details below) is not a problem; however, moving a resource from one `pipe_ctx` 38 + to another should be avoided. 39 + 40 + Another area of influence for DC is power optimization, which has a myriad of 41 + arrangement possibilities. In some way, just displaying an image via DCN should 42 + be relatively straightforward; however, showing it with the best power 43 + footprint is more desirable, but it has many associated challenges. 44 + Unfortunately, there is no straight-forward analytic way to determine if a 45 + configuration is the best one for the context due to the enormous variety of 46 + variables related to this problem (e.g., many different DCN/DCE hardware 47 + versions, different displays configurations, etc.) for this reason DC 48 + implements a dedicated library for trying some configuration and verify if it 49 + is possible to support it or not. This type of policy is extremely complex to 50 + create and maintain, and amdgpu driver relies on Display Mode Library (DML) to 51 + generate the best decisions. 52 + 53 + In summary, DC must deal with the complexity of handling multiple scenarios and 54 + determine policies to manage them. All of the above information is conveyed to 55 + give the reader some idea about the complexity of driving a display from the 56 + driver's perspective. This page hopes to allow the reader to better navigate 57 + over the amdgpu display code. 58 + 59 + Display Driver Architecture Overview 60 + ==================================== 61 + 62 + The diagram below provides an overview of the display driver architecture; 63 + notice it illustrates the software layers adopted by DC: 64 + 65 + .. kernel-figure:: dc-components.svg 66 + 67 + The first layer of the diagram is the high-level DC API represented by the 68 + `dc.h` file; below it are two big blocks represented by Core and Link. Next is 69 + the hardware configuration block; the main file describing it is 70 + the`hw_sequencer.h`, where the implementation of the callbacks can be found in 71 + the hardware sequencer folder. Almost at the end, you can see the block level 72 + API (`dc/inc/hw`), which represents each DCN low-level block, such as HUBP, 73 + DPP, MPC, OPTC, etc. Notice on the left side of the diagram that we have a 74 + different set of layers representing the interaction with the DMUB 75 + microcontroller. 76 + 77 + Basic Objects 78 + ------------- 79 + 80 + The below diagram outlines the basic display objects. In particular, pay 81 + attention to the names in the boxes since they represent a data structure in 82 + the driver: 83 + 84 + .. kernel-figure:: dc-arch-overview.svg 85 + 86 + Let's start with the central block in the image, `dc`. The `dc` struct is 87 + initialized per GPU; for example, one GPU has one `dc` instance, two GPUs have 88 + two `dc` instances, and so forth. In other words we have one 'dc' per 'amdgpu' 89 + instance. In some ways, this object behaves like the `Singleton` pattern. 90 + 91 + After the `dc` block in the diagram, you can see the `dc_link` component, which 92 + is a low-level abstraction for the connector. One interesting aspect of the 93 + image is that connectors are not part of the DCN block; they are defined by the 94 + platform/board and not by the SoC. The `dc_link` struct is the high-level data 95 + container with information such as connected sinks, connection status, signal 96 + types, etc. After `dc_link`, there is the `dc_sink`, which is the object that 97 + represents the connected display. 98 + 99 + .. note:: 100 + For historical reasons, we used the name `dc_link`, which gives the 101 + wrong impression that this abstraction only deals with physical connections 102 + that the developer can easily manipulate. However, this also covers 103 + conections like eDP or cases where the output is connected to other devices. 104 + 105 + There are two structs that are not represented in the diagram since they were 106 + elaborated in the DCN overview page (check the DCN block diagram :ref:`Display 107 + Core Next (DCN) <dcn_overview>`); still, it is worth bringing back for this 108 + overview which is `dc_stream` and `dc_state`. The `dc_stream` stores many 109 + properties associated with the data transmission, but most importantly, it 110 + represents the data flow from the connector to the display. Next we have 111 + `dc_state`, which represents the logic state within the hardware at the moment; 112 + `dc_state` is composed of `dc_stream` and `dc_plane`. The `dc_stream` is the DC 113 + version of `drm_crtc` and represents the post-blending pipeline. 114 + 115 + Speaking of the `dc_plane` data structure (first part of the diagram), you can 116 + think about it as an abstraction similar to `drm_plane` that represents the 117 + pre-blending portion of the pipeline. This image was probably processed by GFX 118 + and is ready to be composited under a `dc_stream`. Normally, the driver may 119 + have one or more `dc_plane` connected to the same `dc_stream`, which defines a 120 + composition at the DC level. 121 + 122 + Basic Operations 123 + ---------------- 124 + 125 + Now that we have covered the basic objects, it is time to examine some of the 126 + basic hardware/software operations. Let's start with the `dc_create()` 127 + function, which directly works with the `dc` data struct; this function behaves 128 + like a constructor responsible for the basic software initialization and 129 + preparing for enabling other parts of the API. It is important to highlight 130 + that this operation does not touch any hardware configuration; it is only a 131 + software initialization. 132 + 133 + Next, we have the `dc_hardware_init()`, which also relies on the `dc` data 134 + struct. Its main function is to put the hardware in a valid state. It is worth 135 + highlighting that the hardware might initialize in an unknown state, and it is 136 + a requirement to put it in a valid state; this function has multiple callbacks 137 + for the hardware-specific initialization, whereas `dc_hardware_init` does the 138 + hardware initialization and is the first point where we touch hardware. 139 + 140 + The `dc_get_link_at_index` is an operation that depends on the `dc_link` data 141 + structure. This function retrieves and enumerates all the `dc_links` available 142 + on the device; this is required since this information is not part of the SoC 143 + definition but depends on the board configuration. As soon as the `dc_link` is 144 + initialized, it is useful to figure out if any of them are already connected to 145 + the display by using the `dc_link_detect()` function. After the driver figures 146 + out if any display is connected to the device, the challenging phase starts: 147 + configuring the monitor to show something. Nonetheless, dealing with the ideal 148 + configuration is not a DC task since this is the Display Manager (`amdgpu_dm`) 149 + responsibility which in turn is responsible for dealing with the atomic 150 + commits. The only interface DC provides to the configuration phase is the 151 + function `dc_validate_with_context` that receives the configuration information 152 + and, based on that, validates whether the hardware can support it or not. It is 153 + important to add that even if the display supports some specific configuration, 154 + it does not mean the DCN hardware can support it. 155 + 156 + After the DM and DC agree upon the configuration, the stream configuration 157 + phase starts. This task activates one or more `dc_stream` at this phase, and in 158 + the best-case scenario, you might be able to turn the display on with a black 159 + screen (it does not show anything yet since it does not have any plane 160 + associated with it). The final step would be to call the 161 + `dc_update_planes_and_stream,` which will add or remove planes. 162 +