-
Notifications
You must be signed in to change notification settings - Fork 5.3k
drm/vc4: Correct buffer address on async commit when vertically flipped #7169
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
Open
6by9
wants to merge
1
commit into
raspberrypi:rpi-6.12.y
Choose a base branch
from
6by9:rpi-6.12.y-drm
base: rpi-6.12.y
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My gut feeling is this should be rounded up.
If height is
1.9*(1<<16)without flipping, then I'd expect the HVS to fetch line 0, then 1.With flipping I'd expect it to fetch line 1, then 0.
It feels like with the round down, it will be fetching line 0, then line -1.
Note: I suspect there are other instances of
vc4_state->src_h[0] >> 16being used as height in this file which need thought about rounding.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's matching the handling in the non-async path at https://github.com/raspberrypi/linux/blob/rpi-6.12.y/drivers/gpu/drm/vc4/vc4_plane.c#L1387-L1389.
Ideally the common bits should be extracted into a helper rather than duplicated, but I didn't fancy doing that right now.
Kivy is triggering this path due to waiting on the v3d buffer fence triggering vc4_async_page_flip_fence_complete / vc4_async_page_flip_complete. It looks like they just call
DRM_IOCTL_MODE_PAGE_FLIPto triggerdrm_atomic_set_fb_for_plane.AIUI this is the legacy async flip hook, and applications should really be using the atomic async commits which would go through
vc4_plane_atomic_async_[check|update]which would usevc4_plane_mode_setto generate a complete dlist using the normal path. I'm really loathed to expend too much energy on fixing up the legacy path.