ChanSoo Shin <[email protected]> writes: > Instead of marking the entire display as dirty, calculate > start_row and end_row based on off/len and mark only those rows. > This improves performance for partial framebuffer updates. > > Signed-off-by: ChanSoo Shin <[email protected]> > --- > drivers/staging/fbtft/fbtft-core.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/staging/fbtft/fbtft-core.c > b/drivers/staging/fbtft/fbtft-core.c > index 8a5ccc8ae0a1..0fbdfdaaa94d 100644 > --- a/drivers/staging/fbtft/fbtft-core.c > +++ b/drivers/staging/fbtft/fbtft-core.c > @@ -415,8 +415,11 @@ static void fbtft_ops_damage_range(struct fb_info *info, > off_t off, size_t len) > { > struct fbtft_par *par = info->par; > > - /* TODO: only mark changed area update all for now */ > - par->fbtftops.mkdirty(info, -1, 0); > + __u32 width = info->var.xres; > + __u32 start_row = off / width; > + __u32 end_row = (off + len - 1) / width; > + > + par->fbtftops.mkdirty(info, start_row, end_row);
This doesn't look right: mkdirty() takes start row and number of rows, not start row and end row. Don't be fooled by how mkdirty() is declared, look at how it is implemented. Nam
