dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/4] Fixes for damage clips handling
@ 2022-08-23 11:29 Jouni Högander
  2022-08-23 11:29 ` [PATCH v2 1/4] drm: Use original src rect while initializing damage iterator Jouni Högander
                   ` (4 more replies)
  0 siblings, 5 replies; 15+ messages in thread
From: Jouni Högander @ 2022-08-23 11:29 UTC (permalink / raw)
  To: dri-devel, intel-gfx
  Cc: Jani Nikula, Daniel Vetter, José Roberto de Souza,
	Maíra Canal, Mika Kahola, Jouni Högander

Currently damage clips handling is broken for planes when using big
framebuffer + offset in case kms driver adjusts drm_plane_state.src
coords. This is because damage clips are using coords relative to
original coords from user-space.

This patchset is fixing this by using original
coords from user-space instead of drm_plane_state.src when iterating
damage_clips.

v2: Modify drm unit tests accordingly

Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: José Roberto de Souza <jose.souza@intel.com>
Cc: Mika Kahola <mika.kahola@intel.com>
Cc: Maíra Canal <mairacanal@riseup.net>

Jouni Högander (4):
  drm: Use original src rect while initializing damage iterator
  drm/i915/display: Use original src in psr2 sel fetch area calculation
  drm/i915/display: Use drm helper instead of own loop for damage clips
  drm/tests: Set also mock plane src_x, src_y, src_w and src_h

 drivers/gpu/drm/drm_damage_helper.c           | 11 ++++++----
 drivers/gpu/drm/i915/display/intel_psr.c      | 20 +++++++------------
 .../gpu/drm/tests/drm_damage_helper_test.c    |  5 +++++
 3 files changed, 19 insertions(+), 17 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH v2 1/4] drm: Use original src rect while initializing damage iterator
  2022-08-23 11:29 [PATCH v2 0/4] Fixes for damage clips handling Jouni Högander
@ 2022-08-23 11:29 ` Jouni Högander
  2022-09-02 10:58   ` Kahola, Mika
  2022-08-23 11:29 ` [PATCH v2 2/4] drm/i915/display: Use original src in psr2 sel fetch area calculation Jouni Högander
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 15+ messages in thread
From: Jouni Högander @ 2022-08-23 11:29 UTC (permalink / raw)
  To: dri-devel, intel-gfx; +Cc: Jouni Högander

drm_plane_state->src might be modified by the driver. This is done
e.g. in i915 driver when there is bigger framebuffer than the plane
and there is some offset within framebuffer. I915 driver calculates
separate offset and adjusts src rect coords to be relative to this
offset. Damage clips are still relative to original src coords
provided by user-space.

This patch ensures original coordinates provided by user-space are
used when initiliazing damage iterator.

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
---
 drivers/gpu/drm/drm_damage_helper.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/drm_damage_helper.c b/drivers/gpu/drm/drm_damage_helper.c
index 937b699ac2a8..d8b2955e88fd 100644
--- a/drivers/gpu/drm/drm_damage_helper.c
+++ b/drivers/gpu/drm/drm_damage_helper.c
@@ -224,6 +224,7 @@ drm_atomic_helper_damage_iter_init(struct drm_atomic_helper_damage_iter *iter,
 				   const struct drm_plane_state *old_state,
 				   const struct drm_plane_state *state)
 {
+	struct drm_rect src;
 	memset(iter, 0, sizeof(*iter));
 
 	if (!state || !state->crtc || !state->fb || !state->visible)
@@ -233,10 +234,12 @@ drm_atomic_helper_damage_iter_init(struct drm_atomic_helper_damage_iter *iter,
 	iter->num_clips = drm_plane_get_damage_clips_count(state);
 
 	/* Round down for x1/y1 and round up for x2/y2 to catch all pixels */
-	iter->plane_src.x1 = state->src.x1 >> 16;
-	iter->plane_src.y1 = state->src.y1 >> 16;
-	iter->plane_src.x2 = (state->src.x2 >> 16) + !!(state->src.x2 & 0xFFFF);
-	iter->plane_src.y2 = (state->src.y2 >> 16) + !!(state->src.y2 & 0xFFFF);
+	src = drm_plane_state_src(state);
+
+	iter->plane_src.x1 = src.x1 >> 16;
+	iter->plane_src.y1 = src.y1 >> 16;
+	iter->plane_src.x2 = (src.x2 >> 16) + !!(src.x2 & 0xFFFF);
+	iter->plane_src.y2 = (src.y2 >> 16) + !!(src.y2 & 0xFFFF);
 
 	if (!iter->clips || !drm_rect_equals(&state->src, &old_state->src)) {
 		iter->clips = NULL;
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v2 2/4] drm/i915/display: Use original src in psr2 sel fetch area calculation
  2022-08-23 11:29 [PATCH v2 0/4] Fixes for damage clips handling Jouni Högander
  2022-08-23 11:29 ` [PATCH v2 1/4] drm: Use original src rect while initializing damage iterator Jouni Högander
@ 2022-08-23 11:29 ` Jouni Högander
  2022-09-02 10:59   ` [Intel-gfx] " Kahola, Mika
  2022-08-23 11:29 ` [PATCH v2 3/4] drm/i915/display: Use drm helper instead of own loop for damage clips Jouni Högander
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 15+ messages in thread
From: Jouni Högander @ 2022-08-23 11:29 UTC (permalink / raw)
  To: dri-devel, intel-gfx; +Cc: Jouni Högander

drm_plane_state->src is modified when offset is calculated:

before calculation:
src.x1 = 8192, src.y1 = 8192

after calculation (pitch = 65536, cpp = 4, alignment = 262144)
src.x1 = 8192, src.y1 = 0, offset = 0x20000000

Damage clips are relative to original coodrdinates provided by
user-space. To compare these against src coordinates we need to use
original coordinates as provided by user-space. These can be obtained
by using drm_plane_state_src.

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
---
 drivers/gpu/drm/i915/display/intel_psr.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 98c3c8015a5c..16985de24019 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1767,7 +1767,8 @@ int intel_psr2_sel_fetch_update(struct intel_atomic_state *state,
 			continue;
 		}
 
-		drm_rect_fp_to_int(&src, &new_plane_state->uapi.src);
+		src = drm_plane_state_src(&new_plane_state->uapi);
+		drm_rect_fp_to_int(&src, &src);
 
 		drm_atomic_helper_damage_iter_init(&iter,
 						   &old_plane_state->uapi,
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v2 3/4] drm/i915/display: Use drm helper instead of own loop for damage clips
  2022-08-23 11:29 [PATCH v2 0/4] Fixes for damage clips handling Jouni Högander
  2022-08-23 11:29 ` [PATCH v2 1/4] drm: Use original src rect while initializing damage iterator Jouni Högander
  2022-08-23 11:29 ` [PATCH v2 2/4] drm/i915/display: Use original src in psr2 sel fetch area calculation Jouni Högander
@ 2022-08-23 11:29 ` Jouni Högander
  2022-09-02 11:03   ` [Intel-gfx] " Kahola, Mika
  2022-08-23 11:29 ` [PATCH v2 4/4] drm/tests: Set also mock plane src_x, src_y, src_w and src_h Jouni Högander
  2022-09-13  9:04 ` [PATCH v2 0/4] Fixes for damage clips handling Ville Syrjälä
  4 siblings, 1 reply; 15+ messages in thread
From: Jouni Högander @ 2022-08-23 11:29 UTC (permalink / raw)
  To: dri-devel, intel-gfx; +Cc: Jouni Högander

Use existing drm_atomic_helper_damage_merged from generic drm code
instead of implementing own loop to iterate over damage_clips.

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
---
 drivers/gpu/drm/i915/display/intel_psr.c | 17 +++++------------
 1 file changed, 5 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 16985de24019..0ce8076be000 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1721,8 +1721,6 @@ int intel_psr2_sel_fetch_update(struct intel_atomic_state *state,
 					     new_plane_state, i) {
 		struct drm_rect src, damaged_area = { .x1 = 0, .y1 = -1,
 						      .x2 = INT_MAX };
-		struct drm_atomic_helper_damage_iter iter;
-		struct drm_rect clip;
 
 		if (new_plane_state->uapi.crtc != crtc_state->uapi.crtc)
 			continue;
@@ -1770,20 +1768,15 @@ int intel_psr2_sel_fetch_update(struct intel_atomic_state *state,
 		src = drm_plane_state_src(&new_plane_state->uapi);
 		drm_rect_fp_to_int(&src, &src);
 
-		drm_atomic_helper_damage_iter_init(&iter,
-						   &old_plane_state->uapi,
-						   &new_plane_state->uapi);
-		drm_atomic_for_each_plane_damage(&iter, &clip) {
-			if (drm_rect_intersect(&clip, &src))
-				clip_area_update(&damaged_area, &clip,
-						 &crtc_state->pipe_src);
-		}
-
-		if (damaged_area.y1 == -1)
+		if (!drm_atomic_helper_damage_merged(&old_plane_state->uapi,
+						     &new_plane_state->uapi, &damaged_area))
 			continue;
 
 		damaged_area.y1 += new_plane_state->uapi.dst.y1 - src.y1;
 		damaged_area.y2 += new_plane_state->uapi.dst.y1 - src.y1;
+		damaged_area.x1 += new_plane_state->uapi.dst.x1 - src.x1;
+		damaged_area.x2 += new_plane_state->uapi.dst.x1 - src.x1;
+
 		clip_area_update(&pipe_clip, &damaged_area, &crtc_state->pipe_src);
 	}
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v2 4/4] drm/tests: Set also mock plane src_x, src_y, src_w and src_h
  2022-08-23 11:29 [PATCH v2 0/4] Fixes for damage clips handling Jouni Högander
                   ` (2 preceding siblings ...)
  2022-08-23 11:29 ` [PATCH v2 3/4] drm/i915/display: Use drm helper instead of own loop for damage clips Jouni Högander
@ 2022-08-23 11:29 ` Jouni Högander
  2022-09-02 11:06   ` [Intel-gfx] " Kahola, Mika
  2022-09-03 14:04   ` Maíra Canal
  2022-09-13  9:04 ` [PATCH v2 0/4] Fixes for damage clips handling Ville Syrjälä
  4 siblings, 2 replies; 15+ messages in thread
From: Jouni Högander @ 2022-08-23 11:29 UTC (permalink / raw)
  To: dri-devel, intel-gfx; +Cc: Jouni Högander

We need to set also src_x, src_y, src_w and src_h for the mock plane.
After fix for drm_atomic_helper_damage_iter_init we are using these
when iterating damage_clips.

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
---
 drivers/gpu/drm/tests/drm_damage_helper_test.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/tests/drm_damage_helper_test.c b/drivers/gpu/drm/tests/drm_damage_helper_test.c
index bf250bd08d7e..c608ae06f0e3 100644
--- a/drivers/gpu/drm/tests/drm_damage_helper_test.c
+++ b/drivers/gpu/drm/tests/drm_damage_helper_test.c
@@ -59,6 +59,11 @@ static int drm_damage_helper_init(struct kunit *test)
 static void set_plane_src(struct drm_plane_state *state, int x1, int y1, int x2,
 			  int y2)
 {
+	state->src_x = x1;
+	state->src_y = y1;
+	state->src_w = x2 - x1;
+	state->src_h = y2 - y1;
+
 	state->src.x1 = x1;
 	state->src.y1 = y1;
 	state->src.x2 = x2;
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* RE: [PATCH v2 1/4] drm: Use original src rect while initializing damage iterator
  2022-08-23 11:29 ` [PATCH v2 1/4] drm: Use original src rect while initializing damage iterator Jouni Högander
@ 2022-09-02 10:58   ` Kahola, Mika
  0 siblings, 0 replies; 15+ messages in thread
From: Kahola, Mika @ 2022-09-02 10:58 UTC (permalink / raw)
  To: Hogander, Jouni, dri-devel, intel-gfx; +Cc: Hogander, Jouni

> -----Original Message-----
> From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of Jouni
> Högander
> Sent: Tuesday, August 23, 2022 2:29 PM
> To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org
> Cc: Hogander, Jouni <jouni.hogander@intel.com>
> Subject: [PATCH v2 1/4] drm: Use original src rect while initializing damage
> iterator
> 
> drm_plane_state->src might be modified by the driver. This is done e.g. in i915
> driver when there is bigger framebuffer than the plane and there is some offset
> within framebuffer. I915 driver calculates separate offset and adjusts src rect
> coords to be relative to this offset. Damage clips are still relative to original src
> coords provided by user-space.
> 
> This patch ensures original coordinates provided by user-space are used when
> initiliazing damage iterator.
> 
Looks ok.

Reviewed-by: Mika Kahola <mika.kahola@intel.com>

> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>  drivers/gpu/drm/drm_damage_helper.c | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_damage_helper.c
> b/drivers/gpu/drm/drm_damage_helper.c
> index 937b699ac2a8..d8b2955e88fd 100644
> --- a/drivers/gpu/drm/drm_damage_helper.c
> +++ b/drivers/gpu/drm/drm_damage_helper.c
> @@ -224,6 +224,7 @@ drm_atomic_helper_damage_iter_init(struct
> drm_atomic_helper_damage_iter *iter,
>  				   const struct drm_plane_state *old_state,
>  				   const struct drm_plane_state *state)  {
> +	struct drm_rect src;
>  	memset(iter, 0, sizeof(*iter));
> 
>  	if (!state || !state->crtc || !state->fb || !state->visible) @@ -233,10
> +234,12 @@ drm_atomic_helper_damage_iter_init(struct
> drm_atomic_helper_damage_iter *iter,
>  	iter->num_clips = drm_plane_get_damage_clips_count(state);
> 
>  	/* Round down for x1/y1 and round up for x2/y2 to catch all pixels */
> -	iter->plane_src.x1 = state->src.x1 >> 16;
> -	iter->plane_src.y1 = state->src.y1 >> 16;
> -	iter->plane_src.x2 = (state->src.x2 >> 16) + !!(state->src.x2 & 0xFFFF);
> -	iter->plane_src.y2 = (state->src.y2 >> 16) + !!(state->src.y2 & 0xFFFF);
> +	src = drm_plane_state_src(state);
> +
> +	iter->plane_src.x1 = src.x1 >> 16;
> +	iter->plane_src.y1 = src.y1 >> 16;
> +	iter->plane_src.x2 = (src.x2 >> 16) + !!(src.x2 & 0xFFFF);
> +	iter->plane_src.y2 = (src.y2 >> 16) + !!(src.y2 & 0xFFFF);
> 
>  	if (!iter->clips || !drm_rect_equals(&state->src, &old_state->src)) {
>  		iter->clips = NULL;
> --
> 2.34.1


^ permalink raw reply	[flat|nested] 15+ messages in thread

* RE: [Intel-gfx] [PATCH v2 2/4] drm/i915/display: Use original src in psr2 sel fetch area calculation
  2022-08-23 11:29 ` [PATCH v2 2/4] drm/i915/display: Use original src in psr2 sel fetch area calculation Jouni Högander
@ 2022-09-02 10:59   ` Kahola, Mika
  0 siblings, 0 replies; 15+ messages in thread
From: Kahola, Mika @ 2022-09-02 10:59 UTC (permalink / raw)
  To: Hogander, Jouni, dri-devel, intel-gfx

> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Jouni
> Högander
> Sent: Tuesday, August 23, 2022 2:29 PM
> To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org
> Subject: [Intel-gfx] [PATCH v2 2/4] drm/i915/display: Use original src in psr2 sel
> fetch area calculation
> 
> drm_plane_state->src is modified when offset is calculated:
> 
> before calculation:
> src.x1 = 8192, src.y1 = 8192
> 
> after calculation (pitch = 65536, cpp = 4, alignment = 262144)
> src.x1 = 8192, src.y1 = 0, offset = 0x20000000
> 
> Damage clips are relative to original coodrdinates provided by user-space. To
> compare these against src coordinates we need to use original coordinates as
> provided by user-space. These can be obtained by using drm_plane_state_src.
> 

Reviewed-by: Mika Kahola <mika.kahola@intel.com>

> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_psr.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> b/drivers/gpu/drm/i915/display/intel_psr.c
> index 98c3c8015a5c..16985de24019 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -1767,7 +1767,8 @@ int intel_psr2_sel_fetch_update(struct
> intel_atomic_state *state,
>  			continue;
>  		}
> 
> -		drm_rect_fp_to_int(&src, &new_plane_state->uapi.src);
> +		src = drm_plane_state_src(&new_plane_state->uapi);
> +		drm_rect_fp_to_int(&src, &src);
> 
>  		drm_atomic_helper_damage_iter_init(&iter,
>  						   &old_plane_state->uapi,
> --
> 2.34.1


^ permalink raw reply	[flat|nested] 15+ messages in thread

* RE: [Intel-gfx] [PATCH v2 3/4] drm/i915/display: Use drm helper instead of own loop for damage clips
  2022-08-23 11:29 ` [PATCH v2 3/4] drm/i915/display: Use drm helper instead of own loop for damage clips Jouni Högander
@ 2022-09-02 11:03   ` Kahola, Mika
  0 siblings, 0 replies; 15+ messages in thread
From: Kahola, Mika @ 2022-09-02 11:03 UTC (permalink / raw)
  To: Hogander, Jouni, dri-devel, intel-gfx

> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Jouni
> Högander
> Sent: Tuesday, August 23, 2022 2:29 PM
> To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org
> Subject: [Intel-gfx] [PATCH v2 3/4] drm/i915/display: Use drm helper instead of
> own loop for damage clips
> 
> Use existing drm_atomic_helper_damage_merged from generic drm code
> instead of implementing own loop to iterate over damage_clips.
> 

Reviewed-by: Mika Kahola <mika.kahola@intel.com>

> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_psr.c | 17 +++++------------
>  1 file changed, 5 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> b/drivers/gpu/drm/i915/display/intel_psr.c
> index 16985de24019..0ce8076be000 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -1721,8 +1721,6 @@ int intel_psr2_sel_fetch_update(struct
> intel_atomic_state *state,
>  					     new_plane_state, i) {
>  		struct drm_rect src, damaged_area = { .x1 = 0, .y1 = -1,
>  						      .x2 = INT_MAX };
> -		struct drm_atomic_helper_damage_iter iter;
> -		struct drm_rect clip;
> 
>  		if (new_plane_state->uapi.crtc != crtc_state->uapi.crtc)
>  			continue;
> @@ -1770,20 +1768,15 @@ int intel_psr2_sel_fetch_update(struct
> intel_atomic_state *state,
>  		src = drm_plane_state_src(&new_plane_state->uapi);
>  		drm_rect_fp_to_int(&src, &src);
> 
> -		drm_atomic_helper_damage_iter_init(&iter,
> -						   &old_plane_state->uapi,
> -						   &new_plane_state->uapi);
> -		drm_atomic_for_each_plane_damage(&iter, &clip) {
> -			if (drm_rect_intersect(&clip, &src))
> -				clip_area_update(&damaged_area, &clip,
> -						 &crtc_state->pipe_src);
> -		}
> -
> -		if (damaged_area.y1 == -1)
> +		if (!drm_atomic_helper_damage_merged(&old_plane_state-
> >uapi,
> +						     &new_plane_state->uapi,
> &damaged_area))
>  			continue;
> 
>  		damaged_area.y1 += new_plane_state->uapi.dst.y1 - src.y1;
>  		damaged_area.y2 += new_plane_state->uapi.dst.y1 - src.y1;
> +		damaged_area.x1 += new_plane_state->uapi.dst.x1 - src.x1;
> +		damaged_area.x2 += new_plane_state->uapi.dst.x1 - src.x1;
> +
>  		clip_area_update(&pipe_clip, &damaged_area, &crtc_state-
> >pipe_src);
>  	}
> 
> --
> 2.34.1


^ permalink raw reply	[flat|nested] 15+ messages in thread

* RE: [Intel-gfx] [PATCH v2 4/4] drm/tests: Set also mock plane src_x,  src_y, src_w and src_h
  2022-08-23 11:29 ` [PATCH v2 4/4] drm/tests: Set also mock plane src_x, src_y, src_w and src_h Jouni Högander
@ 2022-09-02 11:06   ` Kahola, Mika
  2022-09-03 14:04   ` Maíra Canal
  1 sibling, 0 replies; 15+ messages in thread
From: Kahola, Mika @ 2022-09-02 11:06 UTC (permalink / raw)
  To: Hogander, Jouni, dri-devel, intel-gfx

> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Jouni
> Högander
> Sent: Tuesday, August 23, 2022 2:29 PM
> To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org
> Subject: [Intel-gfx] [PATCH v2 4/4] drm/tests: Set also mock plane src_x, src_y,
> src_w and src_h
> 
> We need to set also src_x, src_y, src_w and src_h for the mock plane.
> After fix for drm_atomic_helper_damage_iter_init we are using these when
> iterating damage_clips.
> 

Reviewed-by: Mika Kahola <mika.kahola@intel.com>

> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>  drivers/gpu/drm/tests/drm_damage_helper_test.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/gpu/drm/tests/drm_damage_helper_test.c
> b/drivers/gpu/drm/tests/drm_damage_helper_test.c
> index bf250bd08d7e..c608ae06f0e3 100644
> --- a/drivers/gpu/drm/tests/drm_damage_helper_test.c
> +++ b/drivers/gpu/drm/tests/drm_damage_helper_test.c
> @@ -59,6 +59,11 @@ static int drm_damage_helper_init(struct kunit *test)
> static void set_plane_src(struct drm_plane_state *state, int x1, int y1, int x2,
>  			  int y2)
>  {
> +	state->src_x = x1;
> +	state->src_y = y1;
> +	state->src_w = x2 - x1;
> +	state->src_h = y2 - y1;
> +
>  	state->src.x1 = x1;
>  	state->src.y1 = y1;
>  	state->src.x2 = x2;
> --
> 2.34.1


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 4/4] drm/tests: Set also mock plane src_x, src_y, src_w and src_h
  2022-08-23 11:29 ` [PATCH v2 4/4] drm/tests: Set also mock plane src_x, src_y, src_w and src_h Jouni Högander
  2022-09-02 11:06   ` [Intel-gfx] " Kahola, Mika
@ 2022-09-03 14:04   ` Maíra Canal
  1 sibling, 0 replies; 15+ messages in thread
From: Maíra Canal @ 2022-09-03 14:04 UTC (permalink / raw)
  To: Jouni Högander, dri-devel, intel-gfx

On 8/23/22 08:29, Jouni Högander wrote:
> We need to set also src_x, src_y, src_w and src_h for the mock plane.
> After fix for drm_atomic_helper_damage_iter_init we are using these
> when iterating damage_clips.
> 
> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>

Tested-by: Maíra Canal <mairacanal@riseup.net>

Best Regards,
- Maíra Canal

> ---
>  drivers/gpu/drm/tests/drm_damage_helper_test.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/gpu/drm/tests/drm_damage_helper_test.c b/drivers/gpu/drm/tests/drm_damage_helper_test.c
> index bf250bd08d7e..c608ae06f0e3 100644
> --- a/drivers/gpu/drm/tests/drm_damage_helper_test.c
> +++ b/drivers/gpu/drm/tests/drm_damage_helper_test.c
> @@ -59,6 +59,11 @@ static int drm_damage_helper_init(struct kunit *test)
>  static void set_plane_src(struct drm_plane_state *state, int x1, int y1, int x2,
>  			  int y2)
>  {
> +	state->src_x = x1;
> +	state->src_y = y1;
> +	state->src_w = x2 - x1;
> +	state->src_h = y2 - y1;
> +
>  	state->src.x1 = x1;
>  	state->src.y1 = y1;
>  	state->src.x2 = x2;

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 0/4] Fixes for damage clips handling
  2022-08-23 11:29 [PATCH v2 0/4] Fixes for damage clips handling Jouni Högander
                   ` (3 preceding siblings ...)
  2022-08-23 11:29 ` [PATCH v2 4/4] drm/tests: Set also mock plane src_x, src_y, src_w and src_h Jouni Högander
@ 2022-09-13  9:04 ` Ville Syrjälä
  2022-09-13 10:47   ` Hogander, Jouni
  4 siblings, 1 reply; 15+ messages in thread
From: Ville Syrjälä @ 2022-09-13  9:04 UTC (permalink / raw)
  To: Jouni Högander
  Cc: Jani Nikula, Daniel Vetter, intel-gfx,
	José Roberto de Souza, Maíra Canal, dri-devel,
	Mika Kahola

On Tue, Aug 23, 2022 at 02:29:16PM +0300, Jouni Högander wrote:
> Currently damage clips handling is broken for planes when using big
> framebuffer + offset in case kms driver adjusts drm_plane_state.src
> coords. This is because damage clips are using coords relative to
> original coords from user-space.
> 
> This patchset is fixing this by using original
> coords from user-space instead of drm_plane_state.src when iterating
> damage_clips.
> 
> v2: Modify drm unit tests accordingly
> 
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: José Roberto de Souza <jose.souza@intel.com>
> Cc: Mika Kahola <mika.kahola@intel.com>
> Cc: Maíra Canal <mairacanal@riseup.net>
> 
> Jouni Högander (4):
>   drm: Use original src rect while initializing damage iterator
>   drm/i915/display: Use original src in psr2 sel fetch area calculation
>   drm/i915/display: Use drm helper instead of own loop for damage clips
>   drm/tests: Set also mock plane src_x, src_y, src_w and src_h

Do these need to be applied into the same tree, or can
the drm vs. i915 stuff go in separately?

> 
>  drivers/gpu/drm/drm_damage_helper.c           | 11 ++++++----
>  drivers/gpu/drm/i915/display/intel_psr.c      | 20 +++++++------------
>  .../gpu/drm/tests/drm_damage_helper_test.c    |  5 +++++
>  3 files changed, 19 insertions(+), 17 deletions(-)
> 
> -- 
> 2.34.1

-- 
Ville Syrjälä
Intel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 0/4] Fixes for damage clips handling
  2022-09-13  9:04 ` [PATCH v2 0/4] Fixes for damage clips handling Ville Syrjälä
@ 2022-09-13 10:47   ` Hogander, Jouni
  2022-09-13 10:54     ` Thomas Zimmermann
  0 siblings, 1 reply; 15+ messages in thread
From: Hogander, Jouni @ 2022-09-13 10:47 UTC (permalink / raw)
  To: ville.syrjala
  Cc: Nikula, Jani, daniel.vetter, intel-gfx, dri-devel, mairacanal,
	Souza, Jose, Kahola, Mika

On Tue, 2022-09-13 at 12:04 +0300, Ville Syrjälä wrote:
> On Tue, Aug 23, 2022 at 02:29:16PM +0300, Jouni Högander wrote:
> > Currently damage clips handling is broken for planes when using big
> > framebuffer + offset in case kms driver adjusts drm_plane_state.src
> > coords. This is because damage clips are using coords relative to
> > original coords from user-space.
> > 
> > This patchset is fixing this by using original
> > coords from user-space instead of drm_plane_state.src when
> > iterating
> > damage_clips.
> > 
> > v2: Modify drm unit tests accordingly
> > 
> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > Cc: Jani Nikula <jani.nikula@intel.com>
> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Cc: José Roberto de Souza <jose.souza@intel.com>
> > Cc: Mika Kahola <mika.kahola@intel.com>
> > Cc: Maíra Canal <mairacanal@riseup.net>
> > 
> > Jouni Högander (4):
> >   drm: Use original src rect while initializing damage iterator
> >   drm/i915/display: Use original src in psr2 sel fetch area
> > calculation
> >   drm/i915/display: Use drm helper instead of own loop for damage
> > clips
> >   drm/tests: Set also mock plane src_x, src_y, src_w and src_h
> 
> Do these need to be applied into the same tree, or can
> the drm vs. i915 stuff go in separately?

Patch 1 and 2 are needed to fix that bigfb handling for i915. Patch 4
is also needed to prevent breaking tests. Patch 3 is more like cleanup.

I think i915 patches could go via i915 tree. This just means that i915
bigfb handling isn't fixed by either of the sets alone.
 
> 
> > 
> >  drivers/gpu/drm/drm_damage_helper.c           | 11 ++++++----
> >  drivers/gpu/drm/i915/display/intel_psr.c      | 20 +++++++--------
> > ----
> >  .../gpu/drm/tests/drm_damage_helper_test.c    |  5 +++++
> >  3 files changed, 19 insertions(+), 17 deletions(-)
> > 
> > -- 
> > 2.34.1
> 


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 0/4] Fixes for damage clips handling
  2022-09-13 10:47   ` Hogander, Jouni
@ 2022-09-13 10:54     ` Thomas Zimmermann
  2022-09-13 10:56       ` Thomas Zimmermann
  0 siblings, 1 reply; 15+ messages in thread
From: Thomas Zimmermann @ 2022-09-13 10:54 UTC (permalink / raw)
  To: Hogander, Jouni, ville.syrjala
  Cc: Nikula, Jani, daniel.vetter, intel-gfx, Souza, Jose, mairacanal,
	dri-devel, Kahola, Mika


[-- Attachment #1.1: Type: text/plain, Size: 2446 bytes --]

Hi

Am 13.09.22 um 12:47 schrieb Hogander, Jouni:
> On Tue, 2022-09-13 at 12:04 +0300, Ville Syrjälä wrote:
>> On Tue, Aug 23, 2022 at 02:29:16PM +0300, Jouni Högander wrote:
>>> Currently damage clips handling is broken for planes when using big
>>> framebuffer + offset in case kms driver adjusts drm_plane_state.src
>>> coords. This is because damage clips are using coords relative to
>>> original coords from user-space.
>>>
>>> This patchset is fixing this by using original
>>> coords from user-space instead of drm_plane_state.src when
>>> iterating
>>> damage_clips.
>>>
>>> v2: Modify drm unit tests accordingly
>>>
>>> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
>>> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>>> Cc: Jani Nikula <jani.nikula@intel.com>
>>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>> Cc: José Roberto de Souza <jose.souza@intel.com>
>>> Cc: Mika Kahola <mika.kahola@intel.com>
>>> Cc: Maíra Canal <mairacanal@riseup.net>
>>>
>>> Jouni Högander (4):
>>>    drm: Use original src rect while initializing damage iterator
>>>    drm/i915/display: Use original src in psr2 sel fetch area
>>> calculation
>>>    drm/i915/display: Use drm helper instead of own loop for damage
>>> clips
>>>    drm/tests: Set also mock plane src_x, src_y, src_w and src_h
>>
>> Do these need to be applied into the same tree, or can
>> the drm vs. i915 stuff go in separately?
> 
> Patch 1 and 2 are needed to fix that bigfb handling for i915. Patch 4
> is also needed to prevent breaking tests. Patch 3 is more like cleanup.
> 
> I think i915 patches could go via i915 tree. This just means that i915
> bigfb handling isn't fixed by either of the sets alone.

I have a number of updates for damage handling that I want to get 
reviewed soon. Could you please merge your patchset via drm-misc-next?

Best regards
Thomas

>   
>>
>>>
>>>   drivers/gpu/drm/drm_damage_helper.c           | 11 ++++++----
>>>   drivers/gpu/drm/i915/display/intel_psr.c      | 20 +++++++--------
>>> ----
>>>   .../gpu/drm/tests/drm_damage_helper_test.c    |  5 +++++
>>>   3 files changed, 19 insertions(+), 17 deletions(-)
>>>
>>> -- 
>>> 2.34.1
>>
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 0/4] Fixes for damage clips handling
  2022-09-13 10:54     ` Thomas Zimmermann
@ 2022-09-13 10:56       ` Thomas Zimmermann
  2022-09-13 12:16         ` Ville Syrjälä
  0 siblings, 1 reply; 15+ messages in thread
From: Thomas Zimmermann @ 2022-09-13 10:56 UTC (permalink / raw)
  To: Hogander, Jouni, ville.syrjala
  Cc: Nikula, Jani, daniel.vetter, intel-gfx, Souza, Jose, mairacanal,
	dri-devel, Kahola, Mika


[-- Attachment #1.1: Type: text/plain, Size: 2606 bytes --]



Am 13.09.22 um 12:54 schrieb Thomas Zimmermann:
> Hi
> 
> Am 13.09.22 um 12:47 schrieb Hogander, Jouni:
>> On Tue, 2022-09-13 at 12:04 +0300, Ville Syrjälä wrote:
>>> On Tue, Aug 23, 2022 at 02:29:16PM +0300, Jouni Högander wrote:
>>>> Currently damage clips handling is broken for planes when using big
>>>> framebuffer + offset in case kms driver adjusts drm_plane_state.src
>>>> coords. This is because damage clips are using coords relative to
>>>> original coords from user-space.
>>>>
>>>> This patchset is fixing this by using original
>>>> coords from user-space instead of drm_plane_state.src when
>>>> iterating
>>>> damage_clips.
>>>>
>>>> v2: Modify drm unit tests accordingly
>>>>
>>>> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
>>>> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>>>> Cc: Jani Nikula <jani.nikula@intel.com>
>>>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>>> Cc: José Roberto de Souza <jose.souza@intel.com>
>>>> Cc: Mika Kahola <mika.kahola@intel.com>
>>>> Cc: Maíra Canal <mairacanal@riseup.net>
>>>>
>>>> Jouni Högander (4):
>>>>    drm: Use original src rect while initializing damage iterator
>>>>    drm/i915/display: Use original src in psr2 sel fetch area
>>>> calculation
>>>>    drm/i915/display: Use drm helper instead of own loop for damage
>>>> clips
>>>>    drm/tests: Set also mock plane src_x, src_y, src_w and src_h
>>>
>>> Do these need to be applied into the same tree, or can
>>> the drm vs. i915 stuff go in separately?
>>
>> Patch 1 and 2 are needed to fix that bigfb handling for i915. Patch 4
>> is also needed to prevent breaking tests. Patch 3 is more like cleanup.
>>
>> I think i915 patches could go via i915 tree. This just means that i915
>> bigfb handling isn't fixed by either of the sets alone.
> 
> I have a number of updates for damage handling that I want to get 
> reviewed soon. Could you please merge your patchset via drm-misc-next?

Or at least patches 1 and 4.

> 
> Best regards
> Thomas
> 
>>>
>>>>
>>>>   drivers/gpu/drm/drm_damage_helper.c           | 11 ++++++----
>>>>   drivers/gpu/drm/i915/display/intel_psr.c      | 20 +++++++--------
>>>> ----
>>>>   .../gpu/drm/tests/drm_damage_helper_test.c    |  5 +++++
>>>>   3 files changed, 19 insertions(+), 17 deletions(-)
>>>>
>>>> -- 
>>>> 2.34.1
>>>
>>
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 0/4] Fixes for damage clips handling
  2022-09-13 10:56       ` Thomas Zimmermann
@ 2022-09-13 12:16         ` Ville Syrjälä
  0 siblings, 0 replies; 15+ messages in thread
From: Ville Syrjälä @ 2022-09-13 12:16 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: Nikula, Jani, daniel.vetter, intel-gfx, dri-devel, mairacanal,
	Souza, Jose, Kahola, Mika, Hogander, Jouni

On Tue, Sep 13, 2022 at 12:56:49PM +0200, Thomas Zimmermann wrote:
> 
> 
> Am 13.09.22 um 12:54 schrieb Thomas Zimmermann:
> > Hi
> > 
> > Am 13.09.22 um 12:47 schrieb Hogander, Jouni:
> >> On Tue, 2022-09-13 at 12:04 +0300, Ville Syrjälä wrote:
> >>> On Tue, Aug 23, 2022 at 02:29:16PM +0300, Jouni Högander wrote:
> >>>> Currently damage clips handling is broken for planes when using big
> >>>> framebuffer + offset in case kms driver adjusts drm_plane_state.src
> >>>> coords. This is because damage clips are using coords relative to
> >>>> original coords from user-space.
> >>>>
> >>>> This patchset is fixing this by using original
> >>>> coords from user-space instead of drm_plane_state.src when
> >>>> iterating
> >>>> damage_clips.
> >>>>
> >>>> v2: Modify drm unit tests accordingly
> >>>>
> >>>> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> >>>> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> >>>> Cc: Jani Nikula <jani.nikula@intel.com>
> >>>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >>>> Cc: José Roberto de Souza <jose.souza@intel.com>
> >>>> Cc: Mika Kahola <mika.kahola@intel.com>
> >>>> Cc: Maíra Canal <mairacanal@riseup.net>
> >>>>
> >>>> Jouni Högander (4):
> >>>>    drm: Use original src rect while initializing damage iterator
> >>>>    drm/i915/display: Use original src in psr2 sel fetch area
> >>>> calculation
> >>>>    drm/i915/display: Use drm helper instead of own loop for damage
> >>>> clips
> >>>>    drm/tests: Set also mock plane src_x, src_y, src_w and src_h
> >>>
> >>> Do these need to be applied into the same tree, or can
> >>> the drm vs. i915 stuff go in separately?
> >>
> >> Patch 1 and 2 are needed to fix that bigfb handling for i915. Patch 4
> >> is also needed to prevent breaking tests. Patch 3 is more like cleanup.
> >>
> >> I think i915 patches could go via i915 tree. This just means that i915
> >> bigfb handling isn't fixed by either of the sets alone.
> > 
> > I have a number of updates for damage handling that I want to get 
> > reviewed soon. Could you please merge your patchset via drm-misc-next?
> 
> Or at least patches 1 and 4.

Went with the 50/50 split. Everything pushed now. Thanks.

-- 
Ville Syrjälä
Intel

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2022-09-13 12:16 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-23 11:29 [PATCH v2 0/4] Fixes for damage clips handling Jouni Högander
2022-08-23 11:29 ` [PATCH v2 1/4] drm: Use original src rect while initializing damage iterator Jouni Högander
2022-09-02 10:58   ` Kahola, Mika
2022-08-23 11:29 ` [PATCH v2 2/4] drm/i915/display: Use original src in psr2 sel fetch area calculation Jouni Högander
2022-09-02 10:59   ` [Intel-gfx] " Kahola, Mika
2022-08-23 11:29 ` [PATCH v2 3/4] drm/i915/display: Use drm helper instead of own loop for damage clips Jouni Högander
2022-09-02 11:03   ` [Intel-gfx] " Kahola, Mika
2022-08-23 11:29 ` [PATCH v2 4/4] drm/tests: Set also mock plane src_x, src_y, src_w and src_h Jouni Högander
2022-09-02 11:06   ` [Intel-gfx] " Kahola, Mika
2022-09-03 14:04   ` Maíra Canal
2022-09-13  9:04 ` [PATCH v2 0/4] Fixes for damage clips handling Ville Syrjälä
2022-09-13 10:47   ` Hogander, Jouni
2022-09-13 10:54     ` Thomas Zimmermann
2022-09-13 10:56       ` Thomas Zimmermann
2022-09-13 12:16         ` Ville Syrjälä

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).