Signed-off-by: Jeff Smith <whydoubt@xxxxxxxxx> --- .../drm/amd/display/amdgpu_dm/amdgpu_dm_types.c | 32 ++++++++++++++++------ .../display/dc/dce110/dce110_timing_generator.c | 4 --- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c index 3912dc8..eda813e 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c @@ -649,8 +649,7 @@ static void update_stream_scaling_settings( return; /* Full screen scaling by default */ - src.width = mode->hdisplay; - src.height = mode->vdisplay; + drm_crtc_get_hv_timing(mode, &src.width, &src.height); dst.width = stream->timing.h_addressable; dst.height = stream->timing.v_addressable; @@ -853,7 +852,22 @@ static void fill_stream_properties_from_drm_display_mode( else timing_out->pixel_encoding = PIXEL_ENCODING_RGB; - timing_out->timing_3d_format = TIMING_3D_FORMAT_NONE; + switch (mode_in->flags & DRM_MODE_FLAG_3D_MASK) { + case DRM_MODE_FLAG_3D_FRAME_PACKING: + timing_out->timing_3d_format = TIMING_3D_FORMAT_SW_FRAME_PACKING; + break; + case DRM_MODE_FLAG_3D_TOP_AND_BOTTOM: + timing_out->timing_3d_format = TIMING_3D_FORMAT_TB_SW_PACKED; + break; + case DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF: + timing_out->timing_3d_format = TIMING_3D_FORMAT_SBS_SW_PACKED; + break; + case DRM_MODE_FLAG_3D_NONE: + default: + timing_out->timing_3d_format = TIMING_3D_FORMAT_NONE; + break; + } + timing_out->display_color_depth = convert_color_depth_from_display_info( connector); timing_out->scan_type = SCANNING_TYPE_NODATA; @@ -1028,6 +1042,7 @@ static struct dc_stream *create_stream_for_sink( dm_state->scaling != RMX_OFF); } + drm_mode_set_crtcinfo(&mode, CRTC_STEREO_DOUBLE_ONLY); fill_stream_properties_from_drm_display_mode(stream, &mode, &aconnector->base); update_stream_scaling_settings(&mode, dm_state, stream); @@ -1558,13 +1573,12 @@ int amdgpu_dm_connector_mode_valid( goto stream_create_fail; } - drm_mode_set_crtcinfo(mode, 0); + drm_mode_set_crtcinfo(mode, CRTC_STEREO_DOUBLE); fill_stream_properties_from_drm_display_mode(stream, mode, connector); val_set.stream = stream; val_set.surface_count = 0; - stream->src.width = mode->hdisplay; - stream->src.height = mode->vdisplay; + drm_crtc_get_hv_timing(mode, &stream->src.width, &stream->src.height); stream->dst = stream->src; if (dc_validate_resources(adev->dm.dc, &val_set, 1)) @@ -1793,14 +1807,13 @@ int dm_create_validation_set_for_connector(struct drm_connector *connector, return result; } - drm_mode_set_crtcinfo(mode, 0); + drm_mode_set_crtcinfo(mode, CRTC_STEREO_DOUBLE); fill_stream_properties_from_drm_display_mode(stream, mode, connector); val_set->stream = stream; - stream->src.width = mode->hdisplay; - stream->src.height = mode->vdisplay; + drm_crtc_get_hv_timing(mode, &stream->src.width, &stream->src.height); stream->dst = stream->src; return MODE_OK; @@ -2073,6 +2086,7 @@ void amdgpu_dm_connector_init_helper( aconnector->dc_link = link; aconnector->base.interlace_allowed = true; aconnector->base.doublescan_allowed = true; + aconnector->base.stereo_allowed = true; aconnector->base.dpms = DRM_MODE_DPMS_OFF; aconnector->hpd.hpd = AMDGPU_HPD_NONE; /* not used */ diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_timing_generator.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_timing_generator.c index f4b8576..fa06816 100644 --- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_timing_generator.c +++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_timing_generator.c @@ -1113,10 +1113,6 @@ bool dce110_timing_generator_validate_timing( if (!timing) return false; - /* Currently we don't support 3D, so block all 3D timings */ - if (timing->timing_3d_format != TIMING_3D_FORMAT_NONE) - return false; - /* Temporarily blocking interlacing mode until it's supported */ if (timing->flags.INTERLACE == 1) return false; -- 2.9.3 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel