4/3/2023 0 Comments Make compositor fullscreenThe ISOBUS consortium had invested significant time and money to implement a window manager based on a Wayland compositor to run multiple standard and custom applications (see The Standard: New ISOBUS Terminal CCI 1200). Telling X11 to draw windows of a given size at given positions and configuring X11 for optimal use of the GPU are very difficult and time-consuming.įor the third generation (from 2018), KRONE switched to the ISOBUS terminal CCI 1200 with the same i.MX6 SoC. The development costs for a Wayland compositor are too high. So, the second terminal generation still used EGLFS. When KRONE moved to an i.MX6 with four Cortex-A9 cores and a more powerful GPU in 2015, Wayland still wasn’t an option. The terminal shall use EGLFS as its “window manager”. X11 is too resource-hungry for the i.MX53. The i.MX53 does not support Wayland.Ĭonstraint. The next four ASRs describe the situation at KRONE in 2012.Ĭonstraint. As it was not, we were forced to implement the sharing of the frame buffer ourselves (see the post Remote Support for Harvester Terminal via VNC). Wayland is a protocol to control the access of multiple processes to the frame buffer.Īll pieces would have been in place nicely, if Wayland had been available for the i.MX53. EGLFS accesses the same frame buffer to render the GUI. The VNC server transfers the content of the frame buffer to any remote computer. Wayland would have made the integration of a VNC server much easier and would have saved us about a month of work. X11 was too resource-hungry for the i.MX53 and too hard to configure. The i.MX53 didn’t support Wayland and would never do. When I started building the first KRONE terminal in 2012, the terminal ran on an i.MX53 with a single Cortex-A8 core and a GPU. A short trip down memory lane reveals different ASRs shaping the architecture decisions. Although Wayland has been around since 2008, only the third generation of the KRONE terminals use it. The i.MX6 SoCs, the i.MX8 SoCs and even the older i.MX53 SoC are powerful enough to run a simple window manager like a Wayland compositor. If the SoC has a GPU with support for OpenGL ES 2 or newer, terminals with a single GUI application should use EGLFS. This gives rise to the following influential functional requirement. The i.MX6 and i.MX8 SoCs (see overview of Toradex Colibri SoCs) have a GPU (called Vivante GPU). OpenGL acceleration requires the SoC to have a GPU. Terminals also use animations to move between screens and dialogs. Harvester terminals display many frequently changing parameters (e.g., vehicle speed, engine speed, harvested area) in digital or analogue gauges. EGLFS is well-suited for QML applications benefiting from graphics acceleration with OpenGL ES 2.0 or later. Qt’s drag-and-drop and copy-and-paste features don’t work either, because they must also work between two applications rendered on two separate windows.ĭespite its limitations, EGLFS is a good and common choice for Qt embedded systems. It doesn’t allow the mixing of QML GUI parts and QWidget-based GUI parts, as this would require two top-level windows for rendering. Other top-level widgets like dialogs, pop-up menus or combo boxes are composed into the single top-level window.ĮGLFS cannot open a second window. QWidget-based applications are rendered in software using the CPU instead of the GPU. FS in EGLFS stands for full-screen.ĮGLFS supports QML applications displayed in a single top-level QWindow or QQuickView, OpenGL applications displayed in a QOpenGLWidget, and even QWidget-based applications displayed in a QWidget. For Linux, EGL converts OpenGL ES commands into the frame buffer content. As only one application is rendering its GUI onto one window, we don’t need window managers like X11 or Wayland compositors (e.g. The driver terminals of the KRONE and ROPA harvesters run a single GUI application full-screen. The system runs on a custom Linux distro built with Yocto or Buildroot. We’ll discuss in a later episode why Linux is a good choice for the operating system of a harvester terminal.Ĭonstraint. We assume that the terminal runs on a custom Linux distro built with Yocto or Buildroot. My running example is a fictitious driver terminal for a harvester architected in 2021. High-level architecture of Qt Embedded Systems
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |