Commit 603767f9 authored by Tony Cheng's avatar Tony Cheng Committed by Alex Deucher
Browse files

drm/amd/display: fix default dithering



bug: default is mapped to no dithering.

default to spatial dithering based on color depth

Signed-off-by: default avatarTony Cheng <tony.cheng@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 61a44fc6
Loading
Loading
Loading
Loading
+3 −17
Original line number Diff line number Diff line
@@ -341,23 +341,9 @@ void set_dither_option(struct dc_stream_state *stream,
		return;
	if (option > DITHER_OPTION_MAX)
		return;
	if (option == DITHER_OPTION_DEFAULT) {
		switch (stream->timing.display_color_depth) {
		case COLOR_DEPTH_666:
			stream->dither_option = DITHER_OPTION_SPATIAL6;
			break;
		case COLOR_DEPTH_888:
			stream->dither_option = DITHER_OPTION_SPATIAL8;
			break;
		case COLOR_DEPTH_101010:
			stream->dither_option = DITHER_OPTION_SPATIAL10;
			break;
		default:
			option = DITHER_OPTION_DISABLE;
		}
	} else {

	stream->dither_option = option;
	}

	resource_build_bit_depth_reduction_params(stream,
				&params);
	stream->bit_depth_params = params;
+16 −0
Original line number Diff line number Diff line
@@ -2607,6 +2607,22 @@ void resource_build_bit_depth_reduction_params(struct dc_stream_state *stream,

	memset(fmt_bit_depth, 0, sizeof(*fmt_bit_depth));

	if (option == DITHER_OPTION_DEFAULT) {
		switch (stream->timing.display_color_depth) {
		case COLOR_DEPTH_666:
			option = DITHER_OPTION_SPATIAL6;
			break;
		case COLOR_DEPTH_888:
			option = DITHER_OPTION_SPATIAL8;
			break;
		case COLOR_DEPTH_101010:
			option = DITHER_OPTION_SPATIAL10;
			break;
		default:
			option = DITHER_OPTION_DISABLE;
		}
	}

	if (option == DITHER_OPTION_DISABLE)
		return;

+5 −9
Original line number Diff line number Diff line
@@ -1104,15 +1104,11 @@ static enum dc_status apply_single_controller_ctx_to_hw(
		stream->timing.timing_3d_format != TIMING_3D_FORMAT_NONE);


/*vbios crtc_source_selection and encoder_setup will override fmt_C*/
	if (pipe_ctx->stream->signal != SIGNAL_TYPE_EDP &&
		pipe_ctx->stream->signal != SIGNAL_TYPE_LVDS) {
	/*for embedded panel, don't override VBIOS's setting*/
	pipe_ctx->stream_res.opp->funcs->opp_program_fmt(
		pipe_ctx->stream_res.opp,
		&stream->bit_depth_params,
		&stream->clamping);
	}

	if (dc_is_dp_signal(pipe_ctx->stream->signal))
		pipe_ctx->stream_res.stream_enc->funcs->dp_set_stream_attribute(
			pipe_ctx->stream_res.stream_enc,