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

2022-09-08 Thread Thomas Zimmermann

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 
Signed-off-by: Takashi Iwai 


With my comments fixed, you can add

Acked-by: Thomas Zimmermann 


---
   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(, 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, , (char *)vaddr,
   , 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 = _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 
Subject: [PATCH] drm/udl: Pass rectangle directly to udl_handle_damage()

Just for some code simplification.

Suggested-by: Thomas Zimmermann 
Acked-by: Thomas Zimmermann 
Signed-off-by: Takashi Iwai 
---
  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(, 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 

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

2022-09-08 Thread 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 
> > Signed-off-by: Takashi Iwai 
> 
> With my comments fixed, you can add
> 
> Acked-by: Thomas Zimmermann 
> 
> > ---
> >   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(, 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, , (char *)vaddr,
> >, 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 = _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 
Subject: [PATCH] drm/udl: Pass rectangle directly to udl_handle_damage()

Just for some code simplification.

Suggested-by: Thomas Zimmermann 
Acked-by: Thomas Zimmermann 
Signed-off-by: Takashi Iwai 
---
 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(, 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);
-

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

2022-09-08 Thread Thomas Zimmermann

Hi

Am 08.09.22 um 11:51 schrieb Takashi Iwai:

Just for some code simplification.

Suggested-by: Thomas Zimmermann 
Signed-off-by: Takashi Iwai 


With my comments fixed, you can add

Acked-by: Thomas Zimmermann 


---
  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(, 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, , (char *)vaddr,
   , 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 = _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, _plane_state->data[0], 0, 0, fb->width, fb->height);

+   drm_rect_init(, 0, 0, fb->width, fb->height);
+   udl_handle_damage(fb, _plane_state->data[0], );
  
  	/* 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, ))

-   udl_handle_damage(fb, _plane_state->data[0], rect.x1, 
rect.y1,
- rect.x2 - rect.x1, rect.y2 - rect.y1);
+   udl_handle_damage(fb, _plane_state->data[0], );
  }
  
  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


OpenPGP_signature
Description: OpenPGP digital signature


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

2022-09-08 Thread Takashi Iwai
Just for some code simplification.

Suggested-by: Thomas Zimmermann 
Signed-off-by: Takashi Iwai 
---
 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)
 {
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(, 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, , (char *)vaddr,
   , 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 = _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, _plane_state->data[0], 0, 0, fb->width, 
fb->height);
+   drm_rect_init(, 0, 0, fb->width, fb->height);
+   udl_handle_damage(fb, _plane_state->data[0], );
 
/* 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, ))
-   udl_handle_damage(fb, _plane_state->data[0], rect.x1, 
rect.y1,
- rect.x2 - rect.x1, rect.y2 - rect.y1);
+   udl_handle_damage(fb, _plane_state->data[0], );
 }
 
 static const struct drm_simple_display_pipe_funcs 
udl_simple_display_pipe_funcs = {
-- 
2.35.3