This is a bit sketchy in terms of implementation, with some rough
edges, but for the most part IT WORKS.

That is to say, I get an obvious 3D output when using the
"testdisplay" program from intel-gpu-tools with the "-3" parameter
and outputting to a 3D-capable HDMI display.

Rough edges include: the criteria for when to enable 3D mode
selection, and the inconsistent support for setting InfoFrames on
HDMI outputs.

Signed-off-by: Alastair Bridgewater <alastair.bridgewa...@gmail.com>
---
 drivers/gpu/drm/nouveau/nouveau_connector.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c 
b/drivers/gpu/drm/nouveau/nouveau_connector.c
index 947c200..11b4977 100644
--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
@@ -547,6 +547,16 @@ nouveau_connector_set_encoder(struct drm_connector 
*connector,
                        DRM_MODE_SUBCONNECTOR_DVID :
                        DRM_MODE_SUBCONNECTOR_DVIA);
        }
+
+       if (nv_encoder->dcb->type == DCB_OUTPUT_TMDS) {
+               /* Can we just ask for the drm connector type? */
+               /*
+                * FIXME: Does this also kick in for DVI or DP->DVI
+                * connectors?  It shouldn't.
+                */
+               /* FIXME: Should only allow when we can set InfoFrames */
+               connector->stereo_allowed = true;
+       }
 }
 
 static enum drm_connector_status
@@ -1044,6 +1054,9 @@ nouveau_connector_mode_valid(struct drm_connector 
*connector,
                return MODE_BAD;
        }
 
+       if ((mode->flags & DRM_MODE_FLAG_3D_MASK) == 
DRM_MODE_FLAG_3D_FRAME_PACKING)
+               clock *= 2;
+
        if (clock < min_clock)
                return MODE_CLOCK_LOW;
 
-- 
2.10.2

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

Reply via email to