Re: [PATCH v3 08/12] drm/udl: Pass rectangle directly to udl_handle_damage()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi

Am 08.09.22 um 14:54 schrieb Takashi Iwai:
On Thu, 08 Sep 2022 14:47:52 +0200,
Thomas Zimmermann wrote:

Hi

Am 08.09.22 um 11:51 schrieb Takashi Iwai:
Just for some code simplification.

Suggested-by: Thomas Zimmermann <tzimmermann@xxxxxxx>
Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>

With my comments fixed, you can add

Acked-by: Thomas Zimmermann <tzimmermann@xxxxxxx>

---
   drivers/gpu/drm/udl/udl_modeset.c | 20 +++++++++-----------
   1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/udl/udl_modeset.c b/drivers/gpu/drm/udl/udl_modeset.c
index c9b837ac26a7..0142fc6a478a 100644
--- a/drivers/gpu/drm/udl/udl_modeset.c
+++ b/drivers/gpu/drm/udl/udl_modeset.c
@@ -244,14 +244,13 @@ static long udl_log_cpp(unsigned int cpp)
     static int udl_handle_damage(struct drm_framebuffer *fb,
   			     const struct iosys_map *map,
-			     int x, int y, int width, int height)
+			     struct drm_rect *clip)

Should probably be declared const.

   {
   	struct drm_device *dev = fb->dev;
   	void *vaddr = map->vaddr; /* TODO: Use mapping abstraction properly */
   	int i, ret;
   	char *cmd;
   	struct urb *urb;
-	struct drm_rect clip;
   	int log_bpp;
     	ret = udl_log_cpp(fb->format->cpp[0]);
@@ -259,8 +258,6 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
   		return ret;
   	log_bpp = ret;
   -	drm_rect_init(&clip, x, y, width, height);
-
   	ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE);
   	if (ret)
   		return ret;
@@ -272,11 +269,11 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
   	}
   	cmd = urb->transfer_buffer;
   -	for (i = clip.y1; i < clip.y2; i++) {
+	for (i = clip->y1; i < clip->y2; i++) {
   		const int line_offset = fb->pitches[0] * i;
-		const int byte_offset = line_offset + (clip.x1 << log_bpp);
-		const int dev_byte_offset = (fb->width * i + clip.x1) << log_bpp;
-		const int byte_width = (clip.x2 - clip.x1) << log_bpp;
+		const int byte_offset = line_offset + (clip->x1 << log_bpp);
+		const int dev_byte_offset = (fb->width * i + clip->x1) << log_bpp;
+		const int byte_width = (clip->x2 - clip->x1) << log_bpp;

Please use drm_rect_width(clip) instead. Somehow there's already too
much code that open-codes this.

   		ret = udl_render_hline(dev, log_bpp, &urb, (char *)vaddr,
   				       &cmd, byte_offset, dev_byte_offset,
   				       byte_width);
@@ -329,6 +326,7 @@ udl_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe,
   	struct udl_device *udl = to_udl(dev);
   	struct drm_display_mode *mode = &crtc_state->mode;
   	struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(plane_state);
+	struct drm_rect clip;

Better do a static init with DRM_RECT_INIT(0, 0, fb->width,
fb->height) and remove the other init call below.

OK, below is the revised patch.

Do you want me a full respin for v4?

The patch looks good to me. I don't think a full v4 would be necessary unless another major change is requested.

Best regards
Thomas



Takashi

-- 8< --
From: Takashi Iwai <tiwai@xxxxxxx>
Subject: [PATCH] drm/udl: Pass rectangle directly to udl_handle_damage()

Just for some code simplification.

Suggested-by: Thomas Zimmermann <tzimmermann@xxxxxxx>
Acked-by: Thomas Zimmermann <tzimmermann@xxxxxxx>
Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
---
  drivers/gpu/drm/udl/udl_modeset.c | 19 ++++++++-----------
  1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/udl/udl_modeset.c b/drivers/gpu/drm/udl/udl_modeset.c
index c9b837ac26a7..d5e20bf144bc 100644
--- a/drivers/gpu/drm/udl/udl_modeset.c
+++ b/drivers/gpu/drm/udl/udl_modeset.c
@@ -244,14 +244,13 @@ static long udl_log_cpp(unsigned int cpp)
static int udl_handle_damage(struct drm_framebuffer *fb,
  			     const struct iosys_map *map,
-			     int x, int y, int width, int height)
+			     const struct drm_rect *clip)
  {
  	struct drm_device *dev = fb->dev;
  	void *vaddr = map->vaddr; /* TODO: Use mapping abstraction properly */
  	int i, ret;
  	char *cmd;
  	struct urb *urb;
-	struct drm_rect clip;
  	int log_bpp;
ret = udl_log_cpp(fb->format->cpp[0]);
@@ -259,8 +258,6 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
  		return ret;
  	log_bpp = ret;
- drm_rect_init(&clip, x, y, width, height);
-
  	ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE);
  	if (ret)
  		return ret;
@@ -272,11 +269,11 @@ static int udl_handle_damage(struct drm_framebuffer *fb,
  	}
  	cmd = urb->transfer_buffer;
- for (i = clip.y1; i < clip.y2; i++) {
+	for (i = clip->y1; i < clip->y2; i++) {
  		const int line_offset = fb->pitches[0] * i;
-		const int byte_offset = line_offset + (clip.x1 << log_bpp);
-		const int dev_byte_offset = (fb->width * i + clip.x1) << log_bpp;
-		const int byte_width = (clip.x2 - clip.x1) << log_bpp;
+		const int byte_offset = line_offset + (clip->x1 << log_bpp);
+		const int dev_byte_offset = (fb->width * i + clip->x1) << log_bpp;
+		const int byte_width = drm_rect_width(clip) << log_bpp;
  		ret = udl_render_hline(dev, log_bpp, &urb, (char *)vaddr,
  				       &cmd, byte_offset, dev_byte_offset,
  				       byte_width);
@@ -329,6 +326,7 @@ udl_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe,
  	struct udl_device *udl = to_udl(dev);
  	struct drm_display_mode *mode = &crtc_state->mode;
  	struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(plane_state);
+	struct drm_rect clip = DRM_RECT_INIT(0, 0, fb->width, fb->height);
  	char *buf;
  	char *wrptr;
  	int color_depth = UDL_COLOR_DEPTH_16BPP;
@@ -354,7 +352,7 @@ udl_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe,
udl->mode_buf_len = wrptr - buf; - udl_handle_damage(fb, &shadow_plane_state->data[0], 0, 0, fb->width, fb->height);
+	udl_handle_damage(fb, &shadow_plane_state->data[0], &clip);
/* enable display */
  	udl_crtc_write_mode_to_hw(crtc);
@@ -396,8 +394,7 @@ udl_simple_display_pipe_update(struct drm_simple_display_pipe *pipe,
  		return;
if (drm_atomic_helper_damage_merged(old_plane_state, state, &rect))
-		udl_handle_damage(fb, &shadow_plane_state->data[0], rect.x1, rect.y1,
-				  rect.x2 - rect.x1, rect.y2 - rect.y1);
+		udl_handle_damage(fb, &shadow_plane_state->data[0], &rect);
  }
static const struct drm_simple_display_pipe_funcs udl_simple_display_pipe_funcs = {

--
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: OpenPGP_signature
Description: OpenPGP digital signature


[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux