drm/amd/display: Check scaling info when determing update type
[Why] Surface scaling info updates can affect bandwidth and blocks. We need to be checking these with global validation to avoid underflow or corruption. [How] Drop the state->allow_modeset early exit in dm_determine_update_type_for_commit. Most of those should be considered fast now anyway. Fill in scaling info and it to the surface update in atomic check. Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: David Francis <David.Francis@amd.com> Acked-by: Bhawanpreet Lakha <Bhawanpreet Lakha@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
6e8dc7b0a7
commit
004b3938e6
@ -6312,6 +6312,7 @@ dm_determine_update_type_for_commit(struct amdgpu_display_manager *dm,
|
||||
}
|
||||
|
||||
for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {
|
||||
struct dc_scaling_info scaling_info;
|
||||
struct dc_stream_update stream_update;
|
||||
|
||||
memset(&stream_update, 0, sizeof(stream_update));
|
||||
@ -6342,9 +6343,6 @@ dm_determine_update_type_for_commit(struct amdgpu_display_manager *dm,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!state->allow_modeset)
|
||||
continue;
|
||||
|
||||
if (crtc != new_plane_crtc)
|
||||
continue;
|
||||
|
||||
@ -6366,6 +6364,13 @@ dm_determine_update_type_for_commit(struct amdgpu_display_manager *dm,
|
||||
new_dm_crtc_state->stream->out_transfer_func;
|
||||
}
|
||||
|
||||
ret = fill_dc_scaling_info(new_plane_state,
|
||||
&scaling_info);
|
||||
if (ret)
|
||||
goto cleanup;
|
||||
|
||||
updates[num_plane].scaling_info = &scaling_info;
|
||||
|
||||
num_plane++;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user