[Nouveau] [PATCH v2 00/10] Enable HDMI Stereoscopy

Alastair Bridgewater alastair.bridgewater at gmail.com
Mon Mar 27 21:57:57 UTC 2017

HDMI 3D mode support, round two.  Revisions include no longer dealing
with audio InfoFrames, passing infoframe data to NVKM as bags of bytes
rather than as data pre-packed for the hardware, more-normal return
value checking for drm_hdmi_*_infoframe_from_display_mode() results,
Frame-Packing mode support, more-principled logic for enabling stereo
mode support on a connector, and support for all four nv50+ DISPs.
Additionally, this patch set is being sent to the dri-devel list as
well as the nouveau list.  Dropped in this version is the removal of
the "mandatory" 3D mode logic.  After discussion, I'm still convinced
that it's wrong, but now I'm convinced that it's too conservative
rather than my original belief which was that it was too liberal.

Thanks to Ilia Mirkin, Damien Lespiau, and Ben Skeggs for feedback on
the original patch set.  If I have neglected to mention anyone, mea

The first patch perhaps isn't technically necessary, but simplifies
the later logic for fixing frame-packing mode timing.  There may be
some effect from applying this, as drm_mode_set_crtcinfo() does
something with vscan which can affect the given CRTC timing.  I'm
not sure what's going on there, if there's any behavioral change or
not, and if there is what to do about it (other than using
drm_mode_set_crtcinfo() twice, once with CRTC_NO_VSCAN and once

The second through eighth patches are all the InfoFrame logic again,
this time with support for all four DISP types.  This does not appear
to cause regressions in HDMI audio on GT215, GF119, or GK104.  I hope
that it doesn't cause a regression on G84, but haven't yet managed to
set up a test case for G84 and HDMI audio.

The ninth patch is to fix up frame-packing mode timings and geometry.
As the patch comment says, there are clearly-correct parts, and there
are possibly-hacky parts.  But it gets frame-packing modes working,
and we can revise from there if necessary.

And the tenth patch enables stereo mode support...  on HDMI and DPort
connectors on nv50+ hardware.  HDMI connectors because obvious.  DPort
connectors because of DPort to HDMI adaptors.  eDP connectors because
it shouldn't do any harm, and someone might have been maniac enough to
set up an eDP port to point to something with an HDMI 3D setup.  And
nv50+ hardware only because while I'm not aware of any pre-nv50 cards
that have HDMI outputs, there could be a setup out there like the PS3
that uses an external HDMI encoder on pre-nv50 hardware, at which
point none of the mode timing or InfoFrame support is in place for it.

Alastair Bridgewater (10):
  drm/nouveau: Use drm_mode_set_crtcinfo() to compensate for vscan /
  drm/nouveau: Extend NVKM HDMI power control method to set InfoFrames
  drm/nouveau: Pass mode-dependent AVI and Vendor HDMI InfoFrames to
  drm/nouveau: Add mechanism to convert HDMI InfoFrames to hardware
  drm/nouveau: Use supplied HDMI InfoFrames on G84 hardware
  drm/nouveau: Use supplied HDMI InfoFrames on GT215 hardware
  drm/nouveau: Use supplied HDMI InfoFrames on GF119 hardware
  drm/nouveau: Use supplied HDMI InfoFrames on GK104 hardware
  drm/nouveau: Handle frame-packing mode geometry and timing effects
  drm/nouveau: Enable stereoscopic 3D output over HDMI

 drivers/gpu/drm/nouveau/include/nvif/cl5070.h      |  4 +-
 drivers/gpu/drm/nouveau/nouveau_connector.c        | 10 +++
 drivers/gpu/drm/nouveau/nv50_display.c             | 80 ++++++++++++++++------
 drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild    |  1 +
 .../drm/nouveau/nvkm/engine/disp/hdmi_infoframe.c  | 66 ++++++++++++++++++
 drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmig84.c | 46 +++++++++++--
 .../gpu/drm/nouveau/nvkm/engine/disp/hdmigf119.c   | 49 +++++++++++--
 .../gpu/drm/nouveau/nvkm/engine/disp/hdmigk104.c   | 45 ++++++++++--
 .../gpu/drm/nouveau/nvkm/engine/disp/hdmigt215.c   | 46 +++++++++++--
 drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.h    | 11 +++
 10 files changed, 307 insertions(+), 51 deletions(-)
 create mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmi_infoframe.c


More information about the Nouveau mailing list