lkml.org 
[lkml]   [2017]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.2 001/126] fbdev/efifb: Fix 16 color palette entry calculation
    3.2.85-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Max Staudt <mstaudt@suse.de>

    commit d50b3f43db739f03fcf8c0a00664b3d2fed0496e upstream.

    When using efifb with a 16-bit (5:6:5) visual, fbcon's text is rendered
    in the wrong colors - e.g. text gray (#aaaaaa) is rendered as green
    (#50bc50) and neighboring pixels have slightly different values
    (such as #50bc78).

    The reason is that fbcon loads its 16 color palette through
    efifb_setcolreg(), which in turn calculates a 32-bit value to write
    into memory for each palette index.
    Until now, this code could only handle 8-bit visuals and didn't mask
    overlapping values when ORing them.

    With this patch, fbcon displays the correct colors when a qemu VM is
    booted in 16-bit mode (in GRUB: "set gfxpayload=800x600x16").

    Fixes: 7c83172b98e5 ("x86_64 EFI boot support: EFI frame buffer driver") # v2.6.24+
    Signed-off-by: Max Staudt <mstaudt@suse.de>
    Acked-By: Peter Jones <pjones@redhat.com>
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    drivers/video/efifb.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    --- a/drivers/video/efifb.c
    +++ b/drivers/video/efifb.c
    @@ -268,9 +268,9 @@ static int efifb_setcolreg(unsigned regn
    return 1;

    if (regno < 16) {
    - red >>= 8;
    - green >>= 8;
    - blue >>= 8;
    + red >>= 16 - info->var.red.length;
    + green >>= 16 - info->var.green.length;
    + blue >>= 16 - info->var.blue.length;
    ((u32 *)(info->pseudo_palette))[regno] =
    (red << info->var.red.offset) |
    (green << info->var.green.offset) |
    \
     
     \ /
      Last update: 2017-02-16 00:10    [W:4.062 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site