When playing HDR content on the Rock Pi 4 it triggers HDR on my Sony Bravia AG8 but there seems to be something wrong with the colorspace. The colors look washed out and there is visible banding. The TV seems to interpret the signal as BT.709 and limited range (auto setting). Manually changing the colorspace to BT.2020 on the tv doesn't fix the banding. Setting the range to full produces incorrect black levels.
I tried using a Raspberry Pi 4 with an identical setup, there the colors look correct with no banding. In this case the auto setting on the TV interprets the signal as BT.2020 and limited range.
Not sure if it matters, but when checking modetest on the Rock Pi there doesn't seem to be any colorspace property
modetest -c
Connectors:
id encoder status name size (mm) modes encoders
64 63 connected HDMI-A-1 1440x810 41 63
props:
1 EDID:
flags: immutable blob
blobs:
value:
00ffffffffffff004dd9048201010101
011c0103809051780a0dc9a057479827
12484c2108008180a9c0714fb3000101
01010101010108e80030f2705a80b058
8a009f295300001e023a801871382d40
582c45009f295300001e000000fc0053
4f4e5920545620202a30300a000000fd
00173e0e883c000a20202020202001e6
020365f05b61605d5e5f621f10140513
0420223c3e1216030711150206016566
2c0d7f071507503d07bc570600830f00
006e030c002000b83c2f008001020304
67d85dc401788001eb0146d000450380
8660768fe200cbe305ff01e50f030000
06e3060d01011d007251d01e206e2855
009f295300001e0000000000000000b8
2 DPMS:
flags: enum
enums: On=0 Standby=1 Suspend=2 Off=3
value: 0
5 link-status:
flags: enum
enums: Good=0 Bad=1
value: 0
6 non-desktop:
flags: immutable range
values: 0 1
value: 0
4 TILE:
flags: immutable blob
blobs:
value:
65 max bpc:
flags: range
values: 8 16
value: 0
66 content type:
flags: enum
enums: No Data=0 Graphics=1 Photo=2 Cinema=3 Game=4
value: 0
7 HDR_OUTPUT_METADATA:
flags: blob
blobs:
value:
Display More
compared to the Raspberry Pi
modetest -c
Connectors:
id encoder status name size (mm) modes encoders
32 31 connected HDMI-A-1 1440x810 41 31
props:
1 EDID:
flags: immutable blob
blobs:
value:
00ffffffffffff004dd9048201010101
011c0103809051780a0dc9a057479827
12484c2108008180a9c0714fb3000101
01010101010108e80030f2705a80b058
8a009f295300001e023a801871382d40
582c45009f295300001e000000fc0053
4f4e5920545620202a30300a000000fd
00173e0e883c000a20202020202001e6
020365f05b61605d5e5f621f10140513
0420223c3e1216030711150206016566
2c0d7f071507503d07bc570600830f00
006e030c002000b83c2f008001020304
67d85dc401788001eb0146d000450380
8660768fe200cbe305ff01e50f030000
06e3060d01011d007251d01e206e2855
009f295300001e0000000000000000b8
2 DPMS:
flags: enum
enums: On=0 Standby=1 Suspend=2 Off=3
value: 0
5 link-status:
flags: enum
enums: Good=0 Bad=1
value: 0
6 non-desktop:
flags: immutable range
values: 0 1
value: 0
4 TILE:
flags: immutable blob
blobs:
value:
37 Colorspace:
flags: enum
enums: Default=0 SMPTE_170M_YCC=1 BT709_YCC=2 XVYCC_601=3 XVYCC_709=4 SYCC_601=5 opYCC_601=6 opRGB=7 BT2020_CYCC=8 BT2020_RGB=9 BT2020_YCC=10 DCI-P3_RGB_D65=11 DCI-P3_RGB_Theater=12
value: 0
33 left margin:
flags: range
values: 0 100
value: 0
34 right margin:
flags: range
values: 0 100
value: 0
35 top margin:
flags: range
values: 0 100
value: 0
36 bottom margin:
flags: range
values: 0 100
value: 0
38 max bpc:
flags: range
values: 8 12
value: 8
7 HDR_OUTPUT_METADATA:
flags: blob
blobs:
value:
39 Broadcast RGB:
flags: enum
enums: Automatic=0 Full=1 Limited 16:235=2
value: 0
41 0 disconnected HDMI-A-2 0x0 0 40
props:
1 EDID:
flags: immutable blob
blobs:
value:
2 DPMS:
flags: enum
enums: On=0 Standby=1 Suspend=2 Off=3
value: 0
5 link-status:
flags: enum
enums: Good=0 Bad=1
value: 0
6 non-desktop:
flags: immutable range
values: 0 1
value: 0
4 TILE:
flags: immutable blob
blobs:
value:
42 Colorspace:
flags: enum
enums: Default=0 SMPTE_170M_YCC=1 BT709_YCC=2 XVYCC_601=3 XVYCC_709=4 SYCC_601=5 opYCC_601=6 opRGB=7 BT2020_CYCC=8 BT2020_RGB=9 BT2020_YCC=10 DCI-P3_RGB_D65=11 DCI-P3_RGB_Theater=12
value: 0
33 left margin:
flags: range
values: 0 100
value: 0
34 right margin:
flags: range
values: 0 100
value: 0
35 top margin:
flags: range
values: 0 100
value: 0
36 bottom margin:
flags: range
values: 0 100
value: 0
43 max bpc:
flags: range
values: 8 12
value: 8
7 HDR_OUTPUT_METADATA:
flags: blob
blobs:
value:
44 Broadcast RGB:
flags: enum
enums: Automatic=0 Full=1 Limited 16:235=2
value: 0
Display More
Looking at the logs for the Raspberry Pi it seems to change colorspace and bpc before playing the video. I can't find anything like this in the Rock Pi logs.
debug <general>: SetHDR: setting connector colorspace to BT2020_YCC
debug <general>: CVideoLayerBridgeDRMPRIME::Configure - setting max bpc to 12 (true)
Runnig kmsprint while playing the video on the Rock Pi it seems like it should be outputting BT.2020 (COLOR_ENCODING (46) = 2) though.
kmsprint -p
Connector 0 (64) HDMI-A-1 (connected)
EDID (1) = blob-id 68 len 256 (immutable)
DPMS (2) = 0 (On) [On=0|Standby=1|Suspend=2|Off=3]
TILE (4) = blob-id 0 (immutable)
link-status (5) = 0 (Good) [Good=0|Bad=1]
non-desktop (6) = 0 [0 - 1] (immutable)
HDR_OUTPUT_METADATA (7) = blob-id 74 len 32
CRTC_ID (20) = object id 62
max bpc (65) = 0 [8 - 16]
content type (66) = 0 (No Data) [No Data=0|Graphics=1|Photo=2|Cinema=3|Game=4]
Encoder 0 (63) TMDS
Crtc 1 (62) [email protected] 296.703 3840/1276/88/296/+ 2160/8/10/72/+ 24 (23.98) D
OUT_FENCE_PTR (19) = 0 [0 - 18446744073709551615]
ACTIVE (22) = 1 [0 - 1]
MODE_ID (23) = blob-id 76 len 68
VRR_ENABLED (24) = 0 [0 - 1]
GAMMA_LUT (28) = blob-id 0
GAMMA_LUT_SIZE (29) = 1024 [0 - 4294967295] (immutable)
Plane 2 (42) fb-id: 75 (crtcs: 1) 0,0 3840x1920 -> 0,120 3840x1920 (XR24 AR24 XB24 AB24 RG24 BG24 RG16 BG16 NV12 NV16 NV24 NV15 NV20 NV30)
type (8) = 1 (Primary) [Overlay=0|Primary=1|Cursor=2] (immutable)
SRC_X (9) = 0 [0 - 4294967295]
SRC_Y (10) = 0 [0 - 4294967295]
SRC_W (11) = 251658240 [0 - 4294967295]
SRC_H (12) = 125829120 [0 - 4294967295]
CRTC_X (13) = 0 [-2147483648 - 2147483647]
CRTC_Y (14) = 120 [-2147483648 - 2147483647]
CRTC_W (15) = 3840 [0 - 2147483647]
CRTC_H (16) = 1920 [0 - 2147483647]
FB_ID (17) = object id 75
IN_FENCE_FD (18) = -1 [-1 - 2147483647]
CRTC_ID (20) = object id 62
IN_FORMATS (30) = blob-id 43 len 128 (immutable)
rotation (44) = 0x1 (rotate-0) [rotate-0=0x1|reflect-x=0x10|reflect-y=0x20]
zpos (45) = 0 [0 - 0] (immutable)
COLOR_ENCODING (46) = 2 (ITU-R BT.2020 YCbCr) [ITU-R BT.601 YCbCr=0|ITU-R BT.709 YCbCr=1|ITU-R BT.2020 YCbCr=2]
COLOR_RANGE (47) = 0 (YCbCr limited range) [YCbCr limited range=0|YCbCr full range=1]
FB 75 3840x1920 NV15
Plane 3 (48) fb-id: 71 (crtcs: 1) 0,0 3840x2160 -> 0,0 3840x2160 (XR24 AR24 XB24 AB24 RG24 BG24 RG16 BG16 NV12 NV16 NV24 NV15 NV20 NV30)
type (8) = 0 (Overlay) [Overlay=0|Primary=1|Cursor=2] (immutable)
SRC_X (9) = 0 [0 - 4294967295]
SRC_Y (10) = 0 [0 - 4294967295]
SRC_W (11) = 251658240 [0 - 4294967295]
SRC_H (12) = 141557760 [0 - 4294967295]
CRTC_X (13) = 0 [-2147483648 - 2147483647]
CRTC_Y (14) = 0 [-2147483648 - 2147483647]
CRTC_W (15) = 3840 [0 - 2147483647]
CRTC_H (16) = 2160 [0 - 2147483647]
FB_ID (17) = object id 71
IN_FENCE_FD (18) = -1 [-1 - 2147483647]
CRTC_ID (20) = object id 62
IN_FORMATS (30) = blob-id 49 len 104 (immutable)
rotation (50) = 0x1 (rotate-0) [rotate-0=0x1|reflect-x=0x10|reflect-y=0x20]
zpos (51) = 1 [1 - 1] (immutable)
COLOR_ENCODING (52) = 0 (ITU-R BT.601 YCbCr) [ITU-R BT.601 YCbCr=0|ITU-R BT.709 YCbCr=1|ITU-R BT.2020 YCbCr=2]
COLOR_RANGE (53) = 0 (YCbCr limited range) [YCbCr limited range=0|YCbCr full range=1]
FB 71 3840x2160 AR24
Display More
Rock Pi logs: Link
Raspberry Pi logs: Link
Comparison Image:
Not sure what the cause is here, any ideas or suggestions?