|
LVGL is fast, and amazing, so I'm not criticizing it, but they make choices I wouldn't have.
One thing is, they do a lot of little heap allocations without a custom allocator scheme.
for example (C code)
lv_label_t *my_label = lv_label_create(yada,yada);
...
lv_label_destroy(my_label);
Whereas in htcw_gfx, or most of my IoT code for that matter it's
lv_label_t my_label;
lv_label_create(&my_label,yada,yada);
...
lv_label_destroy(my_label);
The difference is subtle but not insignificant. The key here is the caller is responsible for allocations.
This allows you to declare a globals for example:
lv_label_t global_label1;
lv_label_t global_label2;
And then use those without whipping the heap at all.
That and in other cases they just use the heap like it's free, and I'm over here, like "how do you even run on systems with 48KB of RAM?"
It floors me. This whole time I've treated heap allocations on IoT like blood diamonds: Expensive, horrible, to be avoided at almost any cost, and really we don't want to talk about what goes into them.
I don't use malloc in my IoT code unless there's no other choice.
Anyway, it was just an interesting contrast, and I learned that maybe I'm being too paranoid about managing my SRAM.
To err is human. Fortune favors the monsters.
|
|
|
|
|
If I have my assumptions are correct. Their assumption is memory is cheap. When memory is cheap go heap. However, properly managing memory is almost always a good thing. I have worked on systems that where in 8kb range back in the old days. Too long ago to recall the details, but required.
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
I still deal with systems with 8KB of RAM, and LVGL works in like 48KB of RAM - the entire library mind you, not just my font engine, which must share the RAM with that library. with 48KB of RAM at say 80% usage the heap frag struggle is real. I think.
To err is human. Fortune favors the monsters.
|
|
|
|
|
Yikes. You think are right! Heap or not. I am still learning LVGL, but I have no memory issues for my interests.
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
48 kB of RAM is 8 of our most powerful SoCs in parallel, or 3 of the ones which supposedly will become our standard (if the supplier finishes developing it before the end of the century).
GCS/GE d--(d) s-/+ a C+++ U+++ P-- L+@ E-- W+++ N+ o+ K- w+++ O? M-- V? PS+ PE Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
|
|
|
|
|
|
I'm working on systems with 3kB now. Memory isn't cheap in deep embedded.
GCS/GE d--(d) s-/+ a C+++ U+++ P-- L+@ E-- W+++ N+ o+ K- w+++ O? M-- V? PS+ PE Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
|
|
|
|
|
honey the codewitch wrote: they do a lot of little heap allocations without a custom allocator scheme. That's not entirely true, looks like there is a memory pool and allocations implementation. There is room for improvement here, but it's there.
lvgl/lv_malloc_builtin.c
lvgl/lv_tlsf.c
LVGL is using the Two-Level Segregated Fit memory allocator (as a conditional compilation)
honey the codewitch wrote: "how do you even run on systems with 48KB of RAM?" The scheme LVGL is using gives them complete control over memory usage. I like what I see.
|
|
|
|
|
Randor wrote: That's not entirely true, looks like there is a memory pool and allocations implementation. There is room for improvement here, but it's there.
Weird, I was just going by what the author of LVGL told me. Maybe I misunderstood him, or he me.
To err is human. Fortune favors the monsters.
|
|
|
|
|
honey the codewitch wrote: Weird, I was just going by what the author of LVGL told me. Wierd, I know. Some might say it's a complete mystery.
|
|
|
|
|
I'm going to chalk it up to a misunderstanding. Gabor knows LVGL pretty darn well.
To err is human. Fortune favors the monsters.
|
|
|
|
|
How did you create your lvlg dev environment.
I downloaded there packages both VS and Codeblocks, but it's a basket load of chaos.
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
It depends on what you're building for. I build the tests and stuff on linux, but when I use it with platform IO i can use it from windows, just using the PIO libraries. I recommend using platform IO. The only reason I build for linux is I'm contributing.
I hope you're not using this for desktop graphics. There are a lot better options out there for that. As a rule of thumb this is for little LCDs that usually connect to MCUs via SPI or similar.
To err is human. Fortune favors the monsters.
|
|
|
|
|
what options do you recommend?
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
It really depends on what you want to do. Without knowing what you're even trying to build, I can't tell you anything at all.
Edit: Never mind. Your other response cleared it up.
I don't do graphics on the desktop so I am not the one to ask. I've seen graphics libraries on code project.
I do know that SDL is probably the most popular desktop class cross platform graphics library around.
But if it's not IoT, I don't touch it.
To err is human. Fortune favors the monsters.
|
|
|
|
|
I was considering the desktop graphics as target. I looked at the platform IO stuff but too cryptically documented At least for my eyes.
I currently use glvw library for my graphics, but it's pretty low level. I really like the looks of vglv stuff, but I functionality overrides. I guess I'll return to glfw.
I am working on a GLFW driven windows console. Stupid, but trying to get away from windows driven windows console for my big application.
At least I can create (from bitmaps, yes ) and control the fonts I like. Thanx for your quick feed back.
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
Don't use LVGL for desktop graphics.
To err is human. Fortune favors the monsters.
|
|
|
|
|
understood. thanx
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
Wordle 449 6/6
⬜🟨🟨⬜⬜
⬜⬜⬜⬜⬜
⬜🟩⬜🟨⬜
⬜🟩⬜🟨🟩
🟩🟩⬜⬜🟩
🟩🟩🟩🟩🟩
"If we don't change direction, we'll end up where we're going"
|
|
|
|
|
Wordle 449 3/6
⬛⬛🟨🟨⬛
🟩⬛🟨🟨⬛
🟩🟩🟩🟩🟩
|
|
|
|
|
Wordle 449 4/6
🟨⬜🟨⬜⬜
🟨⬜🟨🟩⬜
🟩🟨🟩⬜⬜
🟩🟩🟩🟩🟩
|
|
|
|
|
Wordle 449 5/6
⬛🟩⬛⬛⬛
⬛🟩⬛⬛⬛
⬛🟩⬛⬛⬛
🟨🟩⬛⬛🟨
🟩🟩🟩🟩🟩
|
|
|
|
|
Wordle 449 5/6
⬜⬜🟨⬜🟨
⬜🟨🟨⬜⬜
🟩⬜🟨🟩⬜
🟩🟩⬜🟩⬜
🟩🟩🟩🟩🟩
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
Wordle 449 4/6
🟨⬜⬜⬜⬜
🟨⬜⬜🟨⬜
⬜🟨🟩🟩🟨
🟩🟩🟩🟩🟩
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Wordle 449 4/6
🟨⬜🟨⬜⬜
⬜⬜⬜🟨⬜
🟨⬜⬜⬜⬜
🟩🟩🟩🟩🟩
Software rusts. Simon Stephenson, ca 1994. So does this signature. me, 2012
|
|
|
|