Comments (13)
Cool will try this when I find some time. Leaving this open for a while so I don't forget!
I don't know if it's the best way, let me test for a few days.
from epdiy.
@lanistor Another idea: Afaik LVGL also supports grayscale (8 bit). You could use two buffers, one as a draw buffer for LVGL and another that you transfer into then calling flush_cb. Since there you don't need to care about rotation / bounds checking it should be faster, even more so when using the S3 vector instructions.
Not sure if it's worth the extra work and memory consumption, just throwing the idea out there.
from epdiy.
Lanistor we 've been working into LVGL also for a client needs using a v7 clone.
You can follow our efforts here: https://github.com/martinberlin/lv_port_esp32-epaper/
Target is an Eink Kaleido 6" display. But it could be easily modified to support other displays.
Some of our experiences optimizing time for LVGL resumed in a few sentences:
- Use only DU mode (Sorry no grayscales if you want to go fast)
- Do not update chunks all the time like if it was a fast parallel TFT.
Only push the whole update when the updates in the display are complete
if (lv_disp_flush_is_last(drv)) { // only send to e-paper when complete
// DEFINE update_area
epd_hl_update_area(&hl, updateMode, temperature, update_area); }
Trying to document this slowly here:
https://github.com/martinberlin/lv_port_esp32-epaper/wiki/epdiy-v7 Please share your thoughts also and be welcomed to try our repository.
from epdiy.
I found another way for optimizing: rendering screen on cpu that does not contain ui thread, this speed up a lot.
That sounds very interesting. When you meant rendering screen on CPU do you mean core of the MCU? Can you please give some more details and share what was the change to make that happen?
Yeah, here is the demo code : https://github.com/flickerlist/lvgl_epaper_drivers/blob/release/monochrome/lvgl_tft/epdiy_epaper.cpp.
I start a new thread on core 1
(while ui thread on core 0
), and i will suspend the thread when no rendering, to save power.
It need well adapted to business logic, the thread's resume
, suspend
must called in ui thread, because there will be thread synchronization issues.
In my business, i run epdiy_check_pause
in ui thread's loop checking,
from epdiy.
Cool will try this when I find some time. Leaving this open for a while so I don't forget!
from epdiy.
@lanistor how is going on with this?
maybe you can make an LVGL fork and we can link your efforts from here?
Because I’m also interested on this topic
from epdiy.
I'd like both ideas very much. @lanistor please make a fork of LVGL so I can follow our progress.
Soon I will make myself a new touch Kit and try again now that we have a faster way to send the framebuffer with S3. The only problem I see with LVGL is that it updates always small parts of the display, which makes of course total sense, but is not optimized for epaper so using it a lot in a fixed UX generates some ghosting. Someone has to find a clever way to balance that otherwise is very hard to make usable interfaces
from epdiy.
@lanistor Another idea: Afaik LVGL also supports grayscale (8 bit). You could use two buffers, one as a draw buffer for LVGL and another that you transfer into then calling flush_cb. Since there you don't need to care about rotation / bounds checking it should be faster, even more so when using the S3 vector instructions. Not sure if it's worth the extra work and memory consumption, just throwing the idea out there.
I didn't find the grayscale (8 bit), what's it name?
from epdiy.
Hello Lanistor, any update in this field?
from epdiy.
Sorry, i havn't start on it yet, for Busying in mass production of products.
from epdiy.
It’s no problem I’m also busy in another things. But I have actually the same needs for a client, maybe we can help each other on this one
from epdiy.
Lanistor we 've been working into LVGL also for a client needs using a v7 clone. You can follow our efforts here: https://github.com/martinberlin/lv_port_esp32-epaper/ Target is an Eink Kaleido 6" display. But it could be easily modified to support other displays.
Some of our experiences optimizing time for LVGL resumed in a few sentences:
- Use only DU mode (Sorry no grayscales if you want to go fast)
- Do not update chunks all the time like if it was a fast parallel TFT.
Only push the whole update when the updates in the display are completeif (lv_disp_flush_is_last(drv)) { // only send to e-paper when complete // DEFINE update_area epd_hl_update_area(&hl, updateMode, temperature, update_area); //update_area}
Trying to document this slowly here: https://github.com/martinberlin/lv_port_esp32-epaper/wiki/epdiy-v7 Please share your thoughts also and be welcomed to try our repository.
Got it, thanks a lot.
I found another way for optimizing: rendering screen on cpu that does not contain ui thread, this speed up a lot.
from epdiy.
I found another way for optimizing: rendering screen on cpu that does not contain ui thread, this speed up a lot.
That sounds very interesting. When you meant rendering screen on CPU do you mean core of the MCU?
Can you please give some more details and share what was the change to make that happen?
from epdiy.
Related Issues (20)
- Why epd_hl_update_area always redraw fullscreen in s3_lcd branch? HOT 9
- Epdiyv7 with ED060SC7
- Slack link is dead HOT 1
- Areas of the screen not in the rendering area will become lighter in color. HOT 30
- epd_renderer_init failing on v7 board HOT 6
- ED060SCL support HOT 1
- please change license to MIT HOT 3
- v7 board stack in battery charging mode HOT 2
- Errors on esp32s3 compile HOT 3
- The `ED060XC3` waveform on s3 cann't render 060XCD, 060XCH clearly with MODE_DU mode. HOT 2
- It there a way to adjust vcom by code or by hand on s3 board? HOT 2
- Will epd_push_pixels_lcd in s3 support partial area? HOT 4
- kicad schematics HOT 5
- Implement Wokwi testing HOT 12
- Last pixel per line does not change on display HOT 4
- epd_write_string confusion HOT 11
- Cppcheck-Nitpicking
- opensans10.h broken HOT 1
- Weird behaviour on ESP-IDF v5.3 HOT 19
- The V5 and V7 board drive the same eink display, and the display effect is different HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from epdiy.