ARM HDLCD: Add developer option to remove double-height framebuffers

This option can be used with Android to push the graphics subsystem into a
different composition strategy which is more effective when used on hardware
where the framebuffer memory is not cacheable.

Signed-off-by: Chris Redpath <chris.redpath@arm.com>
This commit is contained in:
Chris Redpath
2012-07-12 12:33:13 +01:00
committed by Jon Medhurst
parent 5705f5f9c6
commit 9f14266f6f
2 changed files with 12 additions and 0 deletions

View File

@@ -205,7 +205,11 @@ static int hdlcd_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
struct hdlcd_device *hdlcd = to_hdlcd_device(info);
int bytes_per_pixel = var->bits_per_pixel / 8;
#ifdef HDLCD_NO_VIRTUAL_SCREEN
var->yres_virtual = var->yres;
#else
var->yres_virtual = 2 * var->yres;
#endif
if ((var->xres_virtual * bytes_per_pixel * var->yres_virtual) > hdlcd->fb.fix.smem_len)
return -ENOMEM;
@@ -570,7 +574,11 @@ static int hdlcd_setup(struct hdlcd_device *hdlcd)
hdlcd->fb.var.yres, hdlcd->fb.var.bits_per_pixel,
hdlcd->fb.mode ? hdlcd->fb.mode->refresh : 60);
hdlcd->fb.var.xres_virtual = hdlcd->fb.var.xres;
#ifdef HDLCD_NO_VIRTUAL_SCREEN
hdlcd->fb.var.yres_virtual = hdlcd->fb.var.yres;
#else
hdlcd->fb.var.yres_virtual = hdlcd->fb.var.yres * 2;
#endif
/* initialise and set the palette */
if (fb_alloc_cmap(&hdlcd->fb.cmap, NR_PALETTE, 0)) {

View File

@@ -102,6 +102,10 @@
* and /proc/hdlcd_underrun to read the counter
*/
//#define HDLCD_COUNT_BUFFERUNDERRUNS
/* Restrict height to 1x screen size
*
*/
//#define HDLCD_NO_VIRTUAL_SCREEN
struct hdlcd_device {
struct fb_info fb;