Support BGRA framebuffer

The re-designed recovery graphics code only supports RGB{_,X,A}
framebuffer, and this patch adds support for BGRA framebuffer.

Change-Id: I3780c8288088f497fa248f3492c54f43834a8598
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
Reviewed-by: Jovanovic, Radivoje <radivoje.jovanovic@intel.com>
Reviewed-by: Parkinson, TimothyX L <timothyx.l.parkinson@intel.com>
Tested-by: Parkinson, TimothyX L <timothyx.l.parkinson@intel.com>
Reviewed-by: Boie, Andrew P <andrew.p.boie@intel.com>
Reviewed-by: Gumbel, Matthew K <matthew.k.gumbel@intel.com>
This commit is contained in:
Daniel Leung
2014-03-19 13:41:31 -07:00
committed by Yong Yao
parent 74b90b309f
commit f766396d99

View File

@@ -184,8 +184,21 @@ static gr_surface fbdev_flip(minui_backend* backend __unused) {
set_displayed_framebuffer(1-displayed_buffer);
} else {
// Copy from the in-memory surface to the framebuffer.
#if defined(RECOVERY_BGRA)
unsigned int idx;
unsigned char* ucfb_vaddr = (unsigned char*)gr_framebuffer[0].data;
unsigned char* ucbuffer_vaddr = (unsigned char*)gr_draw->data;
for (idx = 0 ; idx < (gr_draw->height * gr_draw->row_bytes); idx += 4) {
ucfb_vaddr[idx ] = ucbuffer_vaddr[idx + 2];
ucfb_vaddr[idx + 1] = ucbuffer_vaddr[idx + 1];
ucfb_vaddr[idx + 2] = ucbuffer_vaddr[idx ];
ucfb_vaddr[idx + 3] = ucbuffer_vaddr[idx + 3];
}
#else
memcpy(gr_framebuffer[0].data, gr_draw->data,
gr_draw->height * gr_draw->row_bytes);
#endif
}
return gr_draw;
}