batocera-linux / batocera.linux

batocera.linux
https://batocera.org
Other
1.95k stars 504 forks source link

[rpi4] Limited RGB range #12476

Open xboxones1 opened 2 weeks ago

xboxones1 commented 2 weeks ago

Batocera build version

40

Your architecture

raspberry pi 4

Your Graphic Processor Unit(s) (GPU)

raspberry pi 4

Issue description

When I connect to my raspberry pi 4 monitor via hdmi I get a limited rgb range, in other distributions I can force switch to full rgb range with xrandr. xrandr --output HDMI-1 --set "Broadcast RGB" "Full" It seems to be possible to do it with other utilities such as modetest and kmstest, but batocera for raspberry pi 4 doesn't have anything like that, so I can't fix this problem.

n2qz commented 1 week ago

Not a bug.

You're trying to run a command to control an Intel GPU-specific parameter on an xorg display, while rpi4 uses a VideoCore GPU on Wayland.

The correct way to adjust such parameters on rpi4 is in /boot/config.txt

Try setting hdmi_pixel_encoding=2

For more info see https://elinux.org/RPiconfig

xboxones1 commented 1 week ago

@n2qz You have the wrong information, hdmi_pixel_encoding is a deprecated option for the deprecated fkms driver, which is now unsupported. "Broadcast RGB Full" this toggle option was backported into the kernel by the raspberry command a long time ago and it works. For x11 this is xrandr --output HDMI-1 --set "Broadcast RGB" "Full", and for wayland, you can use modetest -M vc4 -w 32:"Output format":3 I tested modetest on wayland and it works too, but only when I add this command to .profile

n2qz commented 1 week ago

You tested it with modetest on Batocera?

xboxones1 commented 6 days ago

I tested modetest on RaspberryOS and Ubuntu with Wayland. As I wrote in the first post, the Batocera distribution for raspberry pi lacks the necessary packages. modetest is part of libdrm-tests

n2qz commented 6 days ago

Install the build from this drive: https://drive.google.com/drive/folders/1OaxfQoMTO08jVlKbaMM-iGpo1sXnIj4P?usp=drive_link

Put your modetest commands in /boot/preshare.sh (remember to remount /boot as read-write first), then reboot.

Here's what I tested with, I can observe that the values are changed but I don't notice any change in the way the display appears on my system:

[root@adric-wlan0 /boot]# cat /boot/preshare.sh
modetest -M vc4 -w 32:"Broadcast RGB":1
modetest -M vc4 -w 32:"Output format":1
xboxones1 commented 6 days ago

Thanks, modetest works, it switches to full mode. But in this build there is a problem not related to modetest. For some reason the whole interface does not work smoothly, as if in 20-25fps (although according to the frame counter more). Compared with version 40 and there everything is fine.

n2qz commented 5 days ago

Thanks for the confirmation. I'll get the modetest binary included in either v41 or v42, depending on when our next buildroot bump occurs.

The other issue is completely separate, and was already reported. You may want to chime in on the relevant report.

xboxones1 commented 4 days ago

This is relevant not only for raspberry pi 4, but for all models running on kms driver. At least libdrm-tests should be enabled for raspberry pi 5 as well.