Yes, NX is a server within the OS. The server side is in directories
under nuttx/graphics/; the client side is an application library in
libs/libnx. The client/server interface is via POSIX messages.
Serialization (and hence multi-threaded support) is guaranteed by the
POSIX message queues.
Application use of framebuffers can get complicated in some memory
organization if the framebuffer memory is not naturally accessible from
user mode. Also, unlike multi-ported display memory, the per-Window
framebuffers require some additional action to trigger merging into the
device display memory. Per-Window framebuffers would probably require an
UPDATE IOCTL to determine when the Window framebuffer could be merged
into the device display memory. LVGL already supports such updates for
other cases.
Those updates are a little awkward but on the upside guarantee
flicker-free updates.
On 10/4/2022 9:32 AM, Victor Suarez Rovere wrote:
Hi Nutt thanks for the detailed description on the architecture. As far as
I understand, there's no client-server function like in X, am I right?
I agree that doing a per-window framebuffer should not be hard.
I plan to migrate other frameworks like ImGUI too since I have some
experience with it
On Tue, Oct 4, 2022 at 12:13 PM Gregory Nutt <spudan...@gmail.com> wrote:
NxWidgets is a drawing tool in C++ that supports graphics objects. It
integrates naturally with NX.
NX is the graphics server that supports multi-threaded 3D windowed
displays (3D in the since that X/Y windows exists in a Z plane). NX is
the embedded, moral equivalent of X in Linux. It is NX that supports
the multi-threading, not NxWidgets.
LVGL is a drawing tool written in C. It integrates naturally with a
framebuffer driver.
NX can be configured to support per-Window framebuffers. It would
require a small effort, but it would also be possible to create a
per-Window framebuffer driver that is compatible with LVGL. Then you
could have each thread manage a different window (but not true
multi-threading in a single window).
On 10/4/2022 9:01 AM, Victor Suarez Rovere wrote:
Many thanks of the links related to nxwidgets. I'm aware of LVGL and
other
nice UI for embedded systems but I prefer a framework that would be
easier
to manage in a client-server fashion for a project of muy own, and
nxwidgets seems easier than LVGL besides less advanced. A modernization
of
the drawing functions would be interesting toó while keeping the API. I
don't know if there are some existing applications to determine the
impact
of any change to the API
Victor.
El mar., 4 oct. 2022 11:54, Tomek CEDRO <to...@cedro.info> escribió:
On Tue, Oct 4, 2022 at 4:37 PM Alan C. Assis wrote:
Hi Victor,
Please see page 43 to see some nice interfaces developed using
NXWidgets:
https://web.archive.org/web/20161019222034/http://dspace.cc.tut.fi/dpub/bitstream/handle/123456789/22051/Aimonen.pdf
You can look the NXWM to see some examples of screens using NXWidgets.
Thanks Alan for this detailed reference! :-)
Victor, please note that NuttX also supports LVGL that is currently
getting a lot of traction in embedded world:
https://lvgl.io/
Guys, do we have some demos ready to build out of the box on NuttX for
both NxWidgets and LVGL?
--
CeDeROM, SQ7MHZ, http://www.tomek.cedro.info