GithubHelp home page GithubHelp logo

Comments (13)

lanistor avatar lanistor commented on June 3, 2024 1

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.

vroland avatar vroland commented on June 3, 2024 1

@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.

martinberlin avatar martinberlin commented on June 3, 2024 1

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.

lanistor avatar lanistor commented on June 3, 2024 1

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.

martinberlin avatar martinberlin commented on June 3, 2024

Cool will try this when I find some time. Leaving this open for a while so I don't forget!

from epdiy.

martinberlin avatar martinberlin commented on June 3, 2024

@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.

martinberlin avatar martinberlin commented on June 3, 2024

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 avatar lanistor commented on June 3, 2024

@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.

martinberlin avatar martinberlin commented on June 3, 2024

Hello Lanistor, any update in this field?

from epdiy.

lanistor avatar lanistor commented on June 3, 2024

Sorry, i havn't start on it yet, for Busying in mass production of products.

from epdiy.

martinberlin avatar martinberlin commented on June 3, 2024

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 avatar lanistor commented on June 3, 2024

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); //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.

martinberlin avatar martinberlin commented on June 3, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.