1From 84195804a1631c88c1356438d22f4a51681d8c55 Mon Sep 17 00:00:00 2001 2From: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> 3Date: Mon, 17 Jun 2024 10:30:07 +0200 4Subject: [PATCH] BootLogoLib: align logo coords to be even 5 6If we draw logo at odd coords then BootLogoLib goes into exception and 7boot process ends: 8 9Synchronous Exception at 0x00000101FB943E48 10PC 0x0101FB943E48 (0x0101FB93F000+0x00004E48) [ 0] QemuVideoDxe.dll 11PC 0x0101FB943314 (0x0101FB93F000+0x00004314) [ 0] QemuVideoDxe.dll 12PC 0x0101FB92F798 (0x0101FB92D000+0x00002798) [ 1] ConSplitterDxe.dll 13PC 0x0101FBA96BC4 (0x0101FBA8E000+0x00008BC4) [ 2] BdsDxe.dll 14PC 0x0101FF7FDF50 (0x0101FF7F3000+0x0000AF50) [ 3] DxeCore.dll 15 16This change resizes logo from 193x58 to 194x58px to make it's sizes 17even. And if coords are odd then they are bumped a bit to make things 18work. 19 20Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> 21 22This is a temporary workaround for an alignment problem in EDK2/qemu, see the 23discussion at https://mail.gnu.org/archive/html/qemu-devel/2024-06/msg02964.html. 24 25Upstream-Status: Inappropriate [workaround] 26Signed-off-by: Ross Burton <ross.burton@arm.com> 27--- 28 .../Library/BootLogoLib/BootLogoLib.c | 4 ++++ 29 MdeModulePkg/Logo/Logo.bmp | Bin 12446 -> 34010 bytes 30 2 files changed, 4 insertions(+) 31 32diff --git a/MdeModulePkg/Library/BootLogoLib/BootLogoLib.c b/MdeModulePkg/Library/BootLogoLib/BootLogoLib.c 33index 478ec2d40e..3b7b5f3146 100644 34--- a/MdeModulePkg/Library/BootLogoLib/BootLogoLib.c 35+++ b/MdeModulePkg/Library/BootLogoLib/BootLogoLib.c 36@@ -205,6 +205,10 @@ BootLogoEnableLogo ( 37 DestX += OffsetX; 38 DestY += OffsetY; 39 40+ // align logo to even coords 41+ if (DestX % 2 != 0) DestX++; 42+ if (DestY % 2 != 0) DestY++; 43+ 44 if ((DestX >= 0) && (DestY >= 0)) { 45 if (GraphicsOutput != NULL) { 46 Status = GraphicsOutput->Blt ( 47diff --git a/MdeModulePkg/Logo/Logo.bmp b/MdeModulePkg/Logo/Logo.bmp 48index 3e85229e17595ba1f9c59e13692a4f8362ebc850..136345a56ac44e3ea8d3c91114b5a2676dc90e2a 100644 49GIT binary patch 50literal 34010 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𝔓x8y<2_E;dj 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 237 238literal 12446 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 299 300-- 3012.34.1 302 303