-
Notifications
You must be signed in to change notification settings - Fork 5.1k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Visual artifacts when placing transparent planes across multiple CRTCs on Pi5 #5912
Comments
I've added a testcase, so this should hopefully be easily reproducible. |
I can reproduce this. On a quick look I suspect the LBM (line buffer memory used for vertical scaling) is being overwritten by the second display. I'll dig some more. |
I believe I have a fix. if you wait about an hour for github CI to complete build, you can run:
to install a test kernel with the fix in. Please report if it helps. |
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: raspberrypi#5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
I can hopefully test this next week, but from the description/diff it sounds good. Thanks a lot! |
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
Got around to finally test this (in a local 6.1 branch) and it fixes the issue as expected. Thanks! Would it be possible to also have an official fix for the 6.1 version? |
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
The code was reducing the number of components by one when we were not blending with alpha. But that only makes sense if the components include alpha. For YUV, we were reducing the number of components for Y from one to zero which resulted in no lbm space being allocated. Fixes: #5912 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
Describe the bug
When running my software info-beamer I noticed an odd flickering when using transparent planes across multiple CRTCs. This only happens on the Pi5. The same SD card on the Pi4 works as expected. Basically the output looks like this:
The artifacts are not always the same. Restarting the program results in a different output. For example like this:
It's also only static when the plane placement doesn't change. Once I change the plane's coordinates, things look even stranger: Here's a short (1.4MB) video showing the effect.
What my software is doing is placing a DRM framebuffer (in this case a YU12, but the same thing happens with P030) onto both CRTCs. kmsprint looks like this:
The commands I use for my drm atomic commits look like this:
In
/sys/kernel/debug/dri/1/state
it looks like this:Using alpha 1, so 0xffff as plane alpha property value seems to work. Similarly only using a single CRTC also works regardless of alpha used.
Adding another opaque plane behind the transparent plane also does not make any difference.
Steps to reproduce the behaviour
Created a minimal test case bundle. Download issue-5912.tgz and extract it anywhere. Stop X/Wayland, so KMS/DRM is free to use and connect two FullHD capable displays, then run
./run-testcase
.Device (s)
Raspberry Pi 5
System
32bit userland Raspberry Pi OS, all updates installed:
Logs
No response
Additional context
No response
The text was updated successfully, but these errors were encountered: