[PATCH v3] drm/edid DSC pass-through timing support

From: Yaroslav Bolyukin
Date: Sun Feb 26 2023 - 09:19:20 EST


VESA DisplayID spec allows the device to force its DSC bits per pixel
value.

For example, the HTC Vive Pro 2 VR headset uses this value in
high-resolution modes (3680x1836@90-120, 4896x2448@90-120), and when the
kernel doesn't respect this parameter, the garbage is displayed on HMD
instead.

I am unaware of any other hardware using this value; however, multiple
users have tested this patch on the Vive Pro 2, and it is known to work and
not break anything else.

Regarding driver support - I have looked at amdgpu and Nvidia's
open-gpu-kernel-modules, and both seem to have some indication for this
value; however, in Linux, it is unused in both.

Amdgpu integration was trivial, so I implemented it in the second patch;
other kernel drivers still need the support of this value, and I don't have
the necessary hardware to implement and test the handling of this value on
them.

BR,
Yaroslav

Yaroslav Bolyukin (2):
drm/edid: parse DRM VESA dsc bpp target
drm/amd: use fixed dsc bits-per-pixel from edid

.../amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 2 +
.../gpu/drm/amd/display/dc/core/dc_stream.c | 2 +
drivers/gpu/drm/amd/display/dc/dc_types.h | 3 ++
drivers/gpu/drm/drm_edid.c | 42 ++++++++++++-------
include/drm/drm_connector.h | 6 +++
include/drm/drm_displayid.h | 4 ++
6 files changed, 45 insertions(+), 14 deletions(-)


base-commit: a48bba98380cb0b43dcd01d276c7efc282e3c33f
--
2.39.1