diff options
Diffstat (limited to '0003-drm-i915-Ensure-damage-clip-area-is-within-pipe-area.patch')
-rw-r--r-- | 0003-drm-i915-Ensure-damage-clip-area-is-within-pipe-area.patch | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/0003-drm-i915-Ensure-damage-clip-area-is-within-pipe-area.patch b/0003-drm-i915-Ensure-damage-clip-area-is-within-pipe-area.patch deleted file mode 100644 index 12f79f3d997f..000000000000 --- a/0003-drm-i915-Ensure-damage-clip-area-is-within-pipe-area.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 333f53bd4ba9fade8bf15353aa11606e2a6afd7e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jouni=20H=C3=B6gander?= <jouni.hogander@intel.com> -Date: Fri, 13 May 2022 17:28:11 +0300 -Subject: [PATCH 3/8] drm/i915: Ensure damage clip area is within pipe area -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Current update area calculation is not handling situation where -e.g. cursor plane is fully or partially outside pipe area. - -Fix this by checking damage area against pipe_src area using -drm_rect_intersect. - -v2: Set x1 and x2 in damaged_area initialization -v3: Move drm_rect_intersect into clip_area_update -v4: draw_area -> pipe_src - -Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/5440 -Cc: José Roberto de Souza <jose.souza@intel.com> -Cc: Mika Kahola <mika.kahola@intel.com> - -Reviewed-by: José Roberto de Souza <jose.souza@intel.com> -Signed-off-by: Jouni Högander <jouni.hogander@intel.com> ---- - drivers/gpu/drm/i915/display/intel_psr.c | 23 ++++++++++++++++------- - 1 file changed, 16 insertions(+), 7 deletions(-) - -diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c -index fecdaaeac39e..36356893c7ca 100644 ---- a/drivers/gpu/drm/i915/display/intel_psr.c -+++ b/drivers/gpu/drm/i915/display/intel_psr.c -@@ -1618,8 +1618,12 @@ static void psr2_man_trk_ctl_calc(struct intel_crtc_state *crtc_state, - } - - static void clip_area_update(struct drm_rect *overlap_damage_area, -- struct drm_rect *damage_area) -+ struct drm_rect *damage_area, -+ struct drm_rect *pipe_src) - { -+ if (!drm_rect_intersect(damage_area, pipe_src)) -+ return; -+ - if (overlap_damage_area->y1 == -1) { - overlap_damage_area->y1 = damage_area->y1; - overlap_damage_area->y2 = damage_area->y2; -@@ -1709,7 +1713,8 @@ int intel_psr2_sel_fetch_update(struct intel_atomic_state *state, - */ - for_each_oldnew_intel_plane_in_state(state, plane, old_plane_state, - new_plane_state, i) { -- struct drm_rect src, damaged_area = { .y1 = -1 }; -+ struct drm_rect src, damaged_area = { .x1 = 0, .y1 = -1, -+ .x2 = INT_MAX }; - struct drm_atomic_helper_damage_iter iter; - struct drm_rect clip; - -@@ -1736,20 +1741,23 @@ int intel_psr2_sel_fetch_update(struct intel_atomic_state *state, - if (old_plane_state->uapi.visible) { - damaged_area.y1 = old_plane_state->uapi.dst.y1; - damaged_area.y2 = old_plane_state->uapi.dst.y2; -- clip_area_update(&pipe_clip, &damaged_area); -+ clip_area_update(&pipe_clip, &damaged_area, -+ &crtc_state->pipe_src); - } - - if (new_plane_state->uapi.visible) { - damaged_area.y1 = new_plane_state->uapi.dst.y1; - damaged_area.y2 = new_plane_state->uapi.dst.y2; -- clip_area_update(&pipe_clip, &damaged_area); -+ clip_area_update(&pipe_clip, &damaged_area, -+ &crtc_state->pipe_src); - } - continue; - } else if (new_plane_state->uapi.alpha != old_plane_state->uapi.alpha) { - /* If alpha changed mark the whole plane area as damaged */ - damaged_area.y1 = new_plane_state->uapi.dst.y1; - damaged_area.y2 = new_plane_state->uapi.dst.y2; -- clip_area_update(&pipe_clip, &damaged_area); -+ clip_area_update(&pipe_clip, &damaged_area, -+ &crtc_state->pipe_src); - continue; - } - -@@ -1760,7 +1768,8 @@ int intel_psr2_sel_fetch_update(struct intel_atomic_state *state, - &new_plane_state->uapi); - drm_atomic_for_each_plane_damage(&iter, &clip) { - if (drm_rect_intersect(&clip, &src)) -- clip_area_update(&damaged_area, &clip); -+ clip_area_update(&damaged_area, &clip, -+ &crtc_state->pipe_src); - } - - if (damaged_area.y1 == -1) -@@ -1768,7 +1777,7 @@ int intel_psr2_sel_fetch_update(struct intel_atomic_state *state, - - damaged_area.y1 += new_plane_state->uapi.dst.y1 - src.y1; - damaged_area.y2 += new_plane_state->uapi.dst.y1 - src.y1; -- clip_area_update(&pipe_clip, &damaged_area); -+ clip_area_update(&pipe_clip, &damaged_area, &crtc_state->pipe_src); - } - - /* --- -2.37.3 - |