Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bf53769d authored by Gloria Li's avatar Gloria Li Committed by Alex Deucher
Browse files

drm/amd/display: add HDR visual confirm



[Why]
Testing team wants a way to tell if HDR is on or not

[How]
Program the overscan color to visually indicate the HDR state of the top-most plane

Signed-off-by: default avatarGloria Li <geling.li@amd.com>
Reviewed-by: default avatarAric Cyr <Aric.Cyr@amd.com>
Acked-by: default avatarLeo Li <sunpeng.li@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 6d92b5c2
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -169,6 +169,12 @@ struct dc_config {
	bool disable_disp_pll_sharing;
};

enum visual_confirm {
	VISUAL_CONFIRM_DISABLE = 0,
	VISUAL_CONFIRM_SURFACE = 1,
	VISUAL_CONFIRM_HDR = 2,
};

enum dcc_option {
	DCC_ENABLE = 0,
	DCC_DISABLE = 1,
@@ -202,7 +208,7 @@ struct dc_clocks {
};

struct dc_debug {
	bool surface_visual_confirm;
	enum visual_confirm visual_confirm;
	bool sanity_checks;
	bool max_disp_clk;
	bool surface_trace;
@@ -387,7 +393,8 @@ enum dc_transfer_func_predefined {
	TRANSFER_FUNCTION_LINEAR,
	TRANSFER_FUNCTION_UNITY,
	TRANSFER_FUNCTION_HLG,
	TRANSFER_FUNCTION_HLG12
	TRANSFER_FUNCTION_HLG12,
	TRANSFER_FUNCTION_GAMMA22
};

struct dc_transfer_func {
+1 −1
Original line number Diff line number Diff line
@@ -155,7 +155,7 @@ static void program_overscan(
	int overscan_bottom = data->v_active
			- data->recout.y - data->recout.height;

	if (xfm_dce->base.ctx->dc->debug.surface_visual_confirm) {
	if (xfm_dce->base.ctx->dc->debug.visual_confirm != VISUAL_CONFIRM_DISABLE) {
		overscan_bottom += 2;
		overscan_right += 2;
	}
+1 −1
Original line number Diff line number Diff line
@@ -1256,7 +1256,7 @@ static void program_scaler(const struct dc *dc,
		return;
#endif

	if (dc->debug.surface_visual_confirm)
	if (dc->debug.visual_confirm == VISUAL_CONFIRM_SURFACE)
		get_surface_visual_confirm_color(pipe_ctx, &color);
	else
		color_space_to_black_color(dc,
+1 −1
Original line number Diff line number Diff line
@@ -235,7 +235,7 @@ static void program_overscan(
	int overscan_right = data->h_active - data->recout.x - data->recout.width;
	int overscan_bottom = data->v_active - data->recout.y - data->recout.height;

	if (xfm_dce->base.ctx->dc->debug.surface_visual_confirm) {
	if (xfm_dce->base.ctx->dc->debug.visual_confirm != VISUAL_CONFIRM_DISABLE) {
		overscan_bottom += 2;
		overscan_right += 2;
	}
+5 −2
Original line number Diff line number Diff line
@@ -621,6 +621,10 @@ static void dpp1_dscl_set_manual_ratio_init(
static void dpp1_dscl_set_recout(
			struct dcn10_dpp *dpp, const struct rect *recout)
{
	int visual_confirm_on = 0;
	if (dpp->base.ctx->dc->debug.visual_confirm != VISUAL_CONFIRM_DISABLE)
		visual_confirm_on = 1;

	REG_SET_2(RECOUT_START, 0,
		/* First pixel of RECOUT */
			 RECOUT_START_X, recout->x,
@@ -632,8 +636,7 @@ static void dpp1_dscl_set_recout(
			 RECOUT_WIDTH, recout->width,
		/* Number of RECOUT vertical lines */
			 RECOUT_HEIGHT, recout->height
			 - dpp->base.ctx->dc->debug.surface_visual_confirm * 4 *
			 (dpp->base.inst + 1));
			 - visual_confirm_on * 4 * (dpp->base.inst + 1));
}

/* Main function to program scaler and line buffer in manual scaling mode */
Loading