Project

General

Profile

GraphicsReplicant11 » History » Revision 5

Revision 4 (dl lud, 08/23/2019 04:26 PM) → Revision 5/114 (dl lud, 08/23/2019 07:02 PM)

h1. Graphics on Replicant 9 

 This page documents the current progress and future plans for the graphics acceleration on Replicant 9. The original plan can be found at [[TasksFunding#Graphics-acceleration]]. Since then, through more in depth research and hands-on experience, several things have diverged. 

 Background information, as well as details on the software components and acronyms used on this document, can be found at [[GraphicsResearch]]. 

 h2. Graphics stack tasks 

 |_. status |_. origin |_. short description |_. notes |_. estimated man-hours |_. actual man-hours | 
 | done | original plan | Set up the development environment. | Required: i9305 phones, LXC Trisquel container (systemd nspawn fails due to old systemd on Trisquel 8), larger SSDs, 1.8V serial-USB adapters (BS101P FT232RL) plus makeshift resistors' banks. |>. 24 |>. 24| 
 | ongoing | original plan | Read graphics related AOSP documentation. | Never-ending task that, besides actual documentation, involves scouring through source-code, bug trackers, mailing lists and IRC logs. |>. 16 |>. 40 | 
 | ongoing | new | Ask for help. | Bother Annoying free-software developers[1] that have experience with or contribute to graphics sub-systems has been the most fruitful way to clear most roadblocks.    |>. 0 |>. 0 | 
 | done | original plan | Use Mesa's llvmpipe backend instead of softpipe. | Merge requests on Mesa: "!1402":https://gitlab.freedesktop.org/mesa/mesa/merge_requests/1402 and "!1403":https://gitlab.freedesktop.org/mesa/mesa/merge_requests/1403. There was no need to update LLVM version. |>. 40 |>. 28 | 
 | todo | original plan | Implement the missing pixel formats in drm/exynos. | |>. 72 |>. 0 | 
 | todo | new | Get entire stack to use RGB555 pixel format. | Had a huge performance boost on Replicant 6. |>. 0 |>. 0 | 
 | ongoing | original plan | Proper way to use DRM-Master and DRM-Auth with gbm_gralloc and drm_hwcomposer. | Tried: 
 1. "Auth hack":https://git.replicant.us/contrib/GNUtoo/kernel_replicant_linux/commit/?h=history/lineage-16.0_i9300&id=e0f327c553befec2d367ac9a5ebef29b4291187a (both on @/dev/dri/card0@) 
 2. "vGEM":https://git.replicant.us/contrib/replicant-9/kernel_replicant_linux/commit/?id=29fab049bea6a17e5f85ccb147df0e0046bbd487 (gbm gralloc on @/dev/dri/card1@) - Requires memory sync between vGEM and exynos. gbm gralloc cannot take advantage of exynos hardware planes. 
 3. "Allow dumb buffers on render node":https://git.replicant.us/contrib/replicant-9/kernel_replicant_linux/commit/?id=805cc511ee2adc62ae40c4253fb8d378c3710a81 (gbm gralloc on @/dev/dri/renderD128@) - Dumb buffers are used for scanout. Should not be created on a render node. 

 
 Correct solution is using DRM Magic and have both on @/dev/dri/card0@. @/dev/dri/card0@ |>. 40 |>. 4 | 

 fn1. A big thanks to Joonas Kylmälä, Paul Kocialkowski, Andrés Domínguez, Denis Carikli, Mauro Rossi, Emil Velikov, Andrzej Hajda, Marek Szyprowski and LiquidAcid.