Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f766396d authored by Daniel Leung's avatar Daniel Leung Committed by Yong Yao
Browse files

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: default avatarDaniel Leung <daniel.leung@intel.com>
Reviewed-by: default avatarJovanovic, Radivoje <radivoje.jovanovic@intel.com>
Reviewed-by: default avatarParkinson, TimothyX L <timothyx.l.parkinson@intel.com>
Tested-by: default avatarParkinson, TimothyX L <timothyx.l.parkinson@intel.com>
Reviewed-by: default avatarBoie, Andrew P <andrew.p.boie@intel.com>
Reviewed-by: default avatarGumbel, Matthew K <matthew.k.gumbel@intel.com>
parent 74b90b30
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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;
}