-
Notifications
You must be signed in to change notification settings - Fork 8.2k
display: add frame_incomplete #81250
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
Merged
nashif
merged 4 commits into
zephyrproject-rtos:main
from
Finomnis:display_frame_incomplete
Nov 16, 2024
Merged
display: add frame_incomplete #81250
nashif
merged 4 commits into
zephyrproject-rtos:main
from
Finomnis:display_frame_incomplete
Nov 16, 2024
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
f79e666 to
02c43f0
Compare
02c43f0 to
578dd22
Compare
578dd22 to
a21870e
Compare
Introduces support for double-buffered/latched displays. Currently, every write has to be presented to the user immediately, which negates the advantage of latched displays to prevent frame tearing. Now, GUI managers can indicate whether the current `display_write` call is the last call of the frame or not, allowing displays to group writes to a single present. Signed-off-by: Martin Stumpf <[email protected]>
In frames with multiple writes (officially supported through `CONFIG_LV_Z_VDB_SIZE`) the display needs to be signalled that the current frame is over and the content should be displayed. This allows displays to present the UI without tearing artifacts. Signed-off-by: Martin Stumpf <[email protected]>
The newly introduced `frame_incomplete` flag of `display_buffer_descriptor` needed to be added at several places to avoid uninitialized memory. Signed-off-by: Martin Stumpf <[email protected]>
Adds frame synchronization to every frame. This prevents frame tearing. Signed-off-by: Martin Stumpf <[email protected]>
a21870e to
df130b8
Compare
danieldegrasse
approved these changes
Nov 13, 2024
faxe1008
approved these changes
Nov 16, 2024
kartben
approved these changes
Nov 16, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
area: Display
area: LVGL
Light and Versatile Graphics Library Support
area: Samples
Samples
area: Video
Video subsystem
Release Notes
To be mentioned in the release notes
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Rework of #79936.
Fixes #79798.
Adds the new flag
frame_incompletetostruct display_buffer_descriptorthat indicates that more writes will follow in the current frame.This allows GUIs to communicate where, at multi-write frames, the frame ends.
This in turn allows display to understand the frame border, which can be useful for page flipping or "tearing enable" signal handling.
For more discussion, see #79936.
The effect of this change is that displays can now present multi-writes at once, to prevent the 'rolling shutter' effect of multiple separate partial writes, like so:
Before:

After:
