diff options
Diffstat (limited to '0007-efifb-BGRT-Do-not-copy-the-boot-graphics-for-non-nat.patch')
-rw-r--r-- | 0007-efifb-BGRT-Do-not-copy-the-boot-graphics-for-non-nat.patch | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/0007-efifb-BGRT-Do-not-copy-the-boot-graphics-for-non-nat.patch b/0007-efifb-BGRT-Do-not-copy-the-boot-graphics-for-non-nat.patch deleted file mode 100644 index 4b84688e1..000000000 --- a/0007-efifb-BGRT-Do-not-copy-the-boot-graphics-for-non-nat.patch +++ /dev/null @@ -1,85 +0,0 @@ -From c4220b3f747ae6dd28171137d85fba0eab64e36d Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Tue, 24 Jul 2018 19:11:28 +0200 -Subject: [PATCH 7/7] efifb: BGRT: Do not copy the boot graphics for non native - resolutions - -On x86 some firmwares use a low non native resolution for the display when -they have shown some text messages. While keeping the bgrt filled with info -for the native resolution. If the bgrt image intended for the native -resolution still fits, it will be displayed very close to the right edge of -the display looking quite bad. - -This commits adds a (heuristics based) checks for this and makes efifb -not show the boot graphics when this is the case. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> -Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> ---- - drivers/video/fbdev/efifb.c | 43 +++++++++++++++++++++++++++++++++++++ - 1 file changed, 43 insertions(+) - -diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c -index fa01eecc0a55..52bf39f93888 100644 ---- a/drivers/video/fbdev/efifb.c -+++ b/drivers/video/fbdev/efifb.c -@@ -111,6 +111,46 @@ static void efifb_copy_bmp(u8 *src, u32 *dst, int width, struct screen_info *si) - } - } - -+#ifdef CONFIG_X86 -+/* -+ * On x86 some firmwares use a low non native resolution for the display when -+ * they have shown some text messages. While keeping the bgrt filled with info -+ * for the native resolution. If the bgrt image intended for the native -+ * resolution still fits, it will be displayed very close to the right edge of -+ * the display looking quite bad. This function checks for this. -+ */ -+static bool efifb_bgrt_sanity_check(struct screen_info *si, u32 bmp_width) -+{ -+ static const int default_resolutions[][2] = { -+ { 800, 600 }, -+ { 1024, 768 }, -+ { 1280, 1024 }, -+ }; -+ u32 i, right_margin; -+ -+ for (i = 0; i < ARRAY_SIZE(default_resolutions); i++) { -+ if (default_resolutions[i][0] == si->lfb_width && -+ default_resolutions[i][1] == si->lfb_height) -+ break; -+ } -+ /* If not a default resolution used for textmode, this should be fine */ -+ if (i >= ARRAY_SIZE(default_resolutions)) -+ return true; -+ -+ /* If the right margin is 5 times smaller then the left one, reject */ -+ right_margin = si->lfb_width - (bgrt_tab.image_offset_x + bmp_width); -+ if (right_margin < (bgrt_tab.image_offset_x / 5)) -+ return false; -+ -+ return true; -+} -+#else -+static bool efifb_bgrt_sanity_check(struct screen_info *si, u32 bmp_width) -+{ -+ return true; -+} -+#endif -+ - static void efifb_show_boot_graphics(struct fb_info *info) - { - u32 bmp_width, bmp_height, bmp_pitch, screen_pitch, dst_x, y, src_y; -@@ -169,6 +209,9 @@ static void efifb_show_boot_graphics(struct fb_info *info) - (bgrt_tab.image_offset_y + bmp_height) > si->lfb_height) - goto error; - -+ if (!efifb_bgrt_sanity_check(si, bmp_width)) -+ goto error; -+ - pr_info("efifb: showing boot graphics\n"); - - for (y = 0; y < si->lfb_height; y++, dst += si->lfb_linelength) { --- -2.18.0 - |