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

Commit 61af541c authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "drm/msm/sde: assign virtual planes to RECT1 of sDMA"

parents 4ca0e9ed da78020f
Loading
Loading
Loading
Loading
+13 −16
Original line number Diff line number Diff line
@@ -2538,16 +2538,9 @@ int sde_plane_validate_multirect_v2(struct sde_multirect_plane_states *plane)

	/* Prefer PARALLEL FETCH Mode over TIME_MX Mode */
	if (parallel_fetch_qualified) {
		if (dst[R0].x <= dst[R1].x) {
			pstate[R0]->multirect_index = SDE_SSPP_RECT_0;
			pstate[R1]->multirect_index = SDE_SSPP_RECT_1;
		} else {
			pstate[R0]->multirect_index = SDE_SSPP_RECT_1;
			pstate[R1]->multirect_index = SDE_SSPP_RECT_0;
		}

		pstate[R0]->multirect_mode = SDE_SSPP_MULTIRECT_PARALLEL;
		pstate[R1]->multirect_mode = SDE_SSPP_MULTIRECT_PARALLEL;

		goto done;
	}

@@ -2555,12 +2548,10 @@ int sde_plane_validate_multirect_v2(struct sde_multirect_plane_states *plane)
	if (SDE_FORMAT_IS_UBWC(fmt[R0]))
		buffer_lines = 2 * fmt[R0]->tile_height;

	if (dst[R1].y >= dst[R0].y + dst[R0].h + buffer_lines) {
		pstate[R0]->multirect_index = SDE_SSPP_RECT_0;
		pstate[R1]->multirect_index = SDE_SSPP_RECT_1;
	} else if (dst[R0].y >= dst[R1].y + dst[R1].h + buffer_lines) {
		pstate[R0]->multirect_index = SDE_SSPP_RECT_1;
		pstate[R1]->multirect_index = SDE_SSPP_RECT_0;
	if ((dst[R1].y >= dst[R0].y + dst[R0].h + buffer_lines) ||
		(dst[R0].y >= dst[R1].y + dst[R1].h + buffer_lines)) {
		pstate[R0]->multirect_mode = SDE_SSPP_MULTIRECT_TIME_MX;
		pstate[R1]->multirect_mode = SDE_SSPP_MULTIRECT_TIME_MX;
	} else {
		SDE_ERROR(
			"No multirect mode possible for the planes (%d - %d)\n",
@@ -2569,9 +2560,15 @@ int sde_plane_validate_multirect_v2(struct sde_multirect_plane_states *plane)
		return -EINVAL;
	}

	pstate[R0]->multirect_mode = SDE_SSPP_MULTIRECT_TIME_MX;
	pstate[R1]->multirect_mode = SDE_SSPP_MULTIRECT_TIME_MX;
done:
	if (sde_plane[R0]->is_virtual) {
		pstate[R0]->multirect_index = SDE_SSPP_RECT_1;
		pstate[R1]->multirect_index = SDE_SSPP_RECT_0;
	} else {
		pstate[R0]->multirect_index = SDE_SSPP_RECT_0;
		pstate[R1]->multirect_index = SDE_SSPP_RECT_1;
	};

	SDE_DEBUG_PLANE(sde_plane[R0], "R0: %d - %d\n",
		pstate[R0]->multirect_mode, pstate[R0]->multirect_index);
	SDE_DEBUG_PLANE(sde_plane[R1], "R1: %d - %d\n",