<div dir="ltr">I have easy access to an LG 3D television, though I do not have model information handy at the moment.  This is the only display I have tested on so far.<div><br></div><div>I have tested all three modes, and in each case the signal is recognized as 3D (the TV pops up a message to this effect), and the content is displayed as intended.</div><div><br></div><div>BTW, regarding timing_3d_format<span style="font-size:12.8px"> </span>I am not entirely clear on the difference between hardware and software varieties (e.g. _HW_FRAME_PACKING vs. _SW_FRAME_PACKING) but my inclination was that the software variety is what I was working with.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 1, 2017 at 5:13 PM, Harry Wentland <span dir="ltr"><<a href="mailto:harry.wentland@amd.com" target="_blank">harry.wentland@amd.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 2017-02-24 07:14 PM, Jeff Smith wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Signed-off-by: Jeff Smith <<a href="mailto:whydoubt@gmail.com" target="_blank">whydoubt@gmail.com</a>><br>
---<br>
 .../drm/amd/display/amdgpu_<wbr>dm/amdgpu_dm_types.c    | 32 ++++++++++++++++------<br>
 .../display/dc/dce110/dce110_<wbr>timing_generator.c    |  4 ---<br>
 2 files changed, 23 insertions(+), 13 deletions(-)<br>
<br>
diff --git a/drivers/gpu/drm/amd/display/<wbr>amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/display/<wbr>amdgpu_dm/amdgpu_dm_types.c<br>
index 3912dc8..eda813e 100644<br>
--- a/drivers/gpu/drm/amd/display/<wbr>amdgpu_dm/amdgpu_dm_types.c<br>
+++ b/drivers/gpu/drm/amd/display/<wbr>amdgpu_dm/amdgpu_dm_types.c<br>
@@ -649,8 +649,7 @@ static void update_stream_scaling_settings<wbr>(<br>
                return;<br>
<br>
        /* Full screen scaling by default */<br>
-       src.width = mode->hdisplay;<br>
-       src.height = mode->vdisplay;<br>
+       drm_crtc_get_hv_timing(mode, &src.width, &src.height);<br>
        dst.width = stream->timing.h_addressable;<br>
        dst.height = stream->timing.v_addressable;<br>
<br>
@@ -853,7 +852,22 @@ static void fill_stream_properties_from_dr<wbr>m_display_mode(<br>
        else<br>
                timing_out->pixel_encoding = PIXEL_ENCODING_RGB;<br>
<br>
-       timing_out->timing_3d_format = TIMING_3D_FORMAT_NONE;<br>
+       switch (mode_in->flags & DRM_MODE_FLAG_3D_MASK) {<br>
+       case DRM_MODE_FLAG_3D_FRAME_PACKING<wbr>:<br>
+               timing_out->timing_3d_format = TIMING_3D_FORMAT_SW_FRAME_PACK<wbr>ING;<br>
+               break;<br>
+       case DRM_MODE_FLAG_3D_TOP_AND_BOTTO<wbr>M:<br>
+               timing_out->timing_3d_format = TIMING_3D_FORMAT_TB_SW_PACKED;<br>
+               break;<br>
+       case DRM_MODE_FLAG_3D_SIDE_BY_SIDE_<wbr>HALF:<br>
+               timing_out->timing_3d_format = TIMING_3D_FORMAT_SBS_SW_PACKED<wbr>;<br>
+               break;<br>
+       case DRM_MODE_FLAG_3D_NONE:<br>
+       default:<br>
+               timing_out->timing_3d_format = TIMING_3D_FORMAT_NONE;<br>
+               break;<br>
+       }<br>
+<br>
</blockquote>
<br></div></div>
Are these tested and if so on which displays? Even though we have some of this code in place we haven't tested any of it and don't necessarily expect it to work.<span class="HOEnZb"><font color="#888888"><br>
<br>
Harry</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
        timing_out->display_color_dept<wbr>h = convert_color_depth_from_displ<wbr>ay_info(<br>
                        connector);<br>
        timing_out->scan_type = SCANNING_TYPE_NODATA;<br>
@@ -1028,6 +1042,7 @@ static struct dc_stream *create_stream_for_sink(<br>
                                dm_state->scaling != RMX_OFF);<br>
        }<br>
<br>
+       drm_mode_set_crtcinfo(&mode, CRTC_STEREO_DOUBLE_ONLY);<br>
        fill_stream_properties_from_dr<wbr>m_display_mode(stream,<br>
                        &mode, &aconnector->base);<br>
        update_stream_scaling_settings<wbr>(&mode, dm_state, stream);<br>
@@ -1558,13 +1573,12 @@ int amdgpu_dm_connector_mode_valid<wbr>(<br>
                goto stream_create_fail;<br>
        }<br>
<br>
-       drm_mode_set_crtcinfo(mode, 0);<br>
+       drm_mode_set_crtcinfo(mode, CRTC_STEREO_DOUBLE);<br>
        fill_stream_properties_from_dr<wbr>m_display_mode(stream, mode, connector);<br>
<br>
        val_set.stream = stream;<br>
        val_set.surface_count = 0;<br>
-       stream->src.width = mode->hdisplay;<br>
-       stream->src.height = mode->vdisplay;<br>
+       drm_crtc_get_hv_timing(mode, &stream->src.width, &stream->src.height);<br>
        stream->dst = stream->src;<br>
<br>
        if (dc_validate_resources(adev->d<wbr>m.dc, &val_set, 1))<br>
@@ -1793,14 +1807,13 @@ int dm_create_validation_set_for_c<wbr>onnector(struct drm_connector *connector,<br>
                return result;<br>
        }<br>
<br>
-       drm_mode_set_crtcinfo(mode, 0);<br>
+       drm_mode_set_crtcinfo(mode, CRTC_STEREO_DOUBLE);<br>
<br>
        fill_stream_properties_from_dr<wbr>m_display_mode(stream, mode, connector);<br>
<br>
        val_set->stream = stream;<br>
<br>
-       stream->src.width = mode->hdisplay;<br>
-       stream->src.height = mode->vdisplay;<br>
+       drm_crtc_get_hv_timing(mode, &stream->src.width, &stream->src.height);<br>
        stream->dst = stream->src;<br>
<br>
        return MODE_OK;<br>
@@ -2073,6 +2086,7 @@ void amdgpu_dm_connector_init_helpe<wbr>r(<br>
        aconnector->dc_link = link;<br>
        aconnector->base.interlace_all<wbr>owed = true;<br>
        aconnector->base.doublescan_al<wbr>lowed = true;<br>
+       aconnector->base.stereo_allow<wbr>ed = true;<br>
        aconnector->base.dpms = DRM_MODE_DPMS_OFF;<br>
        aconnector->hpd.hpd = AMDGPU_HPD_NONE; /* not used */<br>
<br>
diff --git a/drivers/gpu/drm/amd/display/<wbr>dc/dce110/dce110_timing_genera<wbr>tor.c b/drivers/gpu/drm/amd/display/<wbr>dc/dce110/dce110_timing_genera<wbr>tor.c<br>
index f4b8576..fa06816 100644<br>
--- a/drivers/gpu/drm/amd/display/<wbr>dc/dce110/dce110_timing_genera<wbr>tor.c<br>
+++ b/drivers/gpu/drm/amd/display/<wbr>dc/dce110/dce110_timing_genera<wbr>tor.c<br>
@@ -1113,10 +1113,6 @@ bool dce110_timing_generator_valida<wbr>te_timing(<br>
        if (!timing)<br>
                return false;<br>
<br>
-       /* Currently we don't support 3D, so block all 3D timings */<br>
-       if (timing->timing_3d_format != TIMING_3D_FORMAT_NONE)<br>
-               return false;<br>
-<br>
        /* Temporarily blocking interlacing mode until it's supported */<br>
        if (timing->flags.INTERLACE == 1)<br>
                return false;<br>
<br>
</blockquote>
</div></div></blockquote></div><br></div>