Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor and test LUT functions #353

Merged
merged 15 commits into from
Sep 24, 2024
Merged

Refactor and test LUT functions #353

merged 15 commits into from
Sep 24, 2024

Conversation

vroland
Copy link
Owner

@vroland vroland commented Sep 1, 2024

Refactors waveform lookup calculations to be more maintainable and adds tests to avoid regressions. In the process, line masking is simplified and ordering problems in 2ppB mode are fixed (this should fix #284).
8ppB now supports both PREVIOUSLY_BLACK and PREVIOUSLY_WHITE.

@vroland vroland marked this pull request as ready for review September 4, 2024 19:54
@martinberlin martinberlin self-requested a review September 5, 2024 08:19
@martinberlin
Copy link
Collaborator

martinberlin commented Sep 5, 2024

I will be testing this over the weekend. Question @vroland

  1. In line_queue.c basically the masking has been removed right, now is handled different. Can you explain in a few words how it changed?

  2. How can we use the new fb_mode_test ?
    Visually it draws something on the display. And based on that we can check what mode would work best and also make sure that the display works correctly?

  3. In the process, line masking is simplified and ordering problems in 2ppB mode are fixed (this should fix MODE_PACKING_2PPB renders "stripes" #284)
    That's awesome.

Is there now a way to also draw something in 8ppB mode, basically full monochrome, using the high level API?
Meaning we can have a smaller framebuffer and make UX faster than using the 2ppB mode. That could be interesting for some users testing LVGL.

Copy link
Collaborator

@martinberlin martinberlin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All examples seem to still work after this upgrade. Would like to have the questions made before replied but does not have to be in this PR.
We can move them to discussions.

@vroland
Copy link
Owner Author

vroland commented Sep 24, 2024

For 1: The issue was that on the esp32-s3 the line queue was used for output lines after the waveform lookup, but for v6 and below it was used for raw input data. I moved the masking so it always operates on the output lines.

For 2: The idea is to have a quick visual test that things look correct with the different buffer settings. Maybe eventually we can also use it to test the actual output in the simulator.

The last question: With the high level API, you can't use full monochrome because the diffing and draw functions are not implemented for it. You'd need to use the low level API :/

@vroland vroland merged commit 2591847 into main Sep 24, 2024
46 checks passed
@vroland vroland deleted the lut-refactor branch September 24, 2024 20:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

MODE_PACKING_2PPB renders "stripes"
2 participants