On 6/13/2024 11:56 AM, Gregory Nutt wrote:
Changing the existing driver interface would break the NX graphics. NX
graphics is mis-named. It is not a graphics system like LVGL, but a
windowing system like X. Whatever you do should not break the
windowing system and, in fact, really should optionally integrate with
the windowing system.
There is some graphics support in apps/ now (called NxGraphics), but
that was never really fully developed. LVGL has the better 2D
graphics. NxGraphics can provide a Z-axis as well if properly
integrated with LVGL. There are several examples of window managers
that run on top of NX graphics NxTerms, NxWM, a tiny port of a
TWM-like window manger called Twm4Nx. These must not be broken.
So you have a few options: (1) Provide dual graphics that are
completely separate so that the existing graphic framework is not
trashed. That would not be cool. Or (2) Integrate LVGL with NX
Windows, or (3) both. Then you could have multiple LVGL windows..
which is really pretty cool. There would possible be some performance
hit, however. The simplest LVGL integration would be to use per
Window framebuffers. The current framebuffer driver supports the
whole screen. That is not the way other graphic systems work. Rather
they provide a framebuffer per Window. That naturally supports
Windows and cleanly provides multi-threaded access to the display.
Here are URLs to some relevant documentation. I may or may not have
ever been leveraged into nuttx/Documentation.
*
https://cwiki.apache.org/confluence/display/NUTTX/Framebuffer+Character+Driver
* https://cwiki.apache.org/confluence/display/NUTTX/NX+Graphics+Subsystem
* https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=139629474
* https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=139629473