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

Documentation/gpu: Add Multiplane Overlay doc

Multiple plane overlay is a feature supported by AMD hardware, but it
has specific details that deserve proper documentation. This commit
introduces a documentation that describes some of the features,
limitations, and use cases for this feature. Part of this documentation
came from some discussion in the public upstream [1][2].

[1]. https://lore.kernel.org/amd-gfx/3qY-QeukF_Q_MJeIXAuBjO4szbS4jRtqkTifXnbnN3bp88SxVodFQRpah3mIIVJq24DUkF6g0rOGdCmSqTvVxx9LCGEItmzLw8uWU44jtXE=@emersion.fr/
[2]. https://lore.kernel.org/amd-gfx/864e45d0-c14b-3b12-0f5b-9d26a9cb41bd@amd.com/

Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
Cc: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Cc: Hersen Wu <hersenxs.wu@amd.com>
Cc: Alex Hung <alex.hung@amd.com>
Cc: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Cc: Simon Ser <contact@emersion.fr>
Cc: Pekka Paalanen <pekka.paalanen@collabora.com>
Cc: Sean Paul <seanpaul@chromium.org>
Cc: Mark Yacoub <markyacoub@chromium.org>
Cc: Leo Li <sunpeng.li@amd.com>
Cc: Pierre-Loup <pgriffais@valvesoftware.com>
Cc: Michel Dänzer <michel.daenzer@mailbox.org>
Reviewed-by: Harry Wentland <Harry.Wentland@amd.com>
Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Rodrigo Siqueira and committed by
Alex Deucher
6c49df92 330d6da3

+1674
+1
Documentation/gpu/amdgpu/display/index.rst
··· 28 28 display-manager.rst 29 29 dc-debug.rst 30 30 dcn-overview.rst 31 + mpo-overview.rst 31 32 dc-glossary.rst
+435
Documentation/gpu/amdgpu/display/mpo-cursor.svg
··· 1 + <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 + <!-- Created with Inkscape (http://www.inkscape.org/) --> 3 + 4 + <svg 5 + xmlns:dc="http://purl.org/dc/elements/1.1/" 6 + xmlns:cc="http://creativecommons.org/ns#" 7 + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 8 + xmlns:svg="http://www.w3.org/2000/svg" 9 + xmlns="http://www.w3.org/2000/svg" 10 + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 11 + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 12 + width="160.5318mm" 13 + height="65.443306mm" 14 + viewBox="0 0 160.5318 65.443308" 15 + version="1.1" 16 + id="svg843" 17 + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" 18 + sodipodi:docname="mpo-cursor.svg"> 19 + <defs 20 + id="defs837"> 21 + <marker 22 + inkscape:stockid="Arrow1Send" 23 + orient="auto" 24 + refY="0" 25 + refX="0" 26 + id="Arrow1Send" 27 + style="overflow:visible" 28 + inkscape:isstock="true"> 29 + <path 30 + id="path1568" 31 + d="M 0,0 5,-5 -12.5,0 5,5 Z" 32 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" 33 + transform="matrix(-0.2,0,0,-0.2,-1.2,0)" 34 + inkscape:connector-curvature="0" /> 35 + </marker> 36 + <marker 37 + inkscape:stockid="Arrow1Mend" 38 + orient="auto" 39 + refY="0" 40 + refX="0" 41 + id="Arrow1Mend" 42 + style="overflow:visible" 43 + inkscape:isstock="true"> 44 + <path 45 + id="path1562" 46 + d="M 0,0 5,-5 -12.5,0 5,5 Z" 47 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" 48 + transform="matrix(-0.4,0,0,-0.4,-4,0)" 49 + inkscape:connector-curvature="0" /> 50 + </marker> 51 + <marker 52 + inkscape:stockid="Arrow2Mend" 53 + orient="auto" 54 + refY="0" 55 + refX="0" 56 + id="marker1837" 57 + style="overflow:visible" 58 + inkscape:isstock="true"> 59 + <path 60 + id="path1835" 61 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" 62 + 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" 63 + transform="scale(-0.6)" 64 + inkscape:connector-curvature="0" /> 65 + </marker> 66 + <marker 67 + inkscape:stockid="Arrow2Mend" 68 + orient="auto" 69 + refY="0" 70 + refX="0" 71 + id="Arrow2Mend" 72 + style="overflow:visible" 73 + inkscape:isstock="true"> 74 + <path 75 + id="path1580" 76 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;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="scale(-0.6)" 79 + inkscape:connector-curvature="0" /> 80 + </marker> 81 + <marker 82 + inkscape:stockid="Arrow1Send" 83 + orient="auto" 84 + refY="0" 85 + refX="0" 86 + id="Arrow1Send-7" 87 + style="overflow:visible" 88 + inkscape:isstock="true"> 89 + <path 90 + inkscape:connector-curvature="0" 91 + id="path1568-5" 92 + d="M 0,0 5,-5 -12.5,0 5,5 Z" 93 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" 94 + transform="matrix(-0.2,0,0,-0.2,-1.2,0)" /> 95 + </marker> 96 + <marker 97 + inkscape:stockid="Arrow1Send" 98 + orient="auto" 99 + refY="0" 100 + refX="0" 101 + id="Arrow1Send-7-2" 102 + style="overflow:visible" 103 + inkscape:isstock="true"> 104 + <path 105 + inkscape:connector-curvature="0" 106 + id="path1568-5-2" 107 + d="M 0,0 5,-5 -12.5,0 5,5 Z" 108 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" 109 + transform="matrix(-0.2,0,0,-0.2,-1.2,0)" /> 110 + </marker> 111 + <marker 112 + inkscape:stockid="Arrow1Send" 113 + orient="auto" 114 + refY="0" 115 + refX="0" 116 + id="Arrow1Send-9" 117 + style="overflow:visible" 118 + inkscape:isstock="true"> 119 + <path 120 + inkscape:connector-curvature="0" 121 + id="path1568-7" 122 + d="M 0,0 5,-5 -12.5,0 5,5 Z" 123 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" 124 + transform="matrix(-0.2,0,0,-0.2,-1.2,0)" /> 125 + </marker> 126 + <marker 127 + inkscape:stockid="Arrow1Send" 128 + orient="auto" 129 + refY="0" 130 + refX="0" 131 + id="Arrow1Send-9-6" 132 + style="overflow:visible" 133 + inkscape:isstock="true"> 134 + <path 135 + inkscape:connector-curvature="0" 136 + id="path1568-7-1" 137 + d="M 0,0 5,-5 -12.5,0 5,5 Z" 138 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" 139 + transform="matrix(-0.2,0,0,-0.2,-1.2,0)" /> 140 + </marker> 141 + <marker 142 + inkscape:stockid="Arrow1Send" 143 + orient="auto" 144 + refY="0" 145 + refX="0" 146 + id="Arrow1Send-9-6-9" 147 + style="overflow:visible" 148 + inkscape:isstock="true"> 149 + <path 150 + inkscape:connector-curvature="0" 151 + id="path1568-7-1-3" 152 + d="M 0,0 5,-5 -12.5,0 5,5 Z" 153 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" 154 + transform="matrix(-0.2,0,0,-0.2,-1.2,0)" /> 155 + </marker> 156 + </defs> 157 + <sodipodi:namedview 158 + id="base" 159 + pagecolor="#ffffff" 160 + bordercolor="#666666" 161 + borderopacity="1.0" 162 + inkscape:pageopacity="0.0" 163 + inkscape:pageshadow="2" 164 + inkscape:zoom="0.35" 165 + inkscape:cx="895.68984" 166 + inkscape:cy="-284.87808" 167 + inkscape:document-units="mm" 168 + inkscape:current-layer="g1433-6" 169 + showgrid="false" 170 + inkscape:window-width="2560" 171 + inkscape:window-height="1376" 172 + inkscape:window-x="0" 173 + inkscape:window-y="27" 174 + inkscape:window-maximized="1" 175 + fit-margin-top="0" 176 + fit-margin-left="0" 177 + fit-margin-right="0" 178 + fit-margin-bottom="0" /> 179 + <metadata 180 + id="metadata840"> 181 + <rdf:RDF> 182 + <cc:Work 183 + rdf:about=""> 184 + <dc:format>image/svg+xml</dc:format> 185 + <dc:type 186 + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 187 + <dc:title></dc:title> 188 + </cc:Work> 189 + </rdf:RDF> 190 + </metadata> 191 + <g 192 + inkscape:label="Layer 1" 193 + inkscape:groupmode="layer" 194 + id="layer1" 195 + transform="translate(70.035531,-11.72001)"> 196 + <g 197 + id="g1438" 198 + transform="matrix(0.33108827,0,0,0.33108827,-46.847588,7.8396545)"> 199 + <rect 200 + y="51.228218" 201 + x="-69.09626" 202 + height="34.773811" 203 + width="66.523811" 204 + id="rect1388" 205 + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.87854159;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 206 + <text 207 + id="text1392" 208 + y="73.238098" 209 + x="-59.718166" 210 + style="font-style:normal;font-weight:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" 211 + xml:space="preserve"><tspan 212 + style="font-weight:bold;font-size:12.69999981px;stroke-width:0.26458332" 213 + y="73.238098" 214 + x="-59.718166" 215 + id="tspan1390" 216 + sodipodi:role="line">Cursor</tspan></text> 217 + </g> 218 + <g 219 + id="g1433" 220 + transform="matrix(0.33108827,0,0,0.33108827,-49.701591,6.5552955)"> 221 + <rect 222 + y="116.32738" 223 + x="-60.476192" 224 + height="34.773811" 225 + width="66.523811" 226 + id="rect1388-3" 227 + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.87854159;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 228 + <text 229 + id="text1392-6" 230 + y="138.44888" 231 + x="-53.932037" 232 + style="font-style:normal;font-weight:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" 233 + xml:space="preserve"><tspan 234 + style="font-weight:bold;font-size:12.69999981px;stroke-width:0.26458332" 235 + y="138.44888" 236 + x="-53.932037" 237 + id="tspan1390-7" 238 + sodipodi:role="line">Plane 1</tspan></text> 239 + </g> 240 + <g 241 + id="g1428" 242 + transform="matrix(0.33108827,0,0,0.33108827,-46.847588,7.8396518)"> 243 + <rect 244 + y="173.66814" 245 + x="-69.09626" 246 + height="34.773811" 247 + width="66.523811" 248 + id="rect1388-5" 249 + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.87854159;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 250 + <text 251 + id="text1392-3" 252 + y="195.78964" 253 + x="-62.437382" 254 + style="font-style:normal;font-weight:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" 255 + xml:space="preserve"><tspan 256 + style="font-weight:bold;font-size:12.69999981px;stroke-width:0.26458332" 257 + y="195.78964" 258 + x="-62.437382" 259 + id="tspan1390-5" 260 + sodipodi:role="line">Plane 2</tspan></text> 261 + </g> 262 + <g 263 + id="g1433-6" 264 + transform="translate(116.41667,-9.0714256)"> 265 + <g 266 + id="g1467" 267 + transform="matrix(0.33108827,0,0,0.33108827,-132.72925,15.626721)"> 268 + <rect 269 + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.87854159;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 270 + id="rect1388-3-2" 271 + width="66.523811" 272 + height="34.773811" 273 + x="-60.476192" 274 + y="116.32738" /> 275 + <text 276 + xml:space="preserve" 277 + style="font-style:normal;font-weight:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" 278 + x="-45.380619" 279 + y="138.33725" 280 + id="text1392-6-9"><tspan 281 + sodipodi:role="line" 282 + id="tspan1390-7-1" 283 + x="-45.380619" 284 + y="138.33725" 285 + style="font-weight:bold;font-size:12.69999981px;stroke-width:0.26458332">CRTC</tspan></text> 286 + </g> 287 + <g 288 + id="g1438-2" 289 + transform="matrix(0.33108827,0,0,0.33108827,-92.282164,27.16881)"> 290 + <rect 291 + y="51.228218" 292 + x="-69.09626" 293 + height="34.773811" 294 + width="66.523811" 295 + id="rect1388-7" 296 + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.87854159;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 297 + <text 298 + id="text1392-0" 299 + y="73.238098" 300 + x="-59.718166" 301 + style="font-style:normal;font-weight:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" 302 + xml:space="preserve"><tspan 303 + style="font-weight:bold;font-size:12.69999981px;stroke-width:0.26458332" 304 + y="73.238098" 305 + x="-59.718166" 306 + id="tspan1390-9" 307 + sodipodi:role="line">Cursor</tspan></text> 308 + </g> 309 + <g 310 + id="g1433-3" 311 + transform="matrix(0.33108827,0,0,0.33108827,-61.59731,5.6152398)"> 312 + <rect 313 + y="116.32738" 314 + x="-60.476192" 315 + height="34.773811" 316 + width="66.523811" 317 + id="rect1388-3-6" 318 + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.87854159;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 319 + <text 320 + id="text1392-6-0" 321 + y="138.44888" 322 + x="-53.932037" 323 + style="font-style:normal;font-weight:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" 324 + xml:space="preserve"><tspan 325 + style="font-weight:bold;font-size:12.69999981px;stroke-width:0.26458332" 326 + y="138.44888" 327 + x="-53.932037" 328 + id="tspan1390-7-6" 329 + sodipodi:role="line">Plane 1</tspan></text> 330 + </g> 331 + <g 332 + id="g1428-2" 333 + transform="matrix(0.33108827,0,0,0.33108827,-58.743296,6.7994816)"> 334 + <rect 335 + y="173.66814" 336 + x="-69.09626" 337 + height="34.773811" 338 + width="66.523811" 339 + id="rect1388-5-6" 340 + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.87854159;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 341 + <text 342 + id="text1392-3-1" 343 + y="195.78964" 344 + x="-62.437382" 345 + style="font-style:normal;font-weight:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" 346 + xml:space="preserve"><tspan 347 + style="font-weight:bold;font-size:12.69999981px;stroke-width:0.26458332" 348 + y="195.78964" 349 + x="-62.437382" 350 + id="tspan1390-5-8" 351 + sodipodi:role="line">Plane 2</tspan></text> 352 + </g> 353 + <g 354 + id="g1467-7" 355 + transform="matrix(0.33108827,0,0,0.33108827,-28.233674,5.6152398)"> 356 + <rect 357 + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.87854159;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 358 + id="rect1388-3-2-9" 359 + width="66.523811" 360 + height="34.773811" 361 + x="-60.476192" 362 + y="116.32738" /> 363 + <text 364 + xml:space="preserve" 365 + style="font-style:normal;font-weight:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" 366 + x="-45.380619" 367 + y="138.33725" 368 + id="text1392-6-9-2"><tspan 369 + sodipodi:role="line" 370 + id="tspan1390-7-1-0" 371 + x="-45.380619" 372 + y="138.33725" 373 + style="font-weight:bold;font-size:12.69999981px;stroke-width:0.26458332">CRTC</tspan></text> 374 + </g> 375 + <text 376 + xml:space="preserve" 377 + style="font-style:normal;font-weight:normal;font-size:1.05120528px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.08760043" 378 + x="-164.26541" 379 + y="24.302296" 380 + id="text1531"><tspan 381 + sodipodi:role="line" 382 + id="tspan1529" 383 + x="-164.26541" 384 + y="24.302296" 385 + style="font-weight:bold;font-size:4.6720233px;stroke-width:0.08760043">DRM</tspan></text> 386 + <text 387 + xml:space="preserve" 388 + style="font-style:normal;font-weight:normal;font-size:1.05120528px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.08760043" 389 + x="-89.233742" 390 + y="24.341078" 391 + id="text1531-2"><tspan 392 + sodipodi:role="line" 393 + id="tspan1529-3" 394 + x="-89.233742" 395 + y="24.341078" 396 + style="font-weight:bold;font-size:4.6720233px;stroke-width:0.08760043">AMD Hardware</tspan></text> 397 + <path 398 + style="fill:none;stroke:#000000;stroke-width:1.53318286;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Send)" 399 + d="m -164.26541,39.407343 h 20.27325 v 11.262913" 400 + id="path1551" 401 + inkscape:connector-curvature="0" 402 + sodipodi:nodetypes="ccc" /> 403 + <path 404 + style="fill:none;stroke:#000000;stroke-width:1.53318286;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Send-7)" 405 + d="m -164.11597,80.385815 h 20.27325 v -11.26291" 406 + id="path1551-9" 407 + inkscape:connector-curvature="0" 408 + sodipodi:nodetypes="ccc" /> 409 + <path 410 + style="fill:none;stroke:#000000;stroke-width:1.53318286;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Send-7-2)" 411 + d="m -59.24211,70.452123 h 20.273243 V 59.18921" 412 + id="path1551-9-8" 413 + inkscape:connector-curvature="0" 414 + sodipodi:nodetypes="ccc" /> 415 + <path 416 + style="fill:none;stroke:#000000;stroke-width:1.53318286;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Send-9)" 417 + d="m -163.61178,59.821549 h 9.26062" 418 + id="path1551-3" 419 + inkscape:connector-curvature="0" 420 + sodipodi:nodetypes="cc" /> 421 + <path 422 + style="fill:none;stroke:#000000;stroke-width:1.53318286;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Send-9-6)" 423 + d="m -93.426241,50.16968 h 9.260617" 424 + id="path1551-3-2" 425 + inkscape:connector-curvature="0" 426 + sodipodi:nodetypes="cc" /> 427 + <path 428 + style="fill:none;stroke:#000000;stroke-width:1.53318286;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Send-9-6-9)" 429 + d="m -59.637503,50.169684 h 9.260618" 430 + id="path1551-3-2-1" 431 + inkscape:connector-curvature="0" 432 + sodipodi:nodetypes="cc" /> 433 + </g> 434 + </g> 435 + </svg>
+242
Documentation/gpu/amdgpu/display/mpo-overview.rst
··· 1 + ======================== 2 + Multiplane Overlay (MPO) 3 + ======================== 4 + 5 + .. note:: You will get more from this page if you have already read the 6 + 'Documentation/gpu/amdgpu/display/dcn-overview.rst'. 7 + 8 + 9 + Multiplane Overlay (MPO) allows for multiple framebuffers to be composited via 10 + fixed-function hardware in the display controller rather than using graphics or 11 + compute shaders for composition. This can yield some power savings if it means 12 + the graphics/compute pipelines can be put into low-power states. In summary, 13 + MPO can bring the following benefits: 14 + 15 + * Decreased GPU and CPU workload - no composition shaders needed, no extra 16 + buffer copy needed, GPU can remain idle. 17 + * Plane independent page flips - No need to be tied to global compositor 18 + page-flip present rate, reduced latency, independent timing. 19 + 20 + .. note:: Keep in mind that MPO is all about power-saving; if you want to learn 21 + more about power-save in the display context, check the link: 22 + `Power <https://gitlab.freedesktop.org/pq/color-and-hdr/-/blob/main/doc/power.rst>`__. 23 + 24 + Multiplane Overlay is only available using the DRM atomic model. The atomic 25 + model only uses a single userspace IOCTL for configuring the display hardware 26 + (modesetting, page-flipping, etc) - drmModeAtomicCommit. To query hardware 27 + resources and limitations userspace also calls into drmModeGetResources which 28 + reports back the number of planes, CRTCs, and connectors. There are three types 29 + of DRM planes that the driver can register and work with: 30 + 31 + * ``DRM_PLANE_TYPE_PRIMARY``: Primary planes represent a "main" plane for a 32 + CRTC, primary planes are the planes operated upon by CRTC modesetting and 33 + flipping operations. 34 + * ``DRM_PLANE_TYPE_CURSOR``: Cursor planes represent a "cursor" plane for a 35 + CRTC. Cursor planes are the planes operated upon by the cursor IOCTLs 36 + * ``DRM_PLANE_TYPE_OVERLAY``: Overlay planes represent all non-primary, 37 + non-cursor planes. Some drivers refer to these types of planes as "sprites" 38 + internally. 39 + 40 + To illustrate how it works, let's take a look at a device that exposes the 41 + following planes to userspace: 42 + 43 + * 4 Primary planes (1 per CRTC). 44 + * 4 Cursor planes (1 per CRTC). 45 + * 1 Overlay plane (shared among CRTCs). 46 + 47 + .. note:: Keep in mind that different ASICs might expose other numbers of 48 + planes. 49 + 50 + For this hardware example, we have 4 pipes (if you don't know what AMD pipe 51 + means, look at 'Documentation/gpu/amdgpu/display/dcn-overview.rst', section 52 + "AMD Hardware Pipeline"). Typically most AMD devices operate in a pipe-split 53 + configuration for optimal single display output (e.g., 2 pipes per plane). 54 + 55 + A typical MPO configuration from userspace - 1 primary + 1 overlay on a single 56 + display - will see 4 pipes in use, 2 per plane. 57 + 58 + At least 1 pipe must be used per plane (primary and overlay), so for this 59 + hypothetical hardware that we are using as an example, we have an absolute 60 + limit of 4 planes across all CRTCs. Atomic commits will be rejected for display 61 + configurations using more than 4 planes. Again, it is important to stress that 62 + every DCN has different restrictions; here, we are just trying to provide the 63 + concept idea. 64 + 65 + Plane Restrictions 66 + ================== 67 + 68 + AMDGPU imposes restrictions on the use of DRM planes in the driver. 69 + 70 + Atomic commits will be rejected for commits which do not follow these 71 + restrictions: 72 + 73 + * Overlay planes must be in ARGB8888 or XRGB8888 format 74 + * Planes cannot be placed outside of the CRTC destination rectangle 75 + * Planes cannot be downscaled more than 1/4x of their original size 76 + * Planes cannot be upscaled more than 16x of their original size 77 + 78 + Not every property is available on every plane: 79 + 80 + * Only primary planes have color-space and non-RGB format support 81 + * Only overlay planes have alpha blending support 82 + 83 + Cursor Restrictions 84 + =================== 85 + 86 + Before we start to describe some restrictions around cursor and MPO, see the 87 + below image: 88 + 89 + .. kernel-figure:: mpo-cursor.svg 90 + 91 + The image on the left side represents how DRM expects the cursor and planes to 92 + be blended. However, AMD hardware handles cursors differently, as you can see 93 + on the right side; basically, our cursor cannot be drawn outside its associated 94 + plane as it is being treated as part of the plane. Another consequence of that 95 + is that cursors inherit the color and scale from the plane. 96 + 97 + As a result of the above behavior, do not use legacy API to set up the cursor 98 + plane when working with MPO; otherwise, you might encounter unexpected 99 + behavior. 100 + 101 + In short, AMD HW has no dedicated cursor planes. A cursor is attached to 102 + another plane and therefore inherits any scaling or color processing from its 103 + parent plane. 104 + 105 + Use Cases 106 + ========= 107 + 108 + Picture-in-Picture (PIP) playback - Underlay strategy 109 + ----------------------------------------------------- 110 + 111 + Video playback should be done using the "primary plane as underlay" MPO 112 + strategy. This is a 2 planes configuration: 113 + 114 + * 1 YUV DRM Primary Plane (e.g. NV12 Video) 115 + * 1 RGBA DRM Overlay Plane (e.g. ARGB8888 desktop). The compositor should 116 + prepare the framebuffers for the planes as follows: 117 + - The overlay plane contains general desktop UI, video player controls, and video subtitles 118 + - Primary plane contains one or more videos 119 + 120 + .. note:: Keep in mind that we could extend this configuration to more planes, 121 + but that is currently not supported by our driver yet (maybe if we have a 122 + userspace request in the future, we can change that). 123 + 124 + See below a single-video example: 125 + 126 + .. kernel-figure:: single-display-mpo.svg 127 + 128 + .. note:: We could extend this behavior to more planes, but that is currently 129 + not supported by our driver. 130 + 131 + The video buffer should be used directly for the primary plane. The video can 132 + be scaled and positioned for the desktop using the properties: CRTC_X, CRTC_Y, 133 + CRTC_W, and CRTC_H. The primary plane should also have the color encoding and 134 + color range properties set based on the source content: 135 + 136 + * ``COLOR_RANGE``, ``COLOR_ENCODING`` 137 + 138 + The overlay plane should be the native size of the CRTC. The compositor must 139 + draw a transparent cutout for where the video should be placed on the desktop 140 + (i.e., set the alpha to zero). The primary plane video will be visible through 141 + the underlay. The overlay plane's buffer may remain static while the primary 142 + plane's framebuffer is used for standard double-buffered playback. 143 + 144 + The compositor should create a YUV buffer matching the native size of the CRTC. 145 + Each video buffer should be composited onto this YUV buffer for direct YUV 146 + scanout. The primary plane should have the color encoding and color range 147 + properties set based on the source content: ``COLOR_RANGE``, 148 + ``COLOR_ENCODING``. However, be mindful that the source color space and 149 + encoding match for each video since it affect the entire plane. 150 + 151 + The overlay plane should be the native size of the CRTC. The compositor must 152 + draw a transparent cutout for where each video should be placed on the desktop 153 + (i.e., set the alpha to zero). The primary plane videos will be visible through 154 + the underlay. The overlay plane's buffer may remain static while compositing 155 + operations for video playback will be done on the video buffer. 156 + 157 + This kernel interface is validated using IGT GPU Tools. The following tests can 158 + be run to validate positioning, blending, scaling under a variety of sequences 159 + and interactions with operations such as DPMS and S3: 160 + 161 + - ``kms_plane@plane-panning-bottom-right-pipe-*-planes`` 162 + - ``kms_plane@plane-panning-bottom-right-suspend-pipe-*-`` 163 + - ``kms_plane@plane-panning-top-left-pipe-*-`` 164 + - ``kms_plane@plane-position-covered-pipe-*-`` 165 + - ``kms_plane@plane-position-hole-dpms-pipe-*-`` 166 + - ``kms_plane@plane-position-hole-pipe-*-`` 167 + - ``kms_plane_multiple@atomic-pipe-*-tiling-`` 168 + - ``kms_plane_scaling@pipe-*-plane-scaling`` 169 + - ``kms_plane_alpha_blend@pipe-*-alpha-basic`` 170 + - ``kms_plane_alpha_blend@pipe-*-alpha-transparant-fb`` 171 + - ``kms_plane_alpha_blend@pipe-*-alpha-opaque-fb`` 172 + - ``kms_plane_alpha_blend@pipe-*-constant-alpha-min`` 173 + - ``kms_plane_alpha_blend@pipe-*-constant-alpha-mid`` 174 + - ``kms_plane_alpha_blend@pipe-*-constant-alpha-max`` 175 + 176 + Multiple Display MPO 177 + -------------------- 178 + 179 + AMDGPU supports display MPO when using multiple displays; however, this feature 180 + behavior heavily relies on the compositor implementation. Keep in mind that 181 + usespace can define different policies. For example, some OSes can use MPO to 182 + protect the plane that handles the video playback; notice that we don't have 183 + many limitations for a single display. Nonetheless, this manipulation can have 184 + many more restrictions for a multi-display scenario. The below example shows a 185 + video playback in the middle of two displays, and it is up to the compositor to 186 + define a policy on how to handle it: 187 + 188 + .. kernel-figure:: multi-display-hdcp-mpo.svg 189 + 190 + Let's discuss some of the hardware limitations we have when dealing with 191 + multi-display with MPO. 192 + 193 + Limitations 194 + ~~~~~~~~~~~ 195 + 196 + For simplicity's sake, for discussing the hardware limitation, this 197 + documentation supposes an example where we have two displays and video playback 198 + that will be moved around different displays. 199 + 200 + * **Hardware limitations** 201 + 202 + From the DCN overview page, each display requires at least one pipe and each 203 + MPO plane needs another pipe. As a result, when the video is in the middle of 204 + the two displays, we need to use 2 pipes. See the example below where we avoid 205 + pipe split: 206 + 207 + - 1 display (1 pipe) + MPO (1 pipe), we will use two pipes 208 + - 2 displays (2 pipes) + MPO (1-2 pipes); we will use 4 pipes. MPO in the 209 + middle of both displays needs 2 pipes. 210 + - 3 Displays (3 pipes) + MPO (1-2 pipes), we need 5 pipes. 211 + 212 + If we use MPO with multiple displays, the userspace has to decide to enable 213 + multiple MPO by the price of limiting the number of external displays supported 214 + or disable it in favor of multiple displays; it is a policy decision. For 215 + example: 216 + 217 + * When ASIC has 3 pipes, AMD hardware can NOT support 2 displays with MPO 218 + * When ASIC has 4 pipes, AMD hardware can NOT support 3 displays with MPO 219 + 220 + Let's briefly explore how userspace can handle these two display configurations 221 + on an ASIC that only supports three pipes. We can have: 222 + 223 + .. kernel-figure:: multi-display-hdcp-mpo-less-pipe-ex.svg 224 + 225 + - Total pipes are 3 226 + - User lights up 2 displays (2 out of 3 pipes are used) 227 + - User launches video (1 pipe used for MPO) 228 + - Now, if the user moves the video in the middle of 2 displays, one part of the 229 + video won't be MPO since we have used 3/3 pipes. 230 + 231 + * **Scaling limitation** 232 + 233 + MPO cannot handle scaling less than 0.25 and more than x16. For example: 234 + 235 + If 4k video (3840x2160) is playing in windowed mode, the physical size of the 236 + window cannot be smaller than (960x540). 237 + 238 + .. note:: These scaling limitations might vary from ASIC to ASIC. 239 + 240 + * **Size Limitation** 241 + 242 + The minimum MPO size is 12px.
+220
Documentation/gpu/amdgpu/display/multi-display-hdcp-mpo-less-pipe-ex.svg
··· 1 + <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 + <!-- Created with Inkscape (http://www.inkscape.org/) --> 3 + 4 + <svg 5 + xmlns:dc="http://purl.org/dc/elements/1.1/" 6 + xmlns:cc="http://creativecommons.org/ns#" 7 + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 8 + xmlns:svg="http://www.w3.org/2000/svg" 9 + xmlns="http://www.w3.org/2000/svg" 10 + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 11 + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 12 + width="103.08798mm" 13 + height="30.335283mm" 14 + viewBox="0 0 103.08798 30.335284" 15 + version="1.1" 16 + id="svg8" 17 + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" 18 + sodipodi:docname="multi-display-hdcp-mpo-less-pipe-ex.svg"> 19 + <defs 20 + id="defs2"> 21 + <marker 22 + inkscape:stockid="TriangleOutL" 23 + orient="auto" 24 + refY="0" 25 + refX="0" 26 + id="TriangleOutL" 27 + style="overflow:visible" 28 + inkscape:isstock="true"> 29 + <path 30 + id="path1133" 31 + d="M 5.77,0 -2.88,5 V -5 Z" 32 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" 33 + transform="scale(0.8)" 34 + inkscape:connector-curvature="0" /> 35 + </marker> 36 + <marker 37 + inkscape:stockid="TriangleOutL" 38 + orient="auto" 39 + refY="0" 40 + refX="0" 41 + id="TriangleOutL-6" 42 + style="overflow:visible" 43 + inkscape:isstock="true"> 44 + <path 45 + inkscape:connector-curvature="0" 46 + id="path1133-0" 47 + d="M 5.77,0 -2.88,5 V -5 Z" 48 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" 49 + transform="scale(0.8)" /> 50 + </marker> 51 + </defs> 52 + <sodipodi:namedview 53 + id="base" 54 + pagecolor="#ffffff" 55 + bordercolor="#666666" 56 + borderopacity="1.0" 57 + inkscape:pageopacity="0.0" 58 + inkscape:pageshadow="2" 59 + inkscape:zoom="1.979899" 60 + inkscape:cx="205.69673" 61 + inkscape:cy="33.960031" 62 + inkscape:document-units="mm" 63 + inkscape:current-layer="layer1" 64 + showgrid="false" 65 + inkscape:window-width="1288" 66 + inkscape:window-height="1376" 67 + inkscape:window-x="1272" 68 + inkscape:window-y="27" 69 + inkscape:window-maximized="0" 70 + fit-margin-top="0" 71 + fit-margin-left="0" 72 + fit-margin-right="0" 73 + fit-margin-bottom="0" /> 74 + <metadata 75 + id="metadata5"> 76 + <rdf:RDF> 77 + <cc:Work 78 + rdf:about=""> 79 + <dc:format>image/svg+xml</dc:format> 80 + <dc:type 81 + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 82 + <dc:title></dc:title> 83 + </cc:Work> 84 + </rdf:RDF> 85 + </metadata> 86 + <g 87 + inkscape:label="Layer 1" 88 + inkscape:groupmode="layer" 89 + id="layer1" 90 + transform="translate(112.75816,51.721433)"> 91 + <rect 92 + style="fill:#ffe680;fill-opacity:1;stroke:#000000;stroke-width:0.62916809;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 93 + id="rect836" 94 + width="48.988979" 95 + height="29.48851" 96 + x="-112.44358" 97 + y="-51.189243" 98 + ry="0" /> 99 + <rect 100 + style="fill:#008000;fill-opacity:1;stroke:none;stroke-width:0.38327959;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 101 + id="rect834" 102 + width="14.422765" 103 + height="15.872559" 104 + x="-78.227928" 105 + y="-44.469936" /> 106 + <text 107 + xml:space="preserve" 108 + style="font-style:normal;font-weight:normal;font-size:0.82813358px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 109 + x="-71.189278" 110 + y="-48.114422" 111 + id="text844"><tspan 112 + sodipodi:role="line" 113 + x="-71.189278" 114 + y="-48.114422" 115 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 116 + id="tspan846">Protected</tspan><tspan 117 + sodipodi:role="line" 118 + x="-71.189278" 119 + y="-45.584015" 120 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 121 + id="tspan2288">MPO plane</tspan></text> 122 + <rect 123 + style="fill:#ffe680;fill-opacity:1;stroke:#000000;stroke-width:0.62916809;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 124 + id="rect836-3" 125 + width="48.988979" 126 + height="29.48851" 127 + x="-58.973743" 128 + y="-51.406849" 129 + ry="0" /> 130 + <rect 131 + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2500253;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 132 + id="rect834-6" 133 + width="6.1374092" 134 + height="15.872559" 135 + x="-58.632965" 136 + y="-44.469936" /> 137 + <text 138 + xml:space="preserve" 139 + style="font-style:normal;font-weight:normal;font-size:0.82813358px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 140 + x="-107.96788" 141 + y="-47.033775" 142 + id="text844-7"><tspan 143 + sodipodi:role="line" 144 + x="-107.96788" 145 + y="-47.033775" 146 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777767px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 147 + id="tspan846-3">#1</tspan></text> 148 + <text 149 + xml:space="preserve" 150 + style="font-style:normal;font-weight:normal;font-size:0.82813358px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 151 + x="-15.20074" 152 + y="-46.715996" 153 + id="text844-7-2"><tspan 154 + sodipodi:role="line" 155 + x="-15.20074" 156 + y="-46.715996" 157 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777767px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 158 + id="tspan846-3-9">#2</tspan></text> 159 + <text 160 + xml:space="preserve" 161 + style="font-style:normal;font-weight:normal;font-size:0.82813358px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 162 + x="-88.926605" 163 + y="-23.173674" 164 + id="text844-1"><tspan 165 + sodipodi:role="line" 166 + x="-88.926605" 167 + y="-23.173674" 168 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 169 + id="tspan846-7">Desktop</tspan></text> 170 + <text 171 + xml:space="preserve" 172 + style="font-style:normal;font-weight:normal;font-size:0.82813358px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 173 + x="-33.770744" 174 + y="-23.819901" 175 + id="text844-1-0"><tspan 176 + sodipodi:role="line" 177 + x="-33.770744" 178 + y="-23.819901" 179 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 180 + id="tspan846-7-9">Desktop</tspan></text> 181 + <text 182 + xml:space="preserve" 183 + style="font-style:normal;font-weight:normal;font-size:0.82813358px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.06901112" 184 + x="-75.17498" 185 + y="-41.219398" 186 + id="text844-7-2-3"><tspan 187 + sodipodi:role="line" 188 + x="-75.17498" 189 + y="-41.219398" 190 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777767px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.06901112" 191 + id="tspan846-3-9-6">#3</tspan></text> 192 + <text 193 + xml:space="preserve" 194 + style="font-style:normal;font-weight:normal;font-size:0.82813358px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 195 + x="-47.142235" 196 + y="-48.056866" 197 + id="text844-0"><tspan 198 + sodipodi:role="line" 199 + x="-47.142235" 200 + y="-48.056866" 201 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 202 + id="tspan2288-2">Software</tspan><tspan 203 + sodipodi:role="line" 204 + x="-47.142235" 205 + y="-45.526459" 206 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 207 + id="tspan2313">Composited Video</tspan></text> 208 + <text 209 + xml:space="preserve" 210 + style="font-style:normal;font-weight:normal;font-size:0.82813358px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 211 + x="-36.23288" 212 + y="-34.592064" 213 + id="text844-1-6"><tspan 214 + sodipodi:role="line" 215 + x="-36.23288" 216 + y="-34.592064" 217 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 218 + id="tspan846-7-1">Video will not be displayed</tspan></text> 219 + </g> 220 + </svg>
+171
Documentation/gpu/amdgpu/display/multi-display-hdcp-mpo.svg
··· 1 + <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 + <!-- Created with Inkscape (http://www.inkscape.org/) --> 3 + 4 + <svg 5 + xmlns:dc="http://purl.org/dc/elements/1.1/" 6 + xmlns:cc="http://creativecommons.org/ns#" 7 + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 8 + xmlns:svg="http://www.w3.org/2000/svg" 9 + xmlns="http://www.w3.org/2000/svg" 10 + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 11 + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 12 + width="103.08798mm" 13 + height="30.335283mm" 14 + viewBox="0 0 103.08798 30.335284" 15 + version="1.1" 16 + id="svg8" 17 + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" 18 + sodipodi:docname="multi-display-hdcp-mpo.svg"> 19 + <defs 20 + id="defs2"> 21 + <marker 22 + inkscape:stockid="TriangleOutL" 23 + orient="auto" 24 + refY="0" 25 + refX="0" 26 + id="TriangleOutL" 27 + style="overflow:visible" 28 + inkscape:isstock="true"> 29 + <path 30 + id="path1133" 31 + d="M 5.77,0 -2.88,5 V -5 Z" 32 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" 33 + transform="scale(0.8)" 34 + inkscape:connector-curvature="0" /> 35 + </marker> 36 + <marker 37 + inkscape:stockid="TriangleOutL" 38 + orient="auto" 39 + refY="0" 40 + refX="0" 41 + id="TriangleOutL-6" 42 + style="overflow:visible" 43 + inkscape:isstock="true"> 44 + <path 45 + inkscape:connector-curvature="0" 46 + id="path1133-0" 47 + d="M 5.77,0 -2.88,5 V -5 Z" 48 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" 49 + transform="scale(0.8)" /> 50 + </marker> 51 + </defs> 52 + <sodipodi:namedview 53 + id="base" 54 + pagecolor="#ffffff" 55 + bordercolor="#666666" 56 + borderopacity="1.0" 57 + inkscape:pageopacity="0.0" 58 + inkscape:pageshadow="2" 59 + inkscape:zoom="1.979899" 60 + inkscape:cx="196.85789" 61 + inkscape:cy="33.960027" 62 + inkscape:document-units="mm" 63 + inkscape:current-layer="layer1" 64 + showgrid="false" 65 + inkscape:window-width="1288" 66 + inkscape:window-height="1376" 67 + inkscape:window-x="1272" 68 + inkscape:window-y="27" 69 + inkscape:window-maximized="0" 70 + fit-margin-top="0" 71 + fit-margin-left="0" 72 + fit-margin-right="0" 73 + fit-margin-bottom="0" /> 74 + <metadata 75 + id="metadata5"> 76 + <rdf:RDF> 77 + <cc:Work 78 + rdf:about=""> 79 + <dc:format>image/svg+xml</dc:format> 80 + <dc:type 81 + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 82 + <dc:title></dc:title> 83 + </cc:Work> 84 + </rdf:RDF> 85 + </metadata> 86 + <g 87 + inkscape:label="Layer 1" 88 + inkscape:groupmode="layer" 89 + id="layer1" 90 + transform="translate(112.75816,51.721433)"> 91 + <rect 92 + style="fill:#ffe680;fill-opacity:1;stroke:#000000;stroke-width:0.62916809;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 93 + id="rect836" 94 + width="48.988979" 95 + height="29.48851" 96 + x="-112.44358" 97 + y="-51.189243" 98 + ry="0" /> 99 + <rect 100 + style="fill:#008000;fill-opacity:1;stroke:none;stroke-width:0.38327959;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 101 + id="rect834" 102 + width="14.422765" 103 + height="15.872559" 104 + x="-78.227928" 105 + y="-44.469936" /> 106 + <text 107 + xml:space="preserve" 108 + style="font-style:normal;font-weight:normal;font-size:0.82813358px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 109 + x="-71.189278" 110 + y="-48.114422" 111 + id="text844"><tspan 112 + sodipodi:role="line" 113 + x="-71.189278" 114 + y="-48.114422" 115 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 116 + id="tspan846">Protected</tspan><tspan 117 + sodipodi:role="line" 118 + x="-71.189278" 119 + y="-45.584015" 120 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 121 + id="tspan2288">MPO plane</tspan></text> 122 + <rect 123 + style="fill:#ffe680;fill-opacity:1;stroke:#000000;stroke-width:0.62916809;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 124 + id="rect836-3" 125 + width="48.988979" 126 + height="29.48851" 127 + x="-58.973743" 128 + y="-51.406849" 129 + ry="0" /> 130 + <rect 131 + style="fill:#008000;fill-opacity:1;stroke:none;stroke-width:0.2500253;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 132 + id="rect834-6" 133 + width="6.1374092" 134 + height="15.872559" 135 + x="-58.632965" 136 + y="-44.469936" /> 137 + <text 138 + xml:space="preserve" 139 + style="font-style:normal;font-weight:normal;font-size:0.82813358px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 140 + x="-88.926605" 141 + y="-23.173674" 142 + id="text844-1"><tspan 143 + sodipodi:role="line" 144 + x="-88.926605" 145 + y="-23.173674" 146 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 147 + id="tspan846-7">Desktop</tspan></text> 148 + <text 149 + xml:space="preserve" 150 + style="font-style:normal;font-weight:normal;font-size:0.82813358px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 151 + x="-33.770744" 152 + y="-23.819901" 153 + id="text844-1-0"><tspan 154 + sodipodi:role="line" 155 + x="-33.770744" 156 + y="-23.819901" 157 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 158 + id="tspan846-7-9">Desktop</tspan></text> 159 + <text 160 + xml:space="preserve" 161 + style="font-style:normal;font-weight:normal;font-size:0.82813358px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.06901112" 162 + x="-70.364128" 163 + y="-35.740372" 164 + id="text844-7-2-3"><tspan 165 + sodipodi:role="line" 166 + x="-70.364128" 167 + y="-35.740372" 168 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777767px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.06901112" 169 + id="tspan846-3-9-6">Video</tspan></text> 170 + </g> 171 + </svg>
+339
Documentation/gpu/amdgpu/display/single-display-mpo-multi-video.svg
··· 1 + <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 + <!-- Created with Inkscape (http://www.inkscape.org/) --> 3 + 4 + <svg 5 + xmlns:dc="http://purl.org/dc/elements/1.1/" 6 + xmlns:cc="http://creativecommons.org/ns#" 7 + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 8 + xmlns:svg="http://www.w3.org/2000/svg" 9 + xmlns="http://www.w3.org/2000/svg" 10 + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 11 + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 12 + width="112.16296mm" 13 + height="93.314507mm" 14 + viewBox="0 0 112.16296 93.314508" 15 + version="1.1" 16 + id="svg8" 17 + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" 18 + sodipodi:docname="single-display-mpo-multi-video.svg"> 19 + <defs 20 + id="defs2"> 21 + <marker 22 + inkscape:stockid="TriangleOutL" 23 + orient="auto" 24 + refY="0" 25 + refX="0" 26 + id="TriangleOutL" 27 + style="overflow:visible" 28 + inkscape:isstock="true"> 29 + <path 30 + id="path1133" 31 + d="M 5.77,0 -2.88,5 V -5 Z" 32 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" 33 + transform="scale(0.8)" 34 + inkscape:connector-curvature="0" /> 35 + </marker> 36 + <marker 37 + inkscape:stockid="Arrow1Send" 38 + orient="auto" 39 + refY="0" 40 + refX="0" 41 + id="Arrow1Send" 42 + style="overflow:visible" 43 + inkscape:isstock="true"> 44 + <path 45 + id="path1006" 46 + d="M 0,0 5,-5 -12.5,0 5,5 Z" 47 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" 48 + transform="matrix(-0.2,0,0,-0.2,-1.2,0)" 49 + inkscape:connector-curvature="0" /> 50 + </marker> 51 + <marker 52 + inkscape:stockid="TriangleOutL" 53 + orient="auto" 54 + refY="0" 55 + refX="0" 56 + id="TriangleOutL-6" 57 + style="overflow:visible" 58 + inkscape:isstock="true"> 59 + <path 60 + inkscape:connector-curvature="0" 61 + id="path1133-0" 62 + d="M 5.77,0 -2.88,5 V -5 Z" 63 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" 64 + transform="scale(0.8)" /> 65 + </marker> 66 + </defs> 67 + <sodipodi:namedview 68 + id="base" 69 + pagecolor="#ffffff" 70 + bordercolor="#666666" 71 + borderopacity="1.0" 72 + inkscape:pageopacity="0.0" 73 + inkscape:pageshadow="2" 74 + inkscape:zoom="1.979899" 75 + inkscape:cx="255.95284" 76 + inkscape:cy="222.25473" 77 + inkscape:document-units="mm" 78 + inkscape:current-layer="layer1" 79 + showgrid="false" 80 + inkscape:window-width="1514" 81 + inkscape:window-height="1376" 82 + inkscape:window-x="1046" 83 + inkscape:window-y="27" 84 + inkscape:window-maximized="0" 85 + fit-margin-top="0" 86 + fit-margin-left="0" 87 + fit-margin-right="0" 88 + fit-margin-bottom="0" /> 89 + <metadata 90 + id="metadata5"> 91 + <rdf:RDF> 92 + <cc:Work 93 + rdf:about=""> 94 + <dc:format>image/svg+xml</dc:format> 95 + <dc:type 96 + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 97 + <dc:title></dc:title> 98 + </cc:Work> 99 + </rdf:RDF> 100 + </metadata> 101 + <g 102 + inkscape:label="Layer 1" 103 + inkscape:groupmode="layer" 104 + id="layer1" 105 + transform="translate(26.189925,5.2546503)"> 106 + <text 107 + xml:space="preserve" 108 + style="font-style:normal;font-weight:normal;font-size:0.82813352px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 109 + x="-2.2053311" 110 + y="32.839729" 111 + id="text844"><tspan 112 + sodipodi:role="line" 113 + x="-2.2053313" 114 + y="32.839729" 115 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 116 + id="tspan846">Video Buffer (YUV)</tspan></text> 117 + <text 118 + xml:space="preserve" 119 + style="font-style:normal;font-weight:normal;font-size:0.82813352px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 120 + x="30.867918" 121 + y="87.638779" 122 + id="text844-2"><tspan 123 + sodipodi:role="line" 124 + x="30.867918" 125 + y="87.638779" 126 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 127 + id="tspan846-0">CRTC Output</tspan></text> 128 + <rect 129 + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.53249496;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:1.59748484, 0.53249495;stroke-dashoffset:0" 130 + id="rect969" 131 + width="111.63046" 132 + height="44.238331" 133 + x="-25.923677" 134 + y="-4.9884028" /> 135 + <text 136 + xml:space="preserve" 137 + style="font-style:normal;font-weight:normal;font-size:0.82813352px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 138 + x="48.037342" 139 + y="45.781586" 140 + id="text844-2-9"><tspan 141 + sodipodi:role="line" 142 + x="48.037342" 143 + y="45.781586" 144 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 145 + id="tspan2868">Hardware Composition</tspan></text> 146 + <path 147 + style="fill:none;stroke:#000000;stroke-width:0.48997903;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL)" 148 + d="m 32.66992,40.326865 v 9.760144" 149 + id="path989" 150 + inkscape:connector-curvature="0" /> 151 + <g 152 + id="g4447" 153 + style="stroke:#000000"> 154 + <rect 155 + ry="0" 156 + y="0.23764905" 157 + x="-23.784248" 158 + height="29.48851" 159 + width="48.988979" 160 + id="rect836" 161 + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.62916809;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 162 + <rect 163 + ry="0" 164 + y="3.8184125" 165 + x="-20.589451" 166 + height="6.9794898" 167 + width="11.594959" 168 + id="rect836-2-6" 169 + style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.14891468;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 170 + <rect 171 + ry="0" 172 + y="3.8184123" 173 + x="-5.6613555" 174 + height="6.9794903" 175 + width="11.594959" 176 + id="rect836-2-6-1" 177 + style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.14891469;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 178 + <rect 179 + ry="0" 180 + y="3.8184121" 181 + x="10.374816" 182 + height="6.9794908" 183 + width="11.594959" 184 + id="rect836-2-6-1-8" 185 + style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.14891469;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 186 + <rect 187 + ry="0" 188 + y="18.386644" 189 + x="-20.341679" 190 + height="6.9794903" 191 + width="11.594959" 192 + id="rect836-2-6-7" 193 + style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.14891469;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 194 + <rect 195 + ry="0" 196 + y="18.386644" 197 + x="-5.4135842" 198 + height="6.9794908" 199 + width="11.594959" 200 + id="rect836-2-6-1-9" 201 + style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.14891469;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 202 + <rect 203 + ry="0" 204 + y="18.386644" 205 + x="10.622585" 206 + height="6.9794908" 207 + width="11.594959" 208 + id="rect836-2-6-1-8-2" 209 + style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.14891469;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 210 + </g> 211 + <rect 212 + style="fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:0.62916809;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 213 + id="rect836-2" 214 + width="48.988979" 215 + height="29.48851" 216 + x="31.367332" 217 + y="0.45039755" 218 + ry="0" /> 219 + <rect 220 + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.14891468;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 221 + id="rect836-2-6-3" 222 + width="11.594959" 223 + height="6.9794898" 224 + x="34.56213" 225 + y="4.0311608" 226 + ry="0" /> 227 + <rect 228 + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.14891469;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 229 + id="rect836-2-6-1-7" 230 + width="11.594959" 231 + height="6.9794903" 232 + x="49.490223" 233 + y="4.0311608" 234 + ry="0" /> 235 + <rect 236 + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.14891469;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 237 + id="rect836-2-6-1-8-5" 238 + width="11.594959" 239 + height="6.9794908" 240 + x="65.526398" 241 + y="4.0311604" 242 + ry="0" /> 243 + <rect 244 + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.14891469;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 245 + id="rect836-2-6-7-9" 246 + width="11.594959" 247 + height="6.9794903" 248 + x="34.809902" 249 + y="18.599392" 250 + ry="0" /> 251 + <rect 252 + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.14891469;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 253 + id="rect836-2-6-1-9-2" 254 + width="11.594959" 255 + height="6.9794908" 256 + x="49.737995" 257 + y="18.599392" 258 + ry="0" /> 259 + <rect 260 + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.14891469;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 261 + id="rect836-2-6-1-8-2-2" 262 + width="11.594959" 263 + height="6.9794908" 264 + x="65.774162" 265 + y="18.599392" 266 + ry="0" /> 267 + <g 268 + id="g4562" 269 + transform="translate(0,11.22532)"> 270 + <rect 271 + ry="0" 272 + y="43.21352" 273 + x="5.9767256" 274 + height="29.48851" 275 + width="48.988979" 276 + id="rect836-97" 277 + style="fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:0.62916809;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 278 + <rect 279 + ry="0" 280 + y="46.794285" 281 + x="9.1715231" 282 + height="6.9794898" 283 + width="11.594959" 284 + id="rect836-2-6-36" 285 + style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.14891468;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 286 + <rect 287 + ry="0" 288 + y="46.794285" 289 + x="24.099619" 290 + height="6.9794903" 291 + width="11.594959" 292 + id="rect836-2-6-1-1" 293 + style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.14891469;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 294 + <rect 295 + ry="0" 296 + y="46.794285" 297 + x="40.135792" 298 + height="6.9794908" 299 + width="11.594959" 300 + id="rect836-2-6-1-8-29" 301 + style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.14891469;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 302 + <rect 303 + ry="0" 304 + y="61.362514" 305 + x="9.4192953" 306 + height="6.9794903" 307 + width="11.594959" 308 + id="rect836-2-6-7-3" 309 + style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.14891469;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 310 + <rect 311 + ry="0" 312 + y="61.362514" 313 + x="24.347389" 314 + height="6.9794908" 315 + width="11.594959" 316 + id="rect836-2-6-1-9-1" 317 + style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.14891469;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 318 + <rect 319 + ry="0" 320 + y="61.362514" 321 + x="40.38356" 322 + height="6.9794908" 323 + width="11.594959" 324 + id="rect836-2-6-1-8-2-9" 325 + style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.14891469;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 326 + </g> 327 + <text 328 + xml:space="preserve" 329 + style="font-style:normal;font-weight:normal;font-size:0.82813358px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 330 + x="57.012939" 331 + y="33.603645" 332 + id="text844-4"><tspan 333 + sodipodi:role="line" 334 + x="57.012939" 335 + y="33.603645" 336 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 337 + id="tspan846-7">Desktop Buffer (ARGB)</tspan></text> 338 + </g> 339 + </svg>
+266
Documentation/gpu/amdgpu/display/single-display-mpo.svg
··· 1 + <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 + <!-- Created with Inkscape (http://www.inkscape.org/) --> 3 + 4 + <svg 5 + xmlns:dc="http://purl.org/dc/elements/1.1/" 6 + xmlns:cc="http://creativecommons.org/ns#" 7 + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 8 + xmlns:svg="http://www.w3.org/2000/svg" 9 + xmlns="http://www.w3.org/2000/svg" 10 + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 11 + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 12 + width="148.71147mm" 13 + height="38.356358mm" 14 + viewBox="0 0 148.71148 38.356358" 15 + version="1.1" 16 + id="svg8" 17 + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" 18 + sodipodi:docname="single-display-mpo.svg"> 19 + <defs 20 + id="defs2"> 21 + <marker 22 + inkscape:stockid="TriangleOutL" 23 + orient="auto" 24 + refY="0" 25 + refX="0" 26 + id="TriangleOutL" 27 + style="overflow:visible" 28 + inkscape:isstock="true"> 29 + <path 30 + id="path1133" 31 + d="M 5.77,0 -2.88,5 V -5 Z" 32 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" 33 + transform="scale(0.8)" 34 + inkscape:connector-curvature="0" /> 35 + </marker> 36 + <marker 37 + inkscape:stockid="Arrow1Send" 38 + orient="auto" 39 + refY="0" 40 + refX="0" 41 + id="Arrow1Send" 42 + style="overflow:visible" 43 + inkscape:isstock="true"> 44 + <path 45 + id="path1006" 46 + d="M 0,0 5,-5 -12.5,0 5,5 Z" 47 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" 48 + transform="matrix(-0.2,0,0,-0.2,-1.2,0)" 49 + inkscape:connector-curvature="0" /> 50 + </marker> 51 + <marker 52 + inkscape:stockid="TriangleOutL" 53 + orient="auto" 54 + refY="0" 55 + refX="0" 56 + id="TriangleOutL-6" 57 + style="overflow:visible" 58 + inkscape:isstock="true"> 59 + <path 60 + inkscape:connector-curvature="0" 61 + id="path1133-0" 62 + d="M 5.77,0 -2.88,5 V -5 Z" 63 + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" 64 + transform="scale(0.8)" /> 65 + </marker> 66 + </defs> 67 + <sodipodi:namedview 68 + id="base" 69 + pagecolor="#ffffff" 70 + bordercolor="#666666" 71 + borderopacity="1.0" 72 + inkscape:pageopacity="0.0" 73 + inkscape:pageshadow="2" 74 + inkscape:zoom="1.979899" 75 + inkscape:cx="266.07058" 76 + inkscape:cy="81.254796" 77 + inkscape:document-units="mm" 78 + inkscape:current-layer="layer1" 79 + showgrid="false" 80 + inkscape:window-width="1514" 81 + inkscape:window-height="1376" 82 + inkscape:window-x="1046" 83 + inkscape:window-y="27" 84 + inkscape:window-maximized="0" 85 + fit-margin-top="0" 86 + fit-margin-left="0" 87 + fit-margin-right="0" 88 + fit-margin-bottom="0" /> 89 + <metadata 90 + id="metadata5"> 91 + <rdf:RDF> 92 + <cc:Work 93 + rdf:about=""> 94 + <dc:format>image/svg+xml</dc:format> 95 + <dc:type 96 + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 97 + <dc:title></dc:title> 98 + </cc:Work> 99 + </rdf:RDF> 100 + </metadata> 101 + <g 102 + inkscape:label="Layer 1" 103 + inkscape:groupmode="layer" 104 + id="layer1" 105 + transform="translate(26.323559,-14.790568)"> 106 + <rect 107 + style="fill:#999999;fill-opacity:1;stroke:#999999;stroke-width:0.62916809;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 108 + id="rect836" 109 + width="48.988979" 110 + height="29.48851" 111 + x="4.9472256" 112 + y="17.075632" 113 + ry="0" /> 114 + <g 115 + id="g905" 116 + transform="matrix(0.26082945,0,0,0.26082945,-26.950235,-0.99631462)"> 117 + <rect 118 + y="67.568451" 119 + x="12.473214" 120 + height="60.854164" 121 + width="102.43154" 122 + id="rect834" 123 + style="fill:#008000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 124 + <path 125 + inkscape:transform-center-y="-3.581986e-06" 126 + inkscape:transform-center-x="-3.3106064" 127 + d="m 73.620805,97.995537 -9.931819,5.734143 -9.931819,5.73413 0,-11.468274 0,-11.468276 9.931819,5.734139 z" 128 + inkscape:randomized="0" 129 + inkscape:rounded="0" 130 + inkscape:flatsided="false" 131 + sodipodi:arg2="1.0471976" 132 + sodipodi:arg1="0" 133 + sodipodi:r2="6.6212125" 134 + sodipodi:r1="13.242425" 135 + sodipodi:cy="97.995537" 136 + sodipodi:cx="60.37838" 137 + sodipodi:sides="3" 138 + id="path840" 139 + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.22854495;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 140 + sodipodi:type="star" /> 141 + </g> 142 + <text 143 + xml:space="preserve" 144 + style="font-style:normal;font-weight:normal;font-size:0.82813352px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 145 + x="-10.357052" 146 + y="34.176075" 147 + id="text844"><tspan 148 + sodipodi:role="line" 149 + id="tspan842" 150 + x="-10.357052" 151 + y="34.176075" 152 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112">Video Buffer (YUV)</tspan><tspan 153 + sodipodi:role="line" 154 + x="-10.357052" 155 + y="36.706482" 156 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 157 + id="tspan846">DRM PRIMARY PLANE</tspan></text> 158 + <rect 159 + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.5216589;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 160 + id="rect834-3" 161 + width="26.717165" 162 + height="15.872559" 163 + x="16.083126" 164 + y="23.883608" /> 165 + <text 166 + xml:space="preserve" 167 + style="font-style:normal;font-weight:normal;font-size:0.82813352px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 168 + x="28.437061" 169 + y="49.158085" 170 + id="text844-6"><tspan 171 + sodipodi:role="line" 172 + x="28.437061" 173 + y="49.158085" 174 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 175 + id="tspan846-5">Desktop Buffer (ARGB)</tspan><tspan 176 + sodipodi:role="line" 177 + x="28.437061" 178 + y="51.688492" 179 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 180 + id="tspan886">DRM OVERLAY PLANE</tspan></text> 181 + <g 182 + id="g2874" 183 + transform="matrix(1.0858687,0,0,1.0858687,-4.5597909,-2.06277)"> 184 + <rect 185 + ry="0" 186 + y="17.624969" 187 + x="71.504173" 188 + height="27.156607" 189 + width="45.115009" 190 + id="rect836-9" 191 + style="fill:#999999;fill-opacity:1;stroke:#999999;stroke-width:0.57941455;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> 192 + <g 193 + id="g905-5" 194 + transform="matrix(0.24020349,0,0,0.24020349,78.763353,7.664402)"> 195 + <rect 196 + style="fill:#008000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 197 + id="rect834-6" 198 + width="102.43154" 199 + height="60.854164" 200 + x="12.473214" 201 + y="67.568451" /> 202 + <path 203 + sodipodi:type="star" 204 + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.22854495;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" 205 + id="path840-2" 206 + sodipodi:sides="3" 207 + sodipodi:cx="60.37838" 208 + sodipodi:cy="97.995537" 209 + sodipodi:r1="13.242425" 210 + sodipodi:r2="6.6212125" 211 + sodipodi:arg1="0" 212 + sodipodi:arg2="1.0471976" 213 + inkscape:flatsided="false" 214 + inkscape:rounded="0" 215 + inkscape:randomized="0" 216 + d="m 73.620805,97.995537 -9.931819,5.734143 -9.931819,5.73413 0,-11.468274 0,-11.468276 9.931819,5.734139 z" 217 + inkscape:transform-center-x="-3.3106064" 218 + inkscape:transform-center-y="-3.581986e-06" /> 219 + </g> 220 + </g> 221 + <text 222 + xml:space="preserve" 223 + style="font-style:normal;font-weight:normal;font-size:0.82813352px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 224 + x="97.551666" 225 + y="50.221046" 226 + id="text844-2"><tspan 227 + sodipodi:role="line" 228 + x="97.551666" 229 + y="50.221046" 230 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 231 + id="tspan846-0">CRTC Output</tspan></text> 232 + <rect 233 + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.42211887;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:1.26635657, 0.42211886;stroke-dashoffset:0" 234 + id="rect969" 235 + width="81.806648" 236 + height="37.934238" 237 + x="-26.112499" 238 + y="15.001627" /> 239 + <text 240 + xml:space="preserve" 241 + style="font-style:normal;font-weight:normal;font-size:0.82813352px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06901112" 242 + x="64.474419" 243 + y="31.883568" 244 + id="text844-2-9"><tspan 245 + sodipodi:role="line" 246 + x="64.474419" 247 + y="31.883568" 248 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 249 + id="tspan846-0-3">Hardware</tspan><tspan 250 + sodipodi:role="line" 251 + x="64.474419" 252 + y="34.413975" 253 + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.02432632px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle;stroke-width:0.06901112" 254 + id="tspan2868">Composition</tspan></text> 255 + <path 256 + style="fill:none;stroke:#000000;stroke-width:0.48997903;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL)" 257 + d="m 57.401149,24.81643 h 9.760144" 258 + id="path989" 259 + inkscape:connector-curvature="0" /> 260 + <path 261 + style="fill:none;stroke:#000000;stroke-width:0.48997903;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutL-6)" 262 + d="m 57.401149,41.794278 h 9.760144" 263 + id="path989-6" 264 + inkscape:connector-curvature="0" /> 265 + </g> 266 + </svg>