Skip to content

Commit

Permalink
drm/amd/display: introduce mpo detection flags
Browse files Browse the repository at this point in the history
[why]
We want to know if new crtc state is enabling MPO configuration before
enabling it.
[how]
Detect if both primary and overlay planes are enabled on the same CRTC.

Tested-by: Daniel Wheeler <[email protected]>
Reviewed-by: Bhawanpreet Lakha <[email protected]>
Acked-by: Rodrigo Siqueira <[email protected]>
Signed-off-by: Mikita Lipski <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
  • Loading branch information
Mikita Lipski authored and dumbbell committed Apr 14, 2023
1 parent df3e405 commit 6348650
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 1 deletion.
10 changes: 9 additions & 1 deletion drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
Original file line number Diff line number Diff line change
Expand Up @@ -10796,6 +10796,8 @@ static int dm_update_plane_state(struct dc *dc,

dm_new_plane_state->dc_state = dc_new_plane_state;

dm_new_crtc_state->mpo_requested |= (plane->type == DRM_PLANE_TYPE_OVERLAY);

/* Tell DC to do a full surface update every time there
* is a plane change. Inefficient, but works for now.
*/
Expand Down Expand Up @@ -10948,7 +10950,7 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,
enum dc_status status;
int ret, i;
bool lock_and_validation_needed = false;
struct dm_crtc_state *dm_old_crtc_state;
struct dm_crtc_state *dm_old_crtc_state, *dm_new_crtc_state;
#if defined(CONFIG_DRM_AMD_DC_DCN)
struct dsc_mst_fairness_vars vars[MAX_PIPES];
struct drm_dp_mst_topology_state *mst_state;
Expand Down Expand Up @@ -11130,6 +11132,12 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,
goto fail;
}

for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) {
dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
if (dm_new_crtc_state->mpo_requested)
DRM_DEBUG_DRIVER("MPO enablement requested on crtc:[%p]\n", crtc);
}

/* Check cursor planes scaling */
for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) {
ret = dm_check_crtc_cursor(state, crtc, new_crtc_state);
Expand Down
2 changes: 2 additions & 0 deletions drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
Original file line number Diff line number Diff line change
Expand Up @@ -626,6 +626,8 @@ struct dm_crtc_state {
bool cm_has_degamma;
bool cm_is_degamma_srgb;

bool mpo_requested;

int update_type;
int active_planes;

Expand Down

0 comments on commit 6348650

Please sign in to comment.