Message ID | 20220908095115.23396-9-tiwai@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/udl: More fixes | expand |
Hi Am 08.09.22 um 11:51 schrieb Takashi Iwai: > Just for some code simplification. > > Suggested-by: Thomas Zimmermann <tzimmermann@suse.de> > Signed-off-by: Takashi Iwai <tiwai@suse.de> With my comments fixed, you can add Acked-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > 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. Best regards Thomas > char *buf; > char *wrptr; > int color_depth = UDL_COLOR_DEPTH_16BPP; > @@ -354,7 +352,8 @@ 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); > + drm_rect_init(&clip, 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 +395,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 = {
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@suse.de> > > Signed-off-by: Takashi Iwai <tiwai@suse.de> > > With my comments fixed, you can add > > Acked-by: Thomas Zimmermann <tzimmermann@suse.de> > > > --- > > 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? Takashi -- 8< -- From: Takashi Iwai <tiwai@suse.de> Subject: [PATCH] drm/udl: Pass rectangle directly to udl_handle_damage() Just for some code simplification. Suggested-by: Thomas Zimmermann <tzimmermann@suse.de> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Signed-off-by: Takashi Iwai <tiwai@suse.de> --- 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 = {
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@suse.de> >>> Signed-off-by: Takashi Iwai <tiwai@suse.de> >> >> With my comments fixed, you can add >> >> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> >> >>> --- >>> 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@suse.de> > Subject: [PATCH] drm/udl: Pass rectangle directly to udl_handle_damage() > > Just for some code simplification. > > Suggested-by: Thomas Zimmermann <tzimmermann@suse.de> > Acked-by: Thomas Zimmermann <tzimmermann@suse.de> > Signed-off-by: Takashi Iwai <tiwai@suse.de> > --- > 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 = {
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) { 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; 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; char *buf; char *wrptr; int color_depth = UDL_COLOR_DEPTH_16BPP; @@ -354,7 +352,8 @@ 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); + drm_rect_init(&clip, 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 +395,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 = {
Just for some code simplification. Suggested-by: Thomas Zimmermann <tzimmermann@suse.de> Signed-off-by: Takashi Iwai <tiwai@suse.de> --- drivers/gpu/drm/udl/udl_modeset.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-)