gralloc: let target configure page flipping ioctl
Let vendor choose which framebuffer ioctl (FBIOPUT_VSCREENINFO or FBIOPAN_DISPLAY) is best suited to do page-flip on its target platform. Neither API is well documented about their usage and most of the time it really depends on the respective framebuffer driver implementation. * Default ioctl to do page-flip is FBIOPUT_VSCREENINFO. * Set "TARGET_USE_PAN_DISPLAY=true" in board config file to use FBIOPAN_DISPLAY. Change-Id: Ic3a50bd0f5fe37ac0149e11649c4abdadea85529 Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
This commit is contained in:
committed by
Amit Pundir
parent
5e3ac6bc71
commit
5641642a20
@@ -42,6 +42,13 @@
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
// Set TARGET_USE_PAN_DISPLAY to true at compile time if the
|
||||
// board uses FBIOPAN_DISPLAY to setup page flipping, otherwise
|
||||
// default ioctl to do page-flipping is FBIOPUT_VSCREENINFO.
|
||||
#ifndef USE_PAN_DISPLAY
|
||||
#define USE_PAN_DISPLAY 0
|
||||
#endif
|
||||
|
||||
// numbers of buffers for page flipping
|
||||
#define NUM_BUFFERS 2
|
||||
|
||||
@@ -178,10 +185,15 @@ int mapFrameBufferLocked(struct private_module_t* module)
|
||||
|
||||
|
||||
uint32_t flags = PAGE_FLIP;
|
||||
#if USE_PAN_DISPLAY
|
||||
if (ioctl(fd, FBIOPAN_DISPLAY, &info) == -1) {
|
||||
ALOGW("FBIOPAN_DISPLAY failed, page flipping not supported");
|
||||
#else
|
||||
if (ioctl(fd, FBIOPUT_VSCREENINFO, &info) == -1) {
|
||||
ALOGW("FBIOPUT_VSCREENINFO failed, page flipping not supported");
|
||||
#endif
|
||||
info.yres_virtual = info.yres;
|
||||
flags &= ~PAGE_FLIP;
|
||||
ALOGW("FBIOPUT_VSCREENINFO failed, page flipping not supported");
|
||||
}
|
||||
|
||||
if (info.yres_virtual < info.yres * 2) {
|
||||
|
||||
Reference in New Issue
Block a user