Radeon RX 7900 XTX DP 2.0 to HDMI 2.1 Adapter not working to spec with the DP 2.1 Port
Brief summary of the problem:
Everything here has been tested with and without my other monitors.
Describe what you are doing?
As the 7900 XTX uses DP 2.1, I've found a DP 2.0 to HDMI 2.1 adapter that uses the PS196 — DisplayPort™ 2.0 to HDMI™ 2.1 Protocol Converter. This should have enough bandwidth to get 3840x2160@120 with VRR and 10 bit colour without DSC, as DP 2.0 and 2.1 both have a bandwidth of 80Gbps and HDMI 2.1 only needs 48Gbps.
What you expect?
When using this adapter in theory you'd expect it to work without issue getting the full use out of the monitor, 3840x2160@120 with VRR and 10 bit colour without DSC (not attempting 144Hz until 120Hz actually works).
What you're seeing instead?
When I first plugged the adapter and cable into the GPU my pc turned on and off 3 times with nothing showing up on the displays and then showed the American Megatrends screen. I don't quite remember what it said but it was something like safe boot. Pressing F1 and then quit without saving then booted into Arch systemd login like normal. Rebooting from now on doesn't cause the PC to power cycle and go to the American Megatrends screen.
In tty1 the resolution and refresh rate is set to 3840x2160@60, going into hyprland initally didn't make the refresh rate go to 120Hz but after messing around with the config I was able get 120Hz working, sway was able to get 120Hz with it set in the config straight away. Checking the monitors game menu overlay VRR is set to "Off", and when checking for DSC with:
find /sys/kernel/debug/dri | grep DP-1 | grep dsc | sudo xargs head -n-0
it shows that DSC is enabled:
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_disable_passthrough <==
head: error reading '/sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_disable_passthrough': Invalid argument
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dp_dsc_fec_support <==
FEC_Sink_Support: yes
DSC_Sink_Support: yes
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_slice_bpg <==
379
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_chunk_size <==
1680
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_pic_height <==
2160
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_pic_width <==
3840
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_bits_per_pixel <==
224
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_slice_height <==
108
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_slice_width <==
960
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_clock_en <==
1
which in theory shouldn't be happening with DP 2.1 (DP 2.0) → HDMI 2.1.
How frequent is the issue/Is it a one time occurrence/Does it appear multiple times but randomly/Can you easily reproduce it?
I have not found a way to get 3840x2160@120 with VRR and 10 bit colour without DSC working so this is happening every time I reboot. I cannot get the adapter working how it should and is a downgrade to using a DP 1.4 cable.
Extra information:
Before getting this adapter and currently after trying the adapter I use the display port cable that came with the monitor (cable: BN39-02617A 2236 AR). With this cable I can get 3840x2160@120 with VRR and 10 bit colour but it uses DSC.
$ hyprctl monitors
Monitor DP-1 (ID 0):
3840x2160@120.00000 at 0x0
description: Samsung Electric Company Odyssey G7 H1AK500000
make: Samsung Electric Company
model: Odyssey G7
serial: H1AK500000
active workspace: 1 (1)
special workspace: 0 ()
reserved: 0 0 30 0
scale: 1.00
transform: 0
focused: yes
dpmsStatus: 1
vrr: 1
activelyTearing: false
$ sudo find /sys/kernel/debug/dri | grep DP-1 | grep dsc | sudo xargs head -n-0
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_disable_passthrough <==
head: error reading '/sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_disable_passthrough': Invalid argument
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dp_dsc_fec_support <==
FEC_Sink_Support: yes
DSC_Sink_Support: yes
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_slice_bpg <==
757
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_chunk_size <==
960
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_pic_height <==
2160
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_pic_width <==
1920
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_bits_per_pixel <==
256
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_slice_height <==
108
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_slice_width <==
480
==> /sys/kernel/debug/dri/0000:0c:00.0/DP-1/dsc_clock_en <==
1
When using this monitor I get flickers on the screen occasionally which might be because its a DP 1.4 cable running at 3840x2160@120, I'm not sure. The flicker doesn't happen when the monitor is set to 60Hz.
When using my side monitors I set the modeline for the 3840x2160 monitor to:
modeline 1498.25 3840 4192 4616 5392 2160 2163 2168 2316 -hsync +vsync
as the GPU power idles at ~71W otherwise, and when its the only monitor active I have it to automatically switch to 3840x2160@120. The modeline is taken from this Video Timings Calculator, with the only settings modified being "Predefined Mode" set to "4K / 120" and "Bits per Component" to "10". Then copying the "CVT Modeline" under "Modelines".
Hardware description:
- CPU: AMD Ryzen 9 5950X
- GPU: 0c:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 [Radeon RX 7900 XT/7900 XTX/7900M] [1002:744c] (rev c8)
- System Memory: 64GB
- Display(s): Samsung Electric Company Odyssey G7 H1AK500000, Ancor Communications Inc VG248 DCLMQS078349 and Dell Inc. DELL P2418D MY3ND7B70VLT
- Type of Display Connection: DP 2.0 to HDMI 2.1 Adapter (Samsung), HDMI 2.0 (Ancor) and HDMI 2.0 (Dell)
- DP 2.0 to HDMI 2.1 Adapter: CalDigit Active DisplayPort 2.0 to HDMI 2.1 Adapter
- HDMI 2.1 Cable: Cable Matters 48Gbps Ultra HD 8K Right Angle HDMI Cable 2m
System information:
- Distro name and Version: Arch Linux
- Kernel version: 6.7.6-arch1-2
- Custom kernel: N/A
- AMD official driver version: N/A
- Mesa Driver: 1:24.0.2-1
How to reproduce the issue:
- Make sure you're using a monitor/TV that is 3840x2160@120 and has VRR and 10 bit colour.
- Buy the same adapter and a HDMI 2.1 48Gbps cable.
- Plug the adapter into the DP 2.1 port on the GPU, and the HDMI 2.1 48Gbps cable into the adapter and monitor/TV.
- Turn on your PC and test. (If you read the issue, I have already explained how to test.)
Attached files:
Screenshots/video files
Log files (for system lockups / game freezes / crashes)
- Dmesg log (full log) Taken after logging into system.