Commit 9afeda04 authored by Fangzhi Zuo's avatar Fangzhi Zuo Committed by Alex Deucher
Browse files

drm/amd/display: Skip Invalid Streams from DSC Policy



Streams with invalid new connector state should be elimiated from
dsc policy.

Reviewed-by: default avatarAurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: default avatarFangzhi Zuo <Jerry.Zuo@amd.com>
Signed-off-by: default avatarRodrigo Siqueira <rodrigo.siqueira@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 442702b4
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -1120,6 +1120,7 @@ static int compute_mst_dsc_configs_for_link(struct drm_atomic_state *state,
	int i, k, ret;
	bool debugfs_overwrite = false;
	uint16_t fec_overhead_multiplier_x1000 = get_fec_overhead_multiplier(dc_link);
	struct drm_connector_state *new_conn_state;

	memset(params, 0, sizeof(params));

@@ -1127,7 +1128,7 @@ static int compute_mst_dsc_configs_for_link(struct drm_atomic_state *state,
		return PTR_ERR(mst_state);

	/* Set up params */
	DRM_DEBUG_DRIVER("%s: MST_DSC Set up params for %d streams\n", __func__, dc_state->stream_count);
	DRM_DEBUG_DRIVER("%s: MST_DSC Try to set up params from %d streams\n", __func__, dc_state->stream_count);
	for (i = 0; i < dc_state->stream_count; i++) {
		struct dc_dsc_policy dsc_policy = {0};

@@ -1143,6 +1144,14 @@ static int compute_mst_dsc_configs_for_link(struct drm_atomic_state *state,
		if (!aconnector->mst_output_port)
			continue;

		new_conn_state = drm_atomic_get_new_connector_state(state, &aconnector->base);

		if (!new_conn_state) {
			DRM_DEBUG_DRIVER("%s:%d MST_DSC Skip the stream 0x%p with invalid new_conn_state\n",
					__func__, __LINE__, stream);
			continue;
		}

		stream->timing.flags.DSC = 0;

		params[count].timing = &stream->timing;
@@ -1175,6 +1184,8 @@ static int compute_mst_dsc_configs_for_link(struct drm_atomic_state *state,
		count++;
	}

	DRM_DEBUG_DRIVER("%s: MST_DSC Params set up for %d streams\n", __func__, count);

	if (count == 0) {
		ASSERT(0);
		return 0;