Commit 43f06e81 authored by Kuan-Wei Chiu's avatar Kuan-Wei Chiu Committed by Alex Deucher
Browse files

drm/amd/display: Optimize remove_duplicates() from O(N^2) to O(N)



Replace the previous O(N^2) implementation of remove_duplicates() with
a O(N) version using a fast/slow pointer approach. The new version
keeps only the first occurrence of each element and compacts the array
in place, improving efficiency without changing functionality.

Signed-off-by: default avatarKuan-Wei Chiu <visitorckw@gmail.com>
Reviewed-by: default avatarAlex Hung <alex.hung@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 51cb93aa
Loading
Loading
Loading
Loading
+11 −10
Original line number Diff line number Diff line
@@ -48,18 +48,19 @@ static void set_reserved_time_on_all_planes_with_stream_index(struct display_con

static void remove_duplicates(double *list_a, int *list_a_size)
{
	int cur_element = 0;
	// For all elements b[i] in list_b[]
	while (cur_element < *list_a_size - 1) {
		if (list_a[cur_element] == list_a[cur_element + 1]) {
			for (int j = cur_element + 1; j < *list_a_size - 1; j++) {
				list_a[j] = list_a[j + 1];
			}
			*list_a_size = *list_a_size - 1;
		} else {
			cur_element++;
	int j = 0;

	if (*list_a_size == 0)
		return;

	for (int i = 1; i < *list_a_size; i++) {
		if (list_a[j] != list_a[i]) {
			j++;
			list_a[j] = list_a[i];
		}
	}

	*list_a_size = j + 1;
}

static bool increase_mpc_combine_factor(unsigned int *mpc_combine_factor, unsigned int limit)