Raspberry Pi D0 Framebuffer Alpha
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Bug
- Clarity
- Needs clarification
- Activity status
- Stale
- Tech stack
- raspberry-pi
Research direction
Start by reviewing the related DRM code in vc4_plane.c at lines 1221-1267 and the behavior of framebuffer_ignore_alpha=1. Investigate whether a mailbox command or register setting controls framebuffer alpha interpretation; done means the D0 framebuffer treats RGB images with null alpha as 0xFF so lower-level OS interfaces no longer render them black or with black artifacts.
Written by the indexing model from the issue text.
Description
In the process of trying to port edk2 over to the D0 version of the Raspberry Pi 5, I discovered that the firmware framebuffer is interpreting RGB images with no alpha explicitly set (null alpha) as an alpha value of 0, rather than an alpha value of 0xFF (100% opacity). It was easy to edit the code in edk2 to fill alpha with 0xFF on all write operations, but once the framebuffer is handed over to the OS I can’t control the framebuffer and many lower level OS’s do not handle pre-multiplication processes internally. Higher level OS’s that premultiply internally and always return 100% opacity to the Pi work without issue, but lower level OS’s that use only RGB images in their UI (ESXi) appear black and others that have a mix of RGB and RGBA elements will have black artifacts anywhere that an RGB only UI element exists. Framebuffer_ignore_alpha=1 has no effect.
Is it possible to have the firmware framebuffer interpret null alpha as 100% instead of 0 to resolve this? Is there a mailbox command or register setting that would change the state? I can see the related DRM code in vc4_plane.c #L1221-L1267 that shows that there is a hardware distinction and I’m hoping that there is a way to address this issue.
The earlier C1 version has none of the issues I mentioned above.
- Dominant language
- No language data
- Stars
- 5.6k
- Forks
- 1.7k
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from raspberrypi/firmware
-
Difficulty 4/5 3-5 days Newbie friendliness 38/100
raspberrypi/firmware#2042 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
raspberrypi/firmware#2040 · 2 comments ·
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
raspberrypi/firmware#2039 · 6 comments ·
-
Difficulty 4/5 3-5 days Newbie friendliness 42/100
raspberrypi/firmware#2038 · 4 comments ·
-
Difficulty 4/5 3-5 days Newbie friendliness 38/100
raspberrypi/firmware#2037 · 4 comments ·
All issues in raspberrypi/firmware
Similar issues
-
Area:Math p5.js 2.0+
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
processing/p5.js#9197 · 1 comment ·
-
Template: Bug
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
BabylonJS/Babylon-Lite#756 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
CyberAgent/psd2svg#360 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
BabylonJS/Babylon.js#18928 ·