{"id":10828,"date":"2021-03-29T11:58:14","date_gmt":"2021-03-29T11:58:14","guid":{"rendered":"http:\/\/www.max-sperling.bplaced.net\/?p=10828"},"modified":"2024-04-08T15:00:50","modified_gmt":"2024-04-08T15:00:50","slug":"windowing-system-with-drm-linux","status":"publish","type":"post","link":"http:\/\/www.max-sperling.bplaced.net\/?p=10828","title":{"rendered":"X11 with DRI (Linux)"},"content":{"rendered":"<p>In the past all rendering from the X Clients happened through the X Server via the X11\/GLX protocol. It&#8217;s called indirect rendering and it was necessary cause the access on the frame buffer wasn&#8217;t synchronized at that point. Later on they realized that applications with 3D rendering create performance issues. They switched to DRI (Direct Rendering Infrastructure) and a major part of it was the development of the DRM (Direct Rendering Manager) to synchronize the frame buffer access.<\/p>\n<pre>\r\n                       \/------------------------------------------------------\\\r\n                       |                       X Client                       |\r\n                       |------------------------------------------------------|\r\n                       | (GTK+, Qt, ...) |                   |                |\r\n                       | User Interface  | Video-Accelerator | 3D-Accelerator |\r\n                       \\------------------------------------------------------\/\r\n                                \u2227                   |<- VA-API        |<- OpenGL\r\n                                |<- X11\/GLX       Libva              Mesa\r\n                                \u2228                   |                 |\r\n     Window Manager  <--->  X Server ---------------------|-----------\/\r\n  (e.g. Compiz, KWIn)   (e.g. X.org Server)               |\r\n                          \u2227           |                   |\r\n                          |           \u2228                   \u2228\r\n   (Linux Kernel)       evdev        KMS                 DRM\r\n                          \u2227           \u2227                   \u2227\r\n                          |           |                   |\r\n                          \u2228           \u2228                   \u2228\r\n     (Hardware)      PS\/2, USB      Display        GPU & Graphic mem.\r\n                                   Controller\r\n<\/pre>\n<p>It&#8217;s even possible to use DRI for 2D rendering, but based on its good performance it isn&#8217;t necessary.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the past all rendering from the X Clients happened through the X Server via the X11\/GLX protocol. It&#8217;s called<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false},"categories":[65],"tags":[],"_links":{"self":[{"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=\/wp\/v2\/posts\/10828"}],"collection":[{"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10828"}],"version-history":[{"count":3,"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=\/wp\/v2\/posts\/10828\/revisions"}],"predecessor-version":[{"id":17327,"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=\/wp\/v2\/posts\/10828\/revisions\/17327"}],"wp:attachment":[{"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10828"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10828"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10828"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}