Commit 52f401f9 authored by Harry Wentland's avatar Harry Wentland Committed by Alex Deucher

drm/amd/display: Make create_stream_for_sink more consistent

We've got a helper function to call dc_create_stream_for_sink and one
other place that calls it directly. Make sure we call the helper
functions always since we need to update a bunch of things in stream and
don't want to miss that.
Signed-off-by: default avatarHarry Wentland <harry.wentland@amd.com>
Reviewed-by: default avatarTony Cheng <Tony.Cheng@amd.com>
Acked-by: default avatarHarry Wentland <harry.wentland@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent db195488
...@@ -2016,30 +2016,32 @@ static void update_stream_scaling_settings(const struct drm_display_mode *mode, ...@@ -2016,30 +2016,32 @@ static void update_stream_scaling_settings(const struct drm_display_mode *mode,
dst.width = stream->timing.h_addressable; dst.width = stream->timing.h_addressable;
dst.height = stream->timing.v_addressable; dst.height = stream->timing.v_addressable;
rmx_type = dm_state->scaling; if (dm_state) {
if (rmx_type == RMX_ASPECT || rmx_type == RMX_OFF) { rmx_type = dm_state->scaling;
if (src.width * dst.height < if (rmx_type == RMX_ASPECT || rmx_type == RMX_OFF) {
src.height * dst.width) { if (src.width * dst.height <
/* height needs less upscaling/more downscaling */ src.height * dst.width) {
dst.width = src.width * /* height needs less upscaling/more downscaling */
dst.height / src.height; dst.width = src.width *
} else { dst.height / src.height;
/* width needs less upscaling/more downscaling */ } else {
dst.height = src.height * /* width needs less upscaling/more downscaling */
dst.width / src.width; dst.height = src.height *
dst.width / src.width;
}
} else if (rmx_type == RMX_CENTER) {
dst = src;
} }
} else if (rmx_type == RMX_CENTER) {
dst = src;
}
dst.x = (stream->timing.h_addressable - dst.width) / 2; dst.x = (stream->timing.h_addressable - dst.width) / 2;
dst.y = (stream->timing.v_addressable - dst.height) / 2; dst.y = (stream->timing.v_addressable - dst.height) / 2;
if (dm_state->underscan_enable) { if (dm_state->underscan_enable) {
dst.x += dm_state->underscan_hborder / 2; dst.x += dm_state->underscan_hborder / 2;
dst.y += dm_state->underscan_vborder / 2; dst.y += dm_state->underscan_vborder / 2;
dst.width -= dm_state->underscan_hborder; dst.width -= dm_state->underscan_hborder;
dst.height -= dm_state->underscan_vborder; dst.height -= dm_state->underscan_vborder;
}
} }
stream->src = src; stream->src = src;
...@@ -2367,11 +2369,6 @@ create_stream_for_sink(struct amdgpu_dm_connector *aconnector, ...@@ -2367,11 +2369,6 @@ create_stream_for_sink(struct amdgpu_dm_connector *aconnector,
return stream; return stream;
} }
if (dm_state == NULL) {
DRM_ERROR("dm_state is NULL!\n");
return stream;
}
drm_connector = &aconnector->base; drm_connector = &aconnector->base;
if (!aconnector->dc_sink) { if (!aconnector->dc_sink) {
...@@ -2418,7 +2415,7 @@ create_stream_for_sink(struct amdgpu_dm_connector *aconnector, ...@@ -2418,7 +2415,7 @@ create_stream_for_sink(struct amdgpu_dm_connector *aconnector,
} else { } else {
decide_crtc_timing_for_drm_display_mode( decide_crtc_timing_for_drm_display_mode(
&mode, preferred_mode, &mode, preferred_mode,
dm_state->scaling != RMX_OFF); dm_state ? (dm_state->scaling != RMX_OFF) : false);
} }
fill_stream_properties_from_drm_display_mode(stream, fill_stream_properties_from_drm_display_mode(stream,
...@@ -2800,7 +2797,7 @@ int amdgpu_dm_connector_mode_valid(struct drm_connector *connector, ...@@ -2800,7 +2797,7 @@ int amdgpu_dm_connector_mode_valid(struct drm_connector *connector,
goto fail; goto fail;
} }
stream = dc_create_stream_for_sink(dc_sink); stream = create_stream_for_sink(aconnector, mode, NULL);
if (stream == NULL) { if (stream == NULL) {
DRM_ERROR("Failed to create stream for sink!\n"); DRM_ERROR("Failed to create stream for sink!\n");
goto fail; goto fail;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment