* [PATCH] drm/fb-helper: Fix clipping when damage area spans a single scanline
@ 2026-02-10 17:35 Francesco Lavra
2026-02-11 10:03 ` Thomas Zimmermann
2026-04-30 15:35 ` Francesco Lavra
0 siblings, 2 replies; 4+ messages in thread
From: Francesco Lavra @ 2026-02-10 17:35 UTC (permalink / raw)
To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
David Airlie, Simona Vetter, Javier Martinez Canillas, dri-devel,
linux-kernel
When the damage area resulting from a dirty memory range spans a single
scanline, the width of the rectangle is calculated dynamically because it
may not coincide with the framebuffer width.
If the dirty range ends exactly at the end of the scanline, the `bit_end`
variable is incorrectly assigned a 0 value, which results in a bogus clip
rectangle where the x2 coordinate is 0. This prevents the dirty scanline
from being flushed to the hardware.
Change the calculation of the `bit_end` value to fix the x2 coordinate
value in the above edge case.
Fixes: ded74cafeea9 ("drm/fb-helper: Clip damage area horizontally")
Signed-off-by: Francesco Lavra <flavra@baylibre.com>
---
drivers/gpu/drm/drm_fb_helper.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
index 4b47aa0dab35..d545342d24b3 100644
--- a/drivers/gpu/drm/drm_fb_helper.c
+++ b/drivers/gpu/drm/drm_fb_helper.c
@@ -608,7 +608,7 @@ static void drm_fb_helper_memory_range_to_clip(struct fb_info *info, off_t off,
* the number of horizontal pixels that need an update.
*/
off_t bit_off = (off % line_length) * 8;
- off_t bit_end = (end % line_length) * 8;
+ off_t bit_end = bit_off + len * 8;
x1 = bit_off / info->var.bits_per_pixel;
x2 = DIV_ROUND_UP(bit_end, info->var.bits_per_pixel);
--
2.39.5
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] drm/fb-helper: Fix clipping when damage area spans a single scanline
2026-02-10 17:35 [PATCH] drm/fb-helper: Fix clipping when damage area spans a single scanline Francesco Lavra
@ 2026-02-11 10:03 ` Thomas Zimmermann
2026-04-30 15:35 ` Francesco Lavra
1 sibling, 0 replies; 4+ messages in thread
From: Thomas Zimmermann @ 2026-02-11 10:03 UTC (permalink / raw)
To: Francesco Lavra, Maarten Lankhorst, Maxime Ripard, David Airlie,
Simona Vetter, Javier Martinez Canillas, dri-devel, linux-kernel
Hi
Am 10.02.26 um 18:35 schrieb Francesco Lavra:
> When the damage area resulting from a dirty memory range spans a single
> scanline, the width of the rectangle is calculated dynamically because it
> may not coincide with the framebuffer width.
> If the dirty range ends exactly at the end of the scanline, the `bit_end`
> variable is incorrectly assigned a 0 value, which results in a bogus clip
> rectangle where the x2 coordinate is 0. This prevents the dirty scanline
> from being flushed to the hardware.
> Change the calculation of the `bit_end` value to fix the x2 coordinate
> value in the above edge case.
>
> Fixes: ded74cafeea9 ("drm/fb-helper: Clip damage area horizontally")
> Signed-off-by: Francesco Lavra <flavra@baylibre.com>
The whole logic in that helper would need an update. But for now
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Best regards
Thomas
> ---
> drivers/gpu/drm/drm_fb_helper.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
> index 4b47aa0dab35..d545342d24b3 100644
> --- a/drivers/gpu/drm/drm_fb_helper.c
> +++ b/drivers/gpu/drm/drm_fb_helper.c
> @@ -608,7 +608,7 @@ static void drm_fb_helper_memory_range_to_clip(struct fb_info *info, off_t off,
> * the number of horizontal pixels that need an update.
> */
> off_t bit_off = (off % line_length) * 8;
> - off_t bit_end = (end % line_length) * 8;
> + off_t bit_end = bit_off + len * 8;
>
> x1 = bit_off / info->var.bits_per_pixel;
> x2 = DIV_ROUND_UP(bit_end, info->var.bits_per_pixel);
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] drm/fb-helper: Fix clipping when damage area spans a single scanline
2026-02-10 17:35 [PATCH] drm/fb-helper: Fix clipping when damage area spans a single scanline Francesco Lavra
2026-02-11 10:03 ` Thomas Zimmermann
@ 2026-04-30 15:35 ` Francesco Lavra
2026-05-04 12:59 ` Thomas Zimmermann
1 sibling, 1 reply; 4+ messages in thread
From: Francesco Lavra @ 2026-04-30 15:35 UTC (permalink / raw)
To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
David Airlie, Simona Vetter, Javier Martinez Canillas, dri-devel,
linux-kernel
Friendly ping
On Tue, 2026-02-10 at 18:35 +0100, Francesco Lavra wrote:
> When the damage area resulting from a dirty memory range spans a single
> scanline, the width of the rectangle is calculated dynamically because it
> may not coincide with the framebuffer width.
> If the dirty range ends exactly at the end of the scanline, the `bit_end`
> variable is incorrectly assigned a 0 value, which results in a bogus clip
> rectangle where the x2 coordinate is 0. This prevents the dirty scanline
> from being flushed to the hardware.
> Change the calculation of the `bit_end` value to fix the x2 coordinate
> value in the above edge case.
>
> Fixes: ded74cafeea9 ("drm/fb-helper: Clip damage area horizontally")
> Signed-off-by: Francesco Lavra <flavra@baylibre.com>
> ---
> drivers/gpu/drm/drm_fb_helper.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_fb_helper.c
> b/drivers/gpu/drm/drm_fb_helper.c
> index 4b47aa0dab35..d545342d24b3 100644
> --- a/drivers/gpu/drm/drm_fb_helper.c
> +++ b/drivers/gpu/drm/drm_fb_helper.c
> @@ -608,7 +608,7 @@ static void drm_fb_helper_memory_range_to_clip(struct
> fb_info *info, off_t off,
> * the number of horizontal pixels that need an update.
> */
> off_t bit_off = (off % line_length) * 8;
> - off_t bit_end = (end % line_length) * 8;
> + off_t bit_end = bit_off + len * 8;
>
> x1 = bit_off / info->var.bits_per_pixel;
> x2 = DIV_ROUND_UP(bit_end, info->var.bits_per_pixel);
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] drm/fb-helper: Fix clipping when damage area spans a single scanline
2026-04-30 15:35 ` Francesco Lavra
@ 2026-05-04 12:59 ` Thomas Zimmermann
0 siblings, 0 replies; 4+ messages in thread
From: Thomas Zimmermann @ 2026-05-04 12:59 UTC (permalink / raw)
To: Francesco Lavra, Maarten Lankhorst, Maxime Ripard, David Airlie,
Simona Vetter, Javier Martinez Canillas, dri-devel, linux-kernel
Hi
Am 30.04.26 um 17:35 schrieb Francesco Lavra:
> Friendly ping
Sorry, forgot this patch. It's merged now. Thanks a lot.
Best regards
Thomas
>
> On Tue, 2026-02-10 at 18:35 +0100, Francesco Lavra wrote:
>> When the damage area resulting from a dirty memory range spans a single
>> scanline, the width of the rectangle is calculated dynamically because it
>> may not coincide with the framebuffer width.
>> If the dirty range ends exactly at the end of the scanline, the `bit_end`
>> variable is incorrectly assigned a 0 value, which results in a bogus clip
>> rectangle where the x2 coordinate is 0. This prevents the dirty scanline
>> from being flushed to the hardware.
>> Change the calculation of the `bit_end` value to fix the x2 coordinate
>> value in the above edge case.
>>
>> Fixes: ded74cafeea9 ("drm/fb-helper: Clip damage area horizontally")
>> Signed-off-by: Francesco Lavra <flavra@baylibre.com>
>> ---
>> drivers/gpu/drm/drm_fb_helper.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/drm_fb_helper.c
>> b/drivers/gpu/drm/drm_fb_helper.c
>> index 4b47aa0dab35..d545342d24b3 100644
>> --- a/drivers/gpu/drm/drm_fb_helper.c
>> +++ b/drivers/gpu/drm/drm_fb_helper.c
>> @@ -608,7 +608,7 @@ static void drm_fb_helper_memory_range_to_clip(struct
>> fb_info *info, off_t off,
>> * the number of horizontal pixels that need an update.
>> */
>> off_t bit_off = (off % line_length) * 8;
>> - off_t bit_end = (end % line_length) * 8;
>> + off_t bit_end = bit_off + len * 8;
>>
>> x1 = bit_off / info->var.bits_per_pixel;
>> x2 = DIV_ROUND_UP(bit_end, info->var.bits_per_pixel);
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-05-04 12:59 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-02-10 17:35 [PATCH] drm/fb-helper: Fix clipping when damage area spans a single scanline Francesco Lavra
2026-02-11 10:03 ` Thomas Zimmermann
2026-04-30 15:35 ` Francesco Lavra
2026-05-04 12:59 ` Thomas Zimmermann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®