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:
parent
5e3ac6bc71
commit
5641642a20
2 changed files with 16 additions and 1 deletions
|
@ -29,5 +29,8 @@ LOCAL_SRC_FILES := \
|
|||
|
||||
LOCAL_MODULE := gralloc.default
|
||||
LOCAL_CFLAGS:= -DLOG_TAG=\"gralloc\" -Wno-missing-field-initializers
|
||||
ifeq ($(TARGET_USE_PAN_DISPLAY),true)
|
||||
LOCAL_CFLAGS += -DUSE_PAN_DISPLAY=1
|
||||
endif
|
||||
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue