Commit 62bf6e9b authored by Eric Bernstein's avatar Eric Bernstein Committed by Alex Deucher

drm/amd/display: update blending mode and set output denorm

Signed-off-by: default avatarEric Bernstein <eric.bernstein@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 904aa42e
...@@ -313,10 +313,34 @@ static int mpc10_mpcc_add(struct mpc *mpc, struct mpcc_cfg *cfg) ...@@ -313,10 +313,34 @@ static int mpc10_mpcc_add(struct mpc *mpc, struct mpcc_cfg *cfg)
return mpcc_id; return mpcc_id;
} }
static void mpc10_update_blend_mode(
struct mpc *mpc,
struct mpcc_cfg *cfg)
{
struct dcn10_mpc *mpc10 = TO_DCN10_MPC(mpc);
int mpcc_id, z_idx;
int alpha_blnd_mode = cfg->per_pixel_alpha ?
BLND_PP_ALPHA : BLND_GLOBAL_ALPHA;
/* find z_idx for the dpp that requires blending mode update*/
for (z_idx = 0; z_idx < cfg->tree_cfg->num_pipes; z_idx++)
if (cfg->tree_cfg->dpp[z_idx] == cfg->dpp_id)
break;
ASSERT(z_idx < cfg->tree_cfg->num_pipes);
mpcc_id = cfg->tree_cfg->mpcc[z_idx];
REG_UPDATE_2(MPCC_CONTROL[mpcc_id],
MPCC_ALPHA_BLND_MODE, alpha_blnd_mode,
MPCC_ALPHA_MULTIPLIED_MODE, cfg->pre_multiplied_alpha);
}
const struct mpc_funcs dcn10_mpc_funcs = { const struct mpc_funcs dcn10_mpc_funcs = {
.add = mpc10_mpcc_add, .add = mpc10_mpcc_add,
.remove = mpc10_mpcc_remove, .remove = mpc10_mpcc_remove,
.wait_for_idle = mpc10_assert_idle_mpcc .wait_for_idle = mpc10_assert_idle_mpcc,
.set_denorm = NULL,
.update_blend_mode = mpc10_update_blend_mode
}; };
void dcn10_mpc_construct(struct dcn10_mpc *mpc10, void dcn10_mpc_construct(struct dcn10_mpc *mpc10,
...@@ -337,3 +361,4 @@ void dcn10_mpc_construct(struct dcn10_mpc *mpc10, ...@@ -337,3 +361,4 @@ void dcn10_mpc_construct(struct dcn10_mpc *mpc10,
mpc10->mpcc_in_use_mask = 0; mpc10->mpcc_in_use_mask = 0;
mpc10->num_mpcc = num_mpcc; mpc10->num_mpcc = num_mpcc;
} }
...@@ -51,6 +51,10 @@ struct mpc_funcs { ...@@ -51,6 +51,10 @@ struct mpc_funcs {
int opp_id, int opp_id,
int mpcc_inst); int mpcc_inst);
void (*wait_for_idle)(struct mpc *mpc, int id); void (*wait_for_idle)(struct mpc *mpc, int id);
void (*set_denorm)(struct mpc *mpc,
int opp_id,
enum dc_color_depth output_depth);
void (*update_blend_mode)(struct mpc *mpc, struct mpcc_cfg *cfg);
}; };
#endif #endif
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