-
Notifications
You must be signed in to change notification settings - Fork 1.7k
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
24bit framebuffer issues #41
Comments
32bit works if you also add "framebuffer_ignore_alpha=1". I have not actually investigated it, but to me the corruption without this, and especially the corruption in 24bit packed-pixel mode, looks more like an X issue than framebuffer. |
The distro I'm using is raspbian. tried 32bit with framebuffer_ignore_alpha=1. It looks less mangled than 24bit, but sometimes (not always, as my desktop bg, which is a photo, looks fine) the colors are off for unknown reasons, plus xterm with -fg orange -bg black doesn't show any text. Interestingly, The same thing happens without X, with links2 -g (uses directfb) These screenshots show the problem (via gimp and fbcat respectively). They look on my workstation the same way as the wrongness looked in the pi: My first reaction would be to blame libpng or libjpeg, but both png and jpeg images display fine with "display" from imagemagick, so I have little idea what's going on. |
As somebody asked. root@pi:~# /opt/vc/bin/vcgencmd version |
Do the 24-bit and 32-bit modes still have issues? Is there a work around? Does this issue also effect omxplayer? Will this be addressed soon? Seems pretty important if you plan on using RPi to play media. |
I believe all if correct with framebuffer_ignore_alpha=1. |
I will run some tests with a colorimeter to determine if the colors are accurate and the video is sent out with 0-255 levels. |
I tested these display settings with omxplayer on an HDTV. I measured the MP4 patterns with a colorimeter and compared them to a known reference. I ignored the EDID from the display and set it to 1080p, 60Hz. hdmi_group=2 DMT Results: hdmi_group=1 CEA Results: How can I get the MP4s to play with 0-255 levels? |
Can you try adding
[edit: corrected to match current firmware] Actually looking at code, DMT should always use RGB_FULL. Only CEA modes can be change with hdmi_pixel_encoding. I'd be interested to know if CEA in RGB_FULL mode behaves the same as DMT. Are you sure DMT is using 16-235 levels? (rather than just being wrong for some other reason) |
I tested with the Black Clipping MP4 from the AVSHD709 patterns set. It flashes from 1-25 on a 0 background. When I display this same pattern with a device that is known to output 0-255, I can adjust the brightness to see below 16 levels. With the RPi, the pattern does not change from 16 down no matter how the brightness is adjusted. It was the same with both modes that I tested, but with DMT I had to adjust the brightness ~15% more to make it match the CEA mode. I will run the same tests tonight with both hdmi_pixel_encoding settings. I also plan on running some tests on the patterns that I can generate with Python. |
All tests are being done with Pygame fills from the console to a fullscreen. The display that I am using for the tests adjusts it's levels depending on the input, so after making sure that the display was set right, I am getting 0-255 levels with DMT, regardless of the hdmi_pixel_encoding setting. With CEA there is no difference between hdmi_pixel_encoding=0 and hdmi_pixel_encoding=1, I always get 16-235 levels. DMT gives pretty good results, very close to a reference pattern generator. |
Supporting full range with CEA is optional, so I'm guessing your monitor doesn't support it. So are you happy with DMT output, for both video and console output? |
DMT is good. |
I believe framebuffer_depth=24 now works, and framebuffer_depth=32 works with framebuffer_ignore_alpha=1. |
Hi, I want to play and render a video with gstreamer (eglglessink) and use directfb to add an overlay. I updated /boot/config.txt, and /etc/directfbrc in consequence, but still end with wrong colors in directfb (video output from gstreamer is correct). /boot/config.txt /etc/directfbrc /opt/vc/bin/vcgencmd version |
I've just started x with 16, 24 and 32 bpp, and each time the colours were correct. I have a suspicion that directfb doesn't query the kernel fb driver for the RGB order. E.g.
and just assumes the wrong order. |
Thanks a lot :) I can see now why the red and blue colors are swapped... directfb-1.2.10.0 systems/fbdev/fbdev.c : 1774
bcm2708_fb.c#L124
Do you know the reason why directfb assigns the RGBA offsets such a way (BGRA)? |
It's a bug? They should query ioctl(fh, FBIOGET_VSCREENINFO, &var) to get the offsets not hardcode them. See: http://git.busybox.net/busybox/plain/util-linux/fbset.c?h=1_6_stable |
Using framebuffer_depth=24 in config.txt , there's graphical problems on X. 32bit is even worse.
As 16bit is horrid and the hardware can do 24bit, fixing this and making 24bit the default would make a huge difference.
The text was updated successfully, but these errors were encountered: