On Mon, Mar 27, 2017 at 05:57:57PM -0400, Alastair Bridgewater wrote:> 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 > culpa. > > 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 > without). > > 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.Do you mean DP++ or actual protocol converters? DP++ is just HDMI with a some electrical tweaks, but IIRC proper DP defines 3D stereo quite differently than HDMI. I'm not sure if we should be able to push HDMI style 3D through DP->HDMI/DP++ adaptors. The specs are unfortunately very vague when it comes to such devices.> 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 / > ilace > drm/nouveau: Extend NVKM HDMI power control method to set InfoFrames > drm/nouveau: Pass mode-dependent AVI and Vendor HDMI InfoFrames to > NVKM > drm/nouveau: Add mechanism to convert HDMI InfoFrames to hardware > format > 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 > > -- > 2.10.2 > > _______________________________________________ > dri-devel mailing list > dri-devel at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel-- Ville Syrjälä Intel OTC
Alastair Bridgewater
2017-Mar-29 14:24 UTC
[Nouveau] [PATCH v2 00/10] Enable HDMI Stereoscopy
On Wed, Mar 29, 2017 at 8:02 AM, Ville Syrjälä < ville.syrjala at linux.intel.com> wrote:> > On Mon, Mar 27, 2017 at 05:57:57PM -0400, Alastair Bridgewater wrote: > > 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. > > Do you mean DP++ or actual protocol converters? DP++ is just HDMI with > a some electrical tweaks, but IIRC proper DP defines 3D stereo quite > differently than HDMI. I'm not sure if we should be able to push HDMI > style 3D through DP->HDMI/DP++ adaptors. The specs are unfortunately > very vague when it comes to such devices.DP++. Good point about the protocol converters, though I don't recall seeing any way to distinguish between a DP and a DP++ connector in nouveau, nor do I know if nVidia actually made any boards with DP that isn't DP++. I guess I have some digging to do in that direction. Thank you.> > 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 -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20170329/3a9212b7/attachment.html>
On Wed, Mar 29, 2017 at 10:24:05AM -0400, Alastair Bridgewater wrote:> On Wed, Mar 29, 2017 at 8:02 AM, Ville Syrjälä < > ville.syrjala at linux.intel.com> wrote: > > > > On Mon, Mar 27, 2017 at 05:57:57PM -0400, Alastair Bridgewater wrote: > > > 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. > > > > Do you mean DP++ or actual protocol converters? DP++ is just HDMI with > > a some electrical tweaks, but IIRC proper DP defines 3D stereo quite > > differently than HDMI. I'm not sure if we should be able to push HDMI > > style 3D through DP->HDMI/DP++ adaptors. The specs are unfortunately > > very vague when it comes to such devices. > > DP++. Good point about the protocol converters, though I don't recall > seeing any way to distinguish between a DP and a DP++ connector in > nouveau, nor do I know if nVidia actually made any boards with DP that > isn't DP++. I guess I have some digging to do in that direction. Thank > you.In i915 we register both a HDMI and a DP connector for the same physical DP connector, and a sink attached via a DP++ dongle/cable will appear on the HDMI connector instead of the DP connector. But I don't know if nouveau follows this same pattern or not. -- Ville Syrjälä Intel OTC
On Wed, Mar 29, 2017 at 10:24 AM, Alastair Bridgewater <alastair.bridgewater at gmail.com> wrote:> On Wed, Mar 29, 2017 at 8:02 AM, Ville Syrjälä > <ville.syrjala at linux.intel.com> wrote: >> >> On Mon, Mar 27, 2017 at 05:57:57PM -0400, Alastair Bridgewater wrote: >> > 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. >> >> Do you mean DP++ or actual protocol converters? DP++ is just HDMI with >> a some electrical tweaks, but IIRC proper DP defines 3D stereo quite >> differently than HDMI. I'm not sure if we should be able to push HDMI >> style 3D through DP->HDMI/DP++ adaptors. The specs are unfortunately >> very vague when it comes to such devices. > > DP++. Good point about the protocol converters, though I don't recall > seeing any way to distinguish between a DP and a DP++ connector in > nouveau, nor do I know if nVidia actually made any boards with DP that > isn't DP++. I guess I have some digging to do in that direction. Thank > you.I wouldn't be surprised if the externally-encodered G200 DP connectors didn't support DP++. I do think that the vast majority of DP ports are actually DP++ (on NVIDIA, and probably everywhere). However since this is (edge case)^2 [G200 DP, 3D DP], I wouldn't spend too much time worrying about it. I doubt it's documented anywhere, and equally doubtful any such sinks exist. Should be able to find a VBIOS with the external DP encoders though, and you can check the DCB specs that NVIDIA published at ftp://download.nvidia.com/open-gpu-doc/DCB/2/DCB-4.x-Specification.html. (Looks like there is something there under "DFP Specific Information" -> HDMI, not 100% sure where in nouveau it's decoded though.)
Reasonably Related Threads
- [PATCH v2 00/10] Enable HDMI Stereoscopy
- [PATCH v2 00/10] Enable HDMI Stereoscopy
- [PATCH v3 10/10] drm/nouveau: Enable stereoscopic 3D output over HDMI
- [PATCH v3 10/10] drm/nouveau: Enable stereoscopic 3D output over HDMI
- [PATCH v3 00/10] drm/nouveau Enable HDMI Stereoscopy