feat: driver: support double buffer for display

add pan display for fb driver.

reference links:
https://github.com/torvalds/linux/blob/master/drivers/video/fbdev/core/fbmem.c
https://github.com/torvalds/linux/blob/master/drivers/video/fbdev/goldfishfb.c

Signed-off-by: liushuai25 <liushuai25@xiaomi.com>

Update include/nuttx/video/fb.h

Co-authored-by: Gustavo Henrique Nihei <38959758+gustavonihei@users.noreply.github.com>

Update include/nuttx/video/fb.h

Co-authored-by: Gustavo Henrique Nihei <38959758+gustavonihei@users.noreply.github.com>
This commit is contained in:
liushuai25
2021-09-30 13:47:00 +08:00
committed by Gustavo Henrique Nihei
parent cf6dcbc6fd
commit 6c374fc06c
2 changed files with 29 additions and 5 deletions
+18 -5
View File
@@ -283,6 +283,10 @@
#define FBIOGET_FRAMERATE _FBIOC(0x0015) /* Get frame rate
* Argument: int* */
#define FBIOPAN_DISPLAY _FBIOC(0x0016) /* Pan display
* Argument: read-only struct
* fb_planeinfo_s* */
/****************************************************************************
* Public Types
****************************************************************************/
@@ -315,11 +319,15 @@ struct fb_videoinfo_s
struct fb_planeinfo_s
{
FAR void *fbmem; /* Start of frame buffer memory */
size_t fblen; /* Length of frame buffer memory in bytes */
fb_coord_t stride; /* Length of a line in bytes */
uint8_t display; /* Display number */
uint8_t bpp; /* Bits per pixel */
FAR void *fbmem; /* Start of frame buffer memory */
size_t fblen; /* Length of frame buffer memory in bytes */
fb_coord_t stride; /* Length of a line in bytes */
uint8_t display; /* Display number */
uint8_t bpp; /* Bits per pixel */
uint32_t xres_virtual; /* Virtual Horizontal resolution in pixel columns */
uint32_t yres_virtual; /* Virtual Vertical resolution in pixel rows */
uint32_t xoffset; /* Offset from virtual to visible resolution */
uint32_t yoffset; /* Offset from virtual to visible resolution */
};
/* This structure describes an area. */
@@ -584,6 +592,11 @@ struct fb_vtable_s
# endif
#endif
/* Pan display for multiple buffers. */
int (*pandisplay)(FAR struct fb_vtable_s *vtable,
FAR struct fb_planeinfo_s *pinfo);
/* Specific Controls ******************************************************/
/* Set the frequency of the framebuffer update panel (0: disable refresh) */