amdgpu has never exposed the HDMI 1.4 3D modes that drm_edid derives from a sink's HDMI VSDB: stereo_allowed is false on every connector, so a 3D-capable TV or projector connected to a Radeon card cannot be driven in frame-packing, top-and-bottom or side-by-side mode, although i915 has supported exactly this for a decade and the media players that produce 3D frames (Kodi, mpv with 3D filters) only need the mode to exist.
These three patches add it for native HDMI connectors, in the simplest form that works on the hardware: the source packs both views into the frame and the display core scans that frame out as ordinary 2D; the only 3D-specific output is the HDMI vendor infoframe. The reason it has to be done this way is in patch 1: any of DC's stereo timing formats, including the SW_PACKED ones, makes the hardware treat the surface as two views and paint the whole frame into each half. Patch 2 adds the 3D_Ext_Data byte to the top-and-bottom vendor infoframe, without which at least JVC D-ILA projectors do not engage 3D (Amlogic sources send it, which is why those work with the same projector). Patch 3 sizes the stream and the plane viewport by the doubled frame-packing timing so each eye receives its own view rather than a stretched copy of the first. Tested on a Radeon RX 7600 (Navi 33, DCN 3.2.1) driving a JVC DLA-RS4100 through an HDFury VRROOM, with Kodi (LibreELEC, GBM) as the source, on a 7.2.3 kernel carrying these patches; the series here is rebased onto amd-staging-drm-next and compile-tested there. All three layouts engage the projector's 3D mode at 1920x1080p24, RGB 12 bpc, with correct per-eye geometry (row-coded test frames read back through each eye of shutter glasses) and correct eye assignment; frame packing is also the format the projector uses for Blu-ray 3D. Known limitation, not addressed here: a framebuffer with DCC enabled does not scan out in a frame-packed mode on this GPU (the first flip after the modeset never completes and the pipe wedges); the source has to allocate the 3D framebuffer without DCC. A separate report will follow once it is better understood. Two unrelated FRL/DSC issues found on the same setup are tracked as drm/amd issues 5770 and 5771. Adrian Betschart (3): drm/amd/display: support HDMI 1.4 3D modes on HDMI connectors drm/amd/display: send the 3D_Ext_Data byte for top-and-bottom too drm/amd/display: size frame-packed streams by the doubled timing .../display/amdgpu_dm/amdgpu_dm_connector.c | 52 ++++++++++++++++--- .../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 13 +++-- drivers/gpu/drm/amd/display/dc/dc_stream.h | 7 +++ .../display/modules/info_packet/info_packet.c | 4 ++ 4 files changed, 66 insertions(+), 10 deletions(-) -- 2.43.0
