[Nouveau] [PATCH 6/6] drm/nouveau: Enable stereoscopic 3D output over HDMI

Alastair Bridgewater alastair.bridgewater at gmail.com
Tue Jan 17 22:42:04 UTC 2017


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.bridgewater at 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



More information about the Nouveau mailing list