VNC: BPP as presented to application must match configuration; we will need to do conversions as necesasry for the BPP of the remote framebuffer
This commit is contained in:
parent
f154d7ea1b
commit
9bdc08e013
@ -159,9 +159,12 @@ static int up_getvideoinfo(FAR struct fb_vtable_s *vtable,
|
||||
return -ENOTCONN;
|
||||
}
|
||||
|
||||
/* Return the requested video info */
|
||||
/* Return the requested video info. We are committed to using the
|
||||
* configured color format in the framebuffer, but performing color
|
||||
* conversions on the fly for the remote framebuffer as necessary.
|
||||
*/
|
||||
|
||||
vinfo->fmt = session->colorfmt;
|
||||
vinfo->fmt = RFB_COLORFMT;
|
||||
vinfo->xres = session->screen.w;
|
||||
vinfo->yres = session->screen.h;
|
||||
vinfo->nplanes = 1;
|
||||
@ -197,10 +200,15 @@ static int up_getplaneinfo(FAR struct fb_vtable_s *vtable, int planeno,
|
||||
|
||||
DEBUGASSERT(session->fb != NULL);
|
||||
|
||||
pinfo->fbmem = (FAR void *)&session->fb;
|
||||
/* Return the requested plane info. We are committed to using the
|
||||
* configured bits-per-pixels in the framebuffer, but performing color
|
||||
* conversions on the fly for the remote framebuffer as necessary.
|
||||
*/
|
||||
|
||||
pinfo->fbmem = (FAR void *)session->fb;
|
||||
pinfo->fblen = (uint32_t)session->stride * CONFIG_VNCSERVER_SCREENWIDTH;
|
||||
pinfo->stride = (fb_coord_t)session->stride;
|
||||
pinfo->bpp = session->bpp;
|
||||
pinfo->bpp = RFB_BITSPERPIXEL;
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
@ -275,14 +275,16 @@ int vnc_negotiate(FAR struct vnc_session_s *session)
|
||||
session->screen.w = CONFIG_VNCSERVER_SCREENWIDTH;
|
||||
session->screen.h = CONFIG_VNCSERVER_SCREENHEIGHT;
|
||||
|
||||
/* Now allocate the framebuffer memory */
|
||||
/* Now allocate the framebuffer memory. We rely on the fact that
|
||||
* the KMM allocator will align memory to 32-bits or better.
|
||||
*/
|
||||
|
||||
len = (session->bpp + 7) >> 3;
|
||||
session->stride = len * CONFIG_VNCSERVER_SCREENWIDTH;
|
||||
alloc = (size_t)session->stride * CONFIG_VNCSERVER_SCREENHEIGHT;
|
||||
|
||||
session->fb = (FAR uint8_t *)kmm_zalloc(alloc);
|
||||
if (session->fb)
|
||||
if (session->fb == NULL)
|
||||
{
|
||||
gdbg("ERROR: Failed to allocate framebuffer memory: %lu\n",
|
||||
(unsigned long)alloc);
|
||||
|
@ -68,6 +68,7 @@
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_VNCSERVER_COLORFMT_RGB16)
|
||||
# define RFB_COLORFMT FB_FMT_RGB16_565
|
||||
# define RFB_BITSPERPIXEL 16
|
||||
# define RFB_PIXELDEPTH 16
|
||||
# define RFB_TRUECOLOR 1
|
||||
@ -78,6 +79,7 @@
|
||||
# define RFB_GSHIFT 5
|
||||
# define RFB_BSHIFT 0
|
||||
#elif defined(CONFIG_VNCSERVER_COLORFMT_RGB32)
|
||||
# define RFB_COLORFMT FB_FMT_RGB32
|
||||
# define RFB_BITSPERPIXEL 32
|
||||
# define RFB_PIXELDEPTH 24
|
||||
# define RFB_TRUECOLOR 1
|
||||
|
Loading…
Reference in New Issue
Block a user