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

Commit 004b3938 authored by Nicholas Kazlauskas's avatar Nicholas Kazlauskas Committed by Alex Deucher
Browse files

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: default avatarNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Reviewed-by: default avatarDavid Francis <David.Francis@amd.com>
Acked-by: default avatarBhawanpreet Lakha &lt;Bhawanpreet <Lakha@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 6e8dc7b0
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -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++;
		}