[edk2-devel] [PATCH v1 3/3] LogoFeaturePkg, BoardModulePkg: Set existing logo as BGRT
Benjamin Doron
benjamin.doron00 at gmail.com
Mon Jul 25 17:12:07 UTC 2022
In MinPlatform, FSP-S displays the logo to the user early. However, this
means that no BGRT is written either. To reduce duplication in the flash
image, a new LogoDxe will set this BMP as the BGRT buffer. The previous
LogoDxe drivers here, along with a BootLogoEnableLogo() patch to BDS
libraries, would begin displaying the Intel logo over the board FDF's
choice - presently, these are the TianoCore logo.
Also begin using BootLogoUpdateProgress().
Tested on KabylakeOpenBoardPkg, the boot logo becomes also a BGRT logo.
A follow-up patch can be considered to set all platforms to use Intel's
logo.
Cc: Sai Chaganty <rangasai.v.chaganty at intel.com>
Cc: Isaac Oram <isaac.w.oram at intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone at intel.com>
Cc: Ankit Sinha <ankit.sinha at intel.com>
Cc: Eric Dong <eric.dong at intel.com>
Cc: Dandan Bi <dandan.bi at intel.com>
Cc: Liming Gao <gaoliming at byosoft.com.cn>
Signed-off-by: Benjamin Doron <benjamin.doron00 at gmail.com>
---
Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeaturesPcd.dsc | 8 -
Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc | 6 +-
Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf | 6 +-
Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf | 10 --
Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf | 52 ------
Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c | 183 +++++++-------------
Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf | 10 --
Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg | Bin 9741 -> 0 bytes
Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf | 24 ++-
Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec | 2 +-
Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc | 3 -
Platform/Intel/BoardModulePkg/Library/BoardBdsHookLib/BoardBdsHookLib.c | 3 +-
Platform/Intel/BoardModulePkg/Library/BoardBdsHookLib/BoardBdsHookLib.inf | 1 +
Platform/Intel/BoardModulePkg/Library/BoardBootManagerLib/BoardBootManager.c | 31 ++++
Platform/Intel/BoardModulePkg/Library/BoardBootManagerLib/BoardBootManagerLib.inf | 5 +
Platform/Intel/MinPlatformPkg/Include/Dsc/CoreCommonLib.dsc | 1 +
16 files changed, 120 insertions(+), 225 deletions(-)
diff --git a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeaturesPcd.dsc b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeaturesPcd.dsc
index 5365f0a1b844..da663f5c833f 100644
--- a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeaturesPcd.dsc
+++ b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeaturesPcd.dsc
@@ -77,11 +77,3 @@
gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable |FALSE
gUserAuthFeaturePkgTokenSpaceGuid.PcdUseVersion1 |FALSE
gVirtualKeyboardFeaturePkgTokenSpaceGuid.PcdVirtualKeyboardFeatureEnable |FALSE
-
-#
-# There seems to be some build parsing odd behavior that requires this PCD to be specified even though
-# the *.fdf that consumes it is dependent on the feature flag.
-# This section is to ensure that boards have these PCD instantiated.
-#
-[PcdsFeatureFlag]
- gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable |FALSE
diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc b/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc
index 0acce1c7dfaf..3e990a84f8ec 100644
--- a/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc
+++ b/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc
@@ -47,8 +47,4 @@
# @todo: Change below line to [Components.$(DXE_ARCH)] after https://bugzilla.tianocore.org/show_bug.cgi?id=2308
# is completed.
[Components.X64]
- !if gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable == TRUE
- LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf
- !else
- LogoFeaturePkg/LogoDxe/LogoDxe.inf
- !endif
+ LogoFeaturePkg/LogoDxe/LogoDxe.inf
diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf
index fead9f3b0298..f8e368434f72 100644
--- a/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf
+++ b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf
@@ -6,8 +6,4 @@
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
-!if gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable == TRUE
- INF LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf
-!else
- INF LogoFeaturePkg/LogoDxe/LogoDxe.inf
-!endif
+INF LogoFeaturePkg/LogoDxe/LogoDxe.inf
diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf
deleted file mode 100644
index a39500e043e3..000000000000
--- a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf
+++ /dev/null
@@ -1,10 +0,0 @@
-// /** @file
-// Platform Logo image definition file.
-//
-// Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
-//
-// SPDX-License-Identifier: BSD-2-Clause-Patent
-//
-// **/
-
-#image IMG_LOGO Logo.jpg
diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf
deleted file mode 100644
index 47f1672a4c07..000000000000
--- a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf
+++ /dev/null
@@ -1,52 +0,0 @@
-## @file
-# The default logo JPEG picture shown on setup screen.
-#
-# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-#
-##
-
-[Defines]
- INF_VERSION = 0x00010005
- BASE_NAME = JpegLogoDxe
- FILE_GUID = 319CFE1D-8F15-4A7A-BF40-EECA953D87EF
- MODULE_TYPE = DXE_DRIVER
- VERSION_STRING = 1.0
-
- ENTRY_POINT = InitializeLogo
-#
-# This flag specifies whether HII resource section is generated into PE image.
-#
- UEFI_HII_RESOURCE_SECTION = TRUE
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-# VALID_ARCHITECTURES = IA32 X64
-#
-
-[Sources]
- Logo.jpg
- Logo.c
- JpegLogo.idf
-
-[Packages]
- MdePkg/MdePkg.dec
- MdeModulePkg/MdeModulePkg.dec
-
-[LibraryClasses]
- UefiBootServicesTableLib
- UefiDriverEntryPoint
- DebugLib
-
-[Protocols]
- gEfiHiiDatabaseProtocolGuid ## CONSUMES
- gEfiHiiImageExProtocolGuid ## CONSUMES
- gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES
- gEdkiiPlatformLogoProtocolGuid ## PRODUCES
-
-[Depex]
- gEfiHiiDatabaseProtocolGuid AND
- gEfiHiiImageExProtocolGuid
diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c
index a636b086caf6..29b913c5bda5 100644
--- a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c
+++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c
@@ -6,88 +6,26 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include <Uefi.h>
-#include <Protocol/HiiDatabase.h>
-#include <Protocol/GraphicsOutput.h>
-#include <Protocol/HiiImageEx.h>
-#include <Protocol/PlatformLogo.h>
-#include <Protocol/HiiPackageList.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/DebugLib.h>
-
-typedef struct {
- EFI_IMAGE_ID ImageId;
- EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE Attribute;
- INTN OffsetX;
- INTN OffsetY;
-} LOGO_ENTRY;
-
-EFI_HII_IMAGE_EX_PROTOCOL *mHiiImageEx;
-EFI_HII_HANDLE mHiiHandle;
-LOGO_ENTRY mLogos[] = {
- {
- IMAGE_TOKEN (IMG_LOGO),
- EdkiiPlatformLogoDisplayAttributeCenter,
- 0,
- 0
- }
-};
-
-/**
- Load a platform logo image and return its data and attributes.
-
- @param This The pointer to this protocol instance.
- @param Instance The visible image instance is found.
- @param Image Points to the image.
- @param Attribute The display attributes of the image returned.
- @param OffsetX The X offset of the image regarding the Attribute.
- @param OffsetY The Y offset of the image regarding the Attribute.
-
- @retval EFI_SUCCESS The image was fetched successfully.
- @retval EFI_NOT_FOUND The specified image could not be found.
-**/
-EFI_STATUS
-EFIAPI
-GetImage (
- IN EDKII_PLATFORM_LOGO_PROTOCOL *This,
- IN OUT UINT32 *Instance,
- OUT EFI_IMAGE_INPUT *Image,
- OUT EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE *Attribute,
- OUT INTN *OffsetX,
- OUT INTN *OffsetY
- )
-{
- UINT32 Current;
- if (Instance == NULL || Image == NULL ||
- Attribute == NULL || OffsetX == NULL || OffsetY == NULL) {
- return EFI_INVALID_PARAMETER;
- }
-
- Current = *Instance;
- if (Current >= ARRAY_SIZE (mLogos)) {
- return EFI_NOT_FOUND;
- }
-
- (*Instance)++;
- *Attribute = mLogos[Current].Attribute;
- *OffsetX = mLogos[Current].OffsetX;
- *OffsetY = mLogos[Current].OffsetY;
- return mHiiImageEx->GetImageEx (mHiiImageEx, mHiiHandle, mLogos[Current].ImageId, Image);
-}
-
-EDKII_PLATFORM_LOGO_PROTOCOL mPlatformLogo = {
- GetImage
-};
+#include <Library/BmpSupportLib.h>
+#include <Library/DxeServicesLib.h>
+#include <Library/MemoryAllocationLib.h>
+#include <Protocol/BootLogo2.h>
+#include <Protocol/GraphicsOutput.h>
/**
Entrypoint of this module.
- This function is the entrypoint of this module. It installs the Edkii
- Platform Logo protocol.
+ This function is the entrypoint of this module. It prepares the BGRT
+ blit-buffer.
@param ImageHandle The firmware allocated handle for the EFI image.
@param SystemTable A pointer to the EFI System Table.
@retval EFI_SUCCESS The entry point is executed successfully.
+ @retval EFI_UNSUPPORTED A dependency is unavailable.
+ @retval EFI_NOT_FOUND Failed to find the logo.
**/
EFI_STATUS
@@ -97,57 +35,70 @@ InitializeLogo (
IN EFI_SYSTEM_TABLE *SystemTable
)
{
- EFI_STATUS Status;
- EFI_HII_PACKAGE_LIST_HEADER *PackageList;
- EFI_HII_DATABASE_PROTOCOL *HiiDatabase;
- EFI_HANDLE Handle;
-
- Status = gBS->LocateProtocol (
- &gEfiHiiDatabaseProtocolGuid,
- NULL,
- (VOID **) &HiiDatabase
- );
- ASSERT_EFI_ERROR (Status);
-
- Status = gBS->LocateProtocol (
- &gEfiHiiImageExProtocolGuid,
- NULL,
- (VOID **) &mHiiImageEx
- );
- ASSERT_EFI_ERROR (Status);
+ EFI_STATUS Status;
+ EDKII_BOOT_LOGO2_PROTOCOL *BootLogo2;
+ EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;
+ UINT32 SizeOfX;
+ UINT32 SizeOfY;
+ VOID *BmpAddress;
+ UINTN BmpSize;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Blt;
+ UINTN BltSize;
+ UINTN Height;
+ UINTN Width;
+ INTN DestX;
+ INTN DestY;
//
- // Retrieve HII package list from ImageHandle
+ // MinPlatform has the FSP draw the logo.
+ // Build a blit-buffer for a bitmap here and set it for a BGRT.
//
- Status = gBS->OpenProtocol (
- ImageHandle,
- &gEfiHiiPackageListProtocolGuid,
- (VOID **) &PackageList,
- ImageHandle,
- NULL,
- EFI_OPEN_PROTOCOL_GET_PROTOCOL
- );
+ Status = gBS->LocateProtocol (&gEdkiiBootLogo2ProtocolGuid, NULL, (VOID **)&BootLogo2);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "HII Image Package with logo not found in PE/COFF resource section\n"));
- return Status;
+ return EFI_UNSUPPORTED;
}
- //
- // Publish HII package list to HII Database.
- //
- Status = HiiDatabase->NewPackageList (
- HiiDatabase,
- PackageList,
- NULL,
- &mHiiHandle
- );
- if (!EFI_ERROR (Status)) {
- Handle = NULL;
- Status = gBS->InstallMultipleProtocolInterfaces (
- &Handle,
- &gEdkiiPlatformLogoProtocolGuid, &mPlatformLogo,
- NULL
- );
+ // Determine BGRT display offsets
+ Status = gBS->HandleProtocol (gST->ConsoleOutHandle, &gEfiGraphicsOutputProtocolGuid, (VOID **)&GraphicsOutput);
+ if (EFI_ERROR (Status)) {
+ return EFI_UNSUPPORTED;
}
+
+ SizeOfX = GraphicsOutput->Mode->Info->HorizontalResolution;
+ SizeOfY = GraphicsOutput->Mode->Info->VerticalResolution;
+
+ Status = GetSectionFromAnyFv (
+ &gTianoLogoGuid,
+ EFI_SECTION_RAW,
+ 0,
+ &BmpAddress,
+ &BmpSize
+ );
+ if (EFI_ERROR (Status)) {
+ return EFI_NOT_FOUND;
+ }
+
+ // Allocates pool for blit-buffer
+ Status = TranslateBmpToGopBlt (
+ BmpAddress,
+ BmpSize,
+ &Blt,
+ &BltSize,
+ &Height,
+ &Width
+ );
+ ASSERT_EFI_ERROR (Status);
+
+ // EdkiiPlatformLogoDisplayAttributeCenter
+ DestX = (SizeOfX - Width) / 2;
+ DestY = (SizeOfY - Height) / 2;
+
+ Status = BootLogo2->SetBootLogo (BootLogo2, Blt, DestX, DestY, Width, Height);
+
+ // SetBootLogo() allocates a copy pool, so free this.
+ if (Blt != NULL) {
+ FreePool (Blt);
+ }
+
return Status;
}
diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf
deleted file mode 100644
index fd9c4898156d..000000000000
--- a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf
+++ /dev/null
@@ -1,10 +0,0 @@
-// /** @file
-// Platform Logo image definition file.
-//
-// Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
-//
-// SPDX-License-Identifier: BSD-2-Clause-Patent
-//
-// **/
-
-#image IMG_LOGO Logo.bmp
diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg
deleted file mode 100644
index 32de8a5532c9a75ab23ffc9c59a8e8c3e4ea4a27..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 9741
zcmbVy3p`X?-~Sqeaj7QB{W6MD9hakokWEf5IU3!lB&Qs=BwZ+F%oZmpF<nWW8l_UH
z<d&kE<W3I7Au2OSk=qO!o0-}BzedmVzUO)V=bZO>-|^Xd#@KtWwSKqn_xD|hw*(K&
zUgP5K0!Snh_zC_1q6>tqjt&h1z|#{f0RSifS&}x8gP%z7a3JaY*Jl^fB0!%0UIzZr
z0>Cp+fyY{Sz%LHX0D#>0&-cAMLia?P?Fo!Duryn0X0Z&8^bR-!88|SBBt6SWU$SKB
zSx#1#EGsW3FF$=y6cywtiWGTy1!V<ACFu)(nxU*TL;8#KA>VG5kt37klqm9)=}Z1s
zC*lQAQ2^1T at 5v+;AfrMetB{BaK!a<Lo1UI@;nOdY3|UrAo&u+#3@<2}4W~~g!%54*
z8N;h%;opI*irk!e7Ebc2>vmA)@0+{y=$UH at hO6?*)YiY|8!g+pKVDHuT|-k#d%;5E
zMT?hMF1NC_Sz+t^!)g~-H}^FgHg59v*}P?Iz|Vm}!6Bi$4n#&BJQRKSNWw425|1aH
zIC=Km`3q_37c(wh&$@B*R`%^Xck>Ghiyjp}ep2$XyrQzIx~8`7O>@idt!;1HJG#1i
zKK6e4+}Hm_FgiB=RXBl7PD$5A0_1PYg6BV77c>G%M(P8KbX_EwL+~K0$jZ&Lke}nU
zj<RE)>infg73Quwb1kn-(Qw&%zS_?Hua(q|EV~v6q)VG#*?+dM`2W+&{%c|Xy{-;0
zgG_?XBdY)eV6H+n0>ry9f1?$S4BqdGNOf2#$W0mi8h&7iyQ}#1*Y9kGnrojwF7``a
zkn^zaha0^tqaHF~_Lg;OeYAHjKfi2-=bF0*K9!uxOfOxrdW(&9zR&MpQ2ppT<MBNX
zl%7{X?s4T^y=zzny$6oD8aJ*{J+v=J?dc`&lW*QVqx%xzxH7YbHoguwA^@+4PJoZv
zQxRB#y*UAp9F*rpfZpKGT*30r`Dl}w1_8i*0 at Rn|x~3un^tCH?jsOWM2mwxq5FlyU
zO9G5d72|SL+?)1qw=~u+!Gn<|$4r?xC9nwm at omsSiP?zK&``SCwrCAuB&OFxr41as
z6yyIP1XtuYwB|(3yj$YZ{M0+I^qy1i36C>{mPv~Bz;UHBu4hL8IZp!I2*sOdSkTu-
ze03)IPrs#71;M|FH}TBXc5Rmvv?WH()bM>BrFd_73eCG9CM-w!_O at yh)zt>nxwpU6
z)x21mf7;RDBxwBOME`r*)V at -D=3Ge<XD0zVHsFfIJrR1$*JwTsS^!R+t-Jg?Wxs%`
zPEvD`@9l6O*Vi{T&+)zO*J?0YS4Qg4b~Ok*VL-dX<@a;31?dt)x)3Emx%D*yjG6-4
zpMHzZjs#vLN7^GU-;F)#$|~oIlF|N-QO<p_1p&^|6bY~o86RvMqxH`ufN{by0z5{h
zSZ-5mo{x*SEh0}A=kf|9ng4EkxFl-Z2(~mEUw^r0L}V at TAprf79zf|Wz>6ZFK<mOK
zp1*~^;R^TaFC{>8Z!cgFz)=p&mCom1-)PMfVyz7XSd=fAko+p2Lx5W=XT>4 at x8W$f
zSyIQ7h3{}hRd|H}i-9wakl1ba`N~N|MxDEmVPpJC1|A at p$N9()LMPzZ>-uT#KAr63
zV*s`KDpp4e|9wC>JZVZo0QrpssN2AZB|s1X?h>GX%sG?VKLtm`4Pac~^B+CW?eN8a
zBUkxPF`i~p*?s>Kf&X+Yd5Q_+c?sI9zTJTU1#!Ql<JH%iC<9;NFk(`Zbo7JxY{@MI
zM*Hzjy<-0HI8F#nr|*d8RRZMqA3;uznBMPt-}~<8eKl(P2Vd=#_n32d;WLK$?BKWB
zN{Koe-m`rQ1J>_bGdx^tdEs67WGUO?;$FIZ5LUZWFu6y+Xp8Tq16gbLA9Vk&Ze4i0
z(S^<v3-T>FUHJqEBfykx;|T=w+eH%}DJH<y$60s+%+PiiG_D$AXLJ?;`sl|9 at bU;E
zjzh}>@iqdCN3rLi{E`*~`$`+|nTs|>MTm6}+zsj0!445%6~i1?eGPM-YLzQ1`m@}W
z{KFuNpGysbLW4{~gN#d{CD7R at -`jk0O~jBX0fI?A<`RePUX;f1|356GUXmba*#%@Y
z*_?*9zu3i at 3TWyhf1P#^nD&Lk2&{ts1SorkJUT8`OXsQQiB{vku~naI^pz}3?onpV
z{IC^!x3wkw!PPH1z8<$CeSMXGv6%ZbNoJc>@7|3-5lkVt!5#RNTLgH`kgy5BzuSgP
z(j9ftA!QgMC($x at B#0BY-9~a<93?2`#de<HQ7K=TMy;li>^Wg`{5-<~!WOjLQL4Q;
z-}2`CpRQe*n+NhwohD5NIMRMX%N8TNlk6fytWL#MxmXa3#z2|~(B(&fKmvrLFQe}I
zZ=EDSgvkHg$Jn&rJ|A?bG#h$n at x-FkIE2#170A)WYSwu2=RpDx;F$Ll7_vtI(yheC
zmPAN28lfWzpmhHLOt*2;B-xR+j`;%RyEI~pg2i)h^+s at l=y7f5qIa*|St6)TGSX%y
zlgWuP-A*FmhKa1BfoJwF&Ge%5Pn3;d7GvE(SvSiM3q(S^sW7IQHZo2C3Z@^v#-KBK
z- at XI8-Sls%uy=tWdnafY8%#S)U0(`9sk>Sy?3gYs4w{vgfzMv<QgB2zu$VlWDYFIT
z2UEp!3wWO{ALurZbFk(kmB}`w#o3|7LpQ#hCH?k;b(~Z4!^b9cpbf-NuzJ384{dNn
zAT!ZLuVx*ann)14XIq(DB6C9bx4*BVy0p)a-;{S@$Auj=Mh6^qi~i>{jzq(`nB at js
z$z8OD*+J9bgm7fU;TSFSdNcvL6FJ?U`fc8Vg?V}{R>d8sCe|6%>!0t-|K)<S+##<Q
zaj(92qofm{LJi?><W8Bh3kZO#ZT(Du#eL*ad1+yi`IL|u*14qhKEt{zcFx%PmWb at l
zCXpiLpi5yVG`rTRkb-wc0~t at ijAPdM^TQg&>SW=qhed*!)i1)3#Ez9bc~g(>)EvoW
z1KQA*>mJd+qD;BQJ>w)HH69kA>X8olsj3wY^YBi5)|+8pNu;fL!k&>H|E&6zPa-N;
zgVjBBY$-*^%F7RR(8E9Aiocs7 at up!f52YzEbLSSzqTGdX4vvz$99~-^W}-1zl<gON
z(mc+atumgxEhCD0Y${uL<Dy<`!<+A_dqfX)4^_`4@#Raeg<aKX-Sc!sx1aXF+7^@G
zkciz8_dB%if83Dh>O#73lowBuk6SWb*ibr`A4nHpudjxcUON}RIBp9hObCBSoUIhF
zsr at 2+228K>TcSm<kZyudpnu$vmfJ!aBY;>f8DAGD@<7`;SUmxLJanEUc50%GOo%nB
z31GdN0Q>3q=RWepbjF9Hy!VZmRgZ_{&Um=Fa74m+YP=7|KJG4y%V4nwbCsjdQ%li9
z at tRwLCEEhzdvq>N+Nc85^|>yedz_({xh0zZ(pD}l{bv88JK@>=CE<6SBEpo+T2gJA
z<bLo1N|``j4){$&_oN6{(jkCso#YJkLpF^Pgn5YQj1}>tA=gmMRlI3uvikjNKf2E8
zc>mJ{t+J5Ik?Vh=xV(5l8HEf;$}Hk{ieaUU-^gsy;1;x1{h*!5-lz49ACY`Nyu;29
zU2A$QgJfKPhF)u8bWSJr-n~>F&B}{1 at C^tTdqN<*j6)#IZh%0T{pB0=nKmhTh>96e
z#40o)#Qpdu4A(Ss8FTS`&a6n^o2*K<N|A?EOjr=_a at fWik>Bg}I`uQ|#@#v7v~&-^
zuXA`;5WXw=))`kk-enWXZLjW9E4*qHhMI50j&^Il8QI1$+EK7~<6#B#^C=k{(FJ3p
zxY*U-(3(<@@YfLlGh_|I!Y${-XLJM)QTcZ}-&HE^33%f$FPdpt)LJO4(tyd^VMrUR
z+F=yC_wL)DNa9>rpM4QtD!Y&?o`dulF=t=}G6S76TW_Am%)8YycGU*vxIDdh#T^MQ
z*;E#-m1>)1yQ79uYYDl;_&;IV<SB&dV3HK2SrDb$piRgadD>Yxo5QPPPp(d9aRzzI
z{UsKCkr3V;X$Ty5GpASGzpz+xnE<Ca<JE^9X%%_^q7zzn3LT5|pMd;zm>Gwlw?U at D
z;NXzufLo!&q1DEemlBYu8K89L`YAat8!!v#k{tC-McdFaH)MzZ+f{XTxgBjnHa|E1
z^W)<UMQ<W<f9y!9VBn*6i_|?%s2b{|EnQZ1z>#Ji>d%j&iD!#8w4(X`!bhAUm)M-x
zDE`Q{&A#0EuO906y4ZEcIh0E-A-mb_8-%s|8&{W0($El^5;j6l2zeSYYe1#Z^s at Ep
ztFsw3n!+t=Ywf%!H(~106yWMAQ2yGPs<@Id4AmaNrqtvvY}mnoVO#K6fRu|KcYUy<
z%f<}v-k9q4<f!)d8A^e(EePNZ4JY_J{&pNIz?H(`Bj58iP8ONVU<0_)Og^%@b=+ at N
z*vtUe-=CX=2;00hyq=_PUU<^uv|tSk;8W!97R$;gWX^yw5~CrWQ;(nBB7z?1`Uuf(
za!DMLWDBNZa77LH+(wKALujKUe;jG&yj1nf4*5P;$Y$BQ>mJs2Vd>mXTU}%DsyA)X
z`Hxyg>-V1g2+%-U0c)_IA0hO>jJvq)Jv>UhDPv_9qTD|adZRxrXJX_2H+Hm3?taO3
zH5CP=%Pfq}IqDUGpy>Ll&Y4(LR}M#;;Uw6TaV=zu!3-4MzsIc(3*XJ|JiA3}6Xl74
z7o~=#itxJW*!;$q;og2al}Pc#FT=Nvoh*$GD)(x=ZZn=ve{@CXi)NGD$S?l<y)Xfb
zdzg9Z3A~7RqO$M(e(aj(uNs@<>>bb)(Q at tR{+I&|AT}y1Y%7v9emOR#yrby8B<16G
z%Wn?-I$*M_s(eY`mo at okY79<?$ovitBSXa^P4Nr~hZDq^!>s2NnkTk-HQ76bB at G*T
znMKwYQEHz(+D}cl|MAe`K9}B~YF^zSW6vbd2(Xi#?9ZpuJ2;ix{D`WssBqtxQ;GF{
zYc%W1?ryQ6hR4i8dw<Pa`e^BzD>dAu-vfO+$NzwB|0SP=6dpQGO6|8WA+?XdrPN-p
z7m~V2l1Q4VFuWRGqwmiV;K>w_;8Gm;9v0A#bj-}<CiHwM=5b4`D7j+3`y<xaGvwet
zF3L%2{h9w;`jaf%WS18?uZDAV6<*xx`*?7Mp`rn0v_PQIjZ{#RpIf)!3&a}*5AJlE
ztAzP at 9>@th^80wYwa+<gpR?|YLCA*Ylb|wl)_^cVa*JuttYK>uvQwqxvtnq&%k4{E
z-=YTJ4fWCSFmnpI>3rdmdX>KMj8vPz`Ef`d9W&Gr&n+*9)Nhmj+h9jYR_n_)Pl4x^
zic99KLSHKfzqDMLYp1IeP3EOppNy0}o3m)utD34fhX<KptPFB|JD7@|IB5&Bp3V2-
zrqDoS46UI5xfXUV$2a6*cvXY_`=@DHxY&LpX$mr?|4Z9J9rzBPxeZqQn0{_vu2|K_
z6>IGFQwb0hSCvsu6os9bSMjhv(5>0Dpe6fsRZn}a?tTcq%}c;!Bd&A-I?Whc4(<O?
za&CD<M_6}@>FxI?(&>D5qUmRq#s^={erM at jSD}|AV}I5?A>Zb0Ttks2c at pMoJZufh
z)^m1qu*Jm{llVMlGgr-Q#1b36<f&X%5}7+I<@&Y0G~v6GiOQoH{*ezTuZAiCV+3MG
zY!n<1veo!Ecn6KYhMRQo2<s(H_d^&{?(86v^jvEoJ#}jPH7(?+#p1 at d!wUWOj=IM>
zjU2t=P(Rv3?obxr2Uk)QeUJGIb1+Jd`@T#pt*KzE-;O<z?{3%`7d-Y_+rIO(nvK!-
z<%@p~+({bPNW!uqVa;H^=s+tP+hblrXP8q$awO0A+;uExL12ZKxVbMqf9UAPJvW at 9
zYwp^j*={kg*9+_W4?4KNAUagoFi0E4WOLXkHV^=IiUF`w?1r$7a(Gq9WQn=xEINTW
z(m2ztF&(<%mLw;N{mvR!N)Vju at x*UTXdl7q23+`WO)s!K9v%n|D~$Ae{c?c;s{7!u
z(OJ^y2Witx8D@#Klm$6knsGbEKFO7zOAj at FMHNFk4HM-f(iY!0yVTz9x^o~#Gs1uI
zO4w$tj)eCJ2B1N#Ls~mD#2SV at MJYFY)jfuky3!?go+7vEss+Ku5D2mmDSEDnfauBn
z>MwB!iG*zzY|?2JG$}z_e_2Y<UPMEJMo&La8k2xSv;taLePf5Q at GKT9Lf-x;Xy{?-
zgl?xLy0w|496qe}c*pqIGDq46PNLZEI_6ydNMDuTdPVQ*<(uuRL$ljoK6aazA~S!{
zpqeB3t(RN}5JQ|uxQ_BJviaT-*kYd{XPz>>eVOp^xk~m7u?8<~)C}pee0^_jn2*o;
z%LTpLJIm)uDy$r>UhRDwPy=We{RPS_v4%f>DvSV2gA<X-U`L90RS&dv8v(Mk3GgbT
zi-m7#A`xKrV;ImdH2bPJV+*4L2#^*D&<Znz?}tuV<ce#rYC`Sm3SgGO%kKF<q=@H2
z(yv$>E(qw-7|P?XcxudJ&wj+t!TizW!uvnWTxVai=iq{rmP-2?M#`%$Cy_0nTau=}
zI_krGlbeH4cZlfHhiN(hZigc4BvWr!t9L-qh}mFAsjnO5pnI#e{uhYIA%9Jkp(FVe
zDGU3ncGv-hX_kl9nQ%fQMAih*Li<xkrx90zL(9Syed^;3yA$BOM9O`nzJ0O%&K<u2
z+bdPM=)A+j5A;KSC4g#yy78DLY5O<Dg^bU*eQ6VX at C}Az+={nc5akj$=+-*^BdrC8
z5#k_yN{xnCPY<?3Z5V8d_BY~L+MXZ=@_MP7^Cu*hj3s=V=mr!{)P at S@IXW8WfM!y2
zIJ`u4^{we*H3A3^7IVJq&8^h4+Vmbtp&dbc>IzAcY&hN at Wh3CYqbSiyYB_R{NhOOJ
z{g>8(8U9TyK(ePLt95};va*@!0~?MbkPC94`T#3G)Ff7?OEn271wm25qEo74!K~%-
z18Cw88j at N>#LlF0|3Etzk-z?<x4DIhq`41`)%*!IH_g++&r!7OHFxw1nu<=C5a5f&
zjV1~N?6NcscZyieqgus!%X67sH5~t;D{7pxmjIp#DJZqu7+2~IFoQ(}(xaQEpJ>Y%
zhXs+GgaM7Uh|65kSObU&7OMty53yb#*dm`Y>Zy`v-S6H;M|3|*h`IZtWX|h|uCdy2
zNh==XMVXifEyjfFEDJz+z2>TDnIRhHh6aTP3*|0XrCE1s6t<3|YDmSkn>WWd*yokp
zGxU61oo=#p-m46o-<lL^D0PTH_p at XttRl;T32-<BqJPq7WI)4z at -iZ-hdJiDf&iOK
zV17XvqH`;hB~~;}Rkq<ljrgcE*;IZ*Tg^CQR_H`p92HAFfagUKAOp71PYYqv9bkV=
z&J{PXCB2!{7uw)2XgsWC0M;@XZGR;bl40;+-)X=mRG213d_g*XaRdfN0`wP at HCXtb
zWc(vr(g-`tKS*-_qXg*4;q{G7uH{rCqBQiY=9>^Q2PTs<Zr~ejjVl{p!ww#PRGe&2
z&JFc?z!VuRj%A5HHL$uIX}?d80?9|&YyUh}1-%``m7etEo+x1_?#be_Dr3$I%#Ri2
z8cb>|t(~z`IFlDX7Vu=w*^Kvd+%CrHdQm=`0<BEykT0(AM6@@Q%lC at F7IMpx4kgdP
zJz~caqa)TSZ3nln+|}T%bG--q at uqi|>x9|tiA?I9+vKrgd=_L}@hd){Wl-G=45QCx
z=;asrCv#>tRE{JtK5ecl2%pa?45b^+o?V-#zc8RE at RZEDz=MEROHUE2^q40;H*a}P
zV>t64UAs0=Vmh97<Pqy`$I537S1NXI>ON~tI at 1!bV4&it1)U;C0Oe?(3VelN0V{!_
z)>S_g;PboL*>|3A#!IaqKQ7Jqt>vUmllq~Zj!Kzl>Coa_o<Fv%TG%H*2bT~)e>tKR
zdc?X)@uO%@20vll+tP7K#_Wc}oS!v*JG{BZVo^uF+bQ3AAZBCN_{H6>Wk`~C at k@4c
zr~L2s*4=(eg8NY^)UEk3F_+!b at 0Qre?u)mZ?W85E4a%g%^DnYpTKx2;5%q6+%Sl-D
zl`5r at wB#m)MR6e1r0wbeZUDsynDh`fE?<Wn*O&kY#v${CdG?PWg$c)*mMqV6p=8PV
z!kJ<~$#QC15jky++1lY7as`ceFI(bbc?nGR;EJedU71K72Fogk*?9A%lzQh|m`{~(
z|G?RWhh|!Ni&hR>a0lNsu(kr6XOg=c?(9VA*$&$!$0W7787Df{&i}qH|4f;zZoJL>
zIHSy2{@w6Vv;_Y`TKpad9mXMSU00(P#_Uhn7V>=2>z_D92SL}<Cl}K9)|Lkt=FKII
zx+X&g^Nx$n_esfRuWLnrVo}QtCB3i3PC20h*7dC)s<QadnyE{G#0$p%R(SP;68fN=
zXrmvqfu_fx3(b#l)N>8uJqGT?zw5K at t2j9Ez`bH`U3N{zWAcPqg~`G=<n9Y6EvaBO
z30aR0<b|FvM5EC%PnK|GXdXYTMzHf;Qn)y#%a=VU*=b2u%3YGPpzd~;clU}-=r2k@
z+>E6|-fSoSuBFJ`%z=uQIomsBZ9(gG5LL#?gbn9ov@)L-(UMZ*OvDS|Bxw#x{n~|x
z5IrP<J2yJMdVj_}@nT*~?ELk1M=d9;69l7BHv$rCNj%C+<-i6CTiBu;D>4_8@(Kj1
zj!-In at WgPJ_Ny;0nz6UGUEGvt?W&NvEY-)7H2xJZB4Blf<uHB$vqlOW=<!eHCoZkR
z!n)Nj2kqonS3FaH?fLcUQg5AOH5zH}Qhzja+Lo8n6J+9uoQuE~Sr5(=B;$&uqV-|i
zd{(t7ebw{U at l7WqpYw-rr&~>U7noszFDgzKEYzvHu-;L@?qGfah`tH8R{ln4n?Txg
zAW0GV;J<Gtw>W&yu;&MzyMd{$c`90%B_LN{UD7PJyXJi0)TGSBx=Wfj&(BcR4gBCF
z8#gP2Y$v=dNkBpg&`xuG!|)fNFCOiW_OF;@&!h>8k1?DAAB1c at e{$(-=i8xUo_pRL
ztxbA-de)kw4FGj!|C#jnzhuPUm<^;jf31CyCuN{dvpBuB1ki<g%@zW*1h{8X;}(&p
zU`v$n6T*9nP;q;PKA$UAO&8t~+_UwsU at 5+>zQsUVm;0X1!?Hb3g~vD9{S=!otE{=|
zfMv+3(qG*jX at zrv7pPY9{Fc3x;au at -GCu2<X68&R!dY?x<=wy+J&u_9)>ZBJQGChT
z`^)-Iv(oHVdT0e5bx|{OG}R>iEJw-Eq>Nj1MW{vlS3BtD30UzA_Z{~_wXfuF>o2*L
z9-Xe<w)bIOt?rq#4}RIN<t`hUsXYE|v%}E#dip`7yGvg|to}$5tG~l%oxv81=Jl0S
z5B7*;qR)8<K39es#`tp8x8(bUJXb$ZZpB}-{X=d at dgQv|sn!MB>HrVI4a81@>PnXG
z7p|(q0_*_+`~>pPZhOSu8_>R4 at 44^rK121xKOZzInB%@M&f at P|9hpTl$~?k9kLb6M
zM63n5iI#91p?b(rv=ED9SU2H1%vbFEsZfr*A(q2?{B>kjbcDup{h+p=^J9FknO1g{
zTs>^&t&!#wxpd9ZxLGkhYg71*<pg+?coU|4!||7$Dk9`0WLPT?Mszqm*T+1^QH9!W
zkC`;DHcQr=(6rrWD(9XyvZ4&_t=8RO^4nd7(|3RX#pY*=b&nBX7DJM at 9ENEYuGx&M
z8w)>IDCeq9Z=qD+HKX<eIy(LZlSuo7U7pZXG;wP3Vuw|4oCCz{KT;NbRJ0iu$X<ls
zLd&nN;J~NpRZEUT98>MW3%XcCxtK2jcHxbp*i)^XkWn<>aE!sRW;XPf?y)x850Kd*
z<Pk_W=D~i$4%dAGZ*;{i4&mxPVw2oK`s5W(9;6_g0-Q^LwLT7qGK3>St4aUL(q15f
zm|_TN_B}uJ({2Kcz&+c4WmjbW^qvBwfe)p7M*K}2?7-(CdM^G3mYHj4*G_Z~11aHG
z3(ds~Xzlv0S7HOAge<$kV(E%6Tg{lvcyHAehtN5H!@>{)ly{o|#faEGOE at TK8_I!|
zuoR!o!90-yq&owDhrbcg+AT{xs2DbCFlH at De+4DO(nCX^_jF5}KU>AmMOV!32Zel0
zNpLmVz3IZy8iUkdw1LD(YDL}`1a3<W#$0d5G^+G1-!RRhgBpI=+s<%F+%m#TqL%83
z*PhGkNmy}_^a2C`S|*|dZ^EeYmyZ1!Dkv5z3D%z5dsp^Nv`>|KNBoN6vf#wGaJoMi
z1hjn3q|zaCOlXCDVm^#2Ra$#bPsP%3(ZlGN)u)5ML~X)1lEf8F(l#M>H4Hdt at Aw+D
z%n9LTbet>~EoDSJVU>sP4SLF_C1qJpEofFvLxK+KdstNU8-(1j0ncqRsc&iR2XJaQ
z=6d&SM?dl?VlXN<r0t~4hcI;JSDW1Xy%8hH9#zM>{Dq9kwYI at GL2LxC5woM>3YWW+
z7Y%=H?9i#$u5$+e`k;tEw&_gI)MYng|JoF=S>P|$gRmjHnm?4YEtFRHsVLVr;Stvz
zJ8&<{x_QXzVXnhRCgk at TLt3z7FJRU=XyrZ5m!u&-vvs3O#EUma*axCv*E{3~d8^vi
zyJd-PxX^#h-3plzT;wsd4BCUgfrc%*bvc$t*B5U-UdE(6_fGA3K>%u3jIzf?7Jplv
z-vhJrr}nrTS*X^W@}iV)oF>)T at XpnAY=tteJ1H`O{d0k<*dkkOLLX{O(%5c{cfd`@
z6OuC at 54T!bae_zDg5g5}gT50ZT4NT4;q at RE{acn#!r+eNHJTE_yMq)Qs-_<u;<JT(
zdQzu~AYZ(K)%CTl3jO60^U7_%=&YA{4YChIFMUYNe0{G$+1GK7urp*>D`0hOnfu-u
zoQ?!sDVa}qk+5}y`y|Obu!QcJ8{j|YaE{tL339qWJh&46fU4*;?+jyQ_PfmyzF`Y@
UQ_hBdzUubk_+m{3fDrBf50_=K6951J
diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf
index 5ef93461ee4b..93840dfa71a4 100644
--- a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf
+++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf
@@ -14,12 +14,7 @@
FILE_GUID = 76ED6631-44FE-4ED2-8B5D-1B5355BB25E8
MODULE_TYPE = DXE_DRIVER
VERSION_STRING = 1.0
-
ENTRY_POINT = InitializeLogo
-#
-# This flag specifies whether HII resource section is generated into PE image.
-#
- UEFI_HII_RESOURCE_SECTION = TRUE
#
# The following information is for reference only and not required by the build tools.
@@ -28,25 +23,28 @@
#
[Sources]
- Logo.bmp
Logo.c
- Logo.idf
[Packages]
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
+ LogoFeaturePkg/LogoFeaturePkg.dec
[LibraryClasses]
UefiBootServicesTableLib
UefiDriverEntryPoint
DebugLib
+ DxeServicesLib
+ MemoryAllocationLib
+ BmpSupportLib
[Protocols]
- gEfiHiiDatabaseProtocolGuid ## CONSUMES
- gEfiHiiImageExProtocolGuid ## CONSUMES
- gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES
- gEdkiiPlatformLogoProtocolGuid ## PRODUCES
+ gEdkiiBootLogo2ProtocolGuid ## CONSUMES
+ gEfiGraphicsOutputProtocolGuid ## CONSUMES
+
+[Guids]
+ gTianoLogoGuid
[Depex]
- gEfiHiiDatabaseProtocolGuid AND
- gEfiHiiImageExProtocolGuid
+ gEdkiiBootLogo2ProtocolGuid AND
+ gEfiGraphicsOutputProtocolGuid
diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec
index 4fa7dfea0fcd..39cae36c5f62 100644
--- a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec
+++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec
@@ -23,7 +23,7 @@
[Guids]
gLogoFeaturePkgTokenSpaceGuid = {0x567199de, 0xb448, 0x4aa0, {0x99, 0x4e, 0xd5, 0xd6, 0x82, 0x59, 0x91, 0x17}}
+ gTianoLogoGuid = {0x7BB28B99, 0x61BB, 0x11D5, {0x9A, 0x5D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D}}
[PcdsFeatureFlag]
gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable|FALSE|BOOLEAN|0xA0000001
- gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable|FALSE|BOOLEAN|0xA0000002
diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc
index 5a6436178c4e..b820baaa0a87 100644
--- a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc
+++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc
@@ -29,8 +29,6 @@
LogoFeaturePkg/LogoFeaturePkg.dec
[PcdsFeatureFlag]
- gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable |FALSE
-
#
# PCD needed for MinPlatform build includes
#
@@ -55,5 +53,4 @@
# all drivers in this package in 32b or 64b modes
#
[Components]
- LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf
LogoFeaturePkg/LogoDxe/LogoDxe.inf
diff --git a/Platform/Intel/BoardModulePkg/Library/BoardBdsHookLib/BoardBdsHookLib.c b/Platform/Intel/BoardModulePkg/Library/BoardBdsHookLib/BoardBdsHookLib.c
index 0bcee7c9a4ba..deeec1055633 100644
--- a/Platform/Intel/BoardModulePkg/Library/BoardBdsHookLib/BoardBdsHookLib.c
+++ b/Platform/Intel/BoardModulePkg/Library/BoardBdsHookLib/BoardBdsHookLib.c
@@ -9,6 +9,7 @@
#include <Guid/EventGroup.h>
+#include <Library/BootLogoLib.h>
#include <Library/IoLib.h>
#include <Library/PciLib.h>
#include <Library/UefiBootManagerLib.h>
@@ -1385,7 +1386,5 @@ BdsAfterConsoleReadyBeforeBootOptionCallback (
break;
}
- Print (L"Press F2 for Setup, or F7 for BootMenu!\n");
-
}
diff --git a/Platform/Intel/BoardModulePkg/Library/BoardBdsHookLib/BoardBdsHookLib.inf b/Platform/Intel/BoardModulePkg/Library/BoardBdsHookLib/BoardBdsHookLib.inf
index 69f3fcb55222..6375741f402a 100644
--- a/Platform/Intel/BoardModulePkg/Library/BoardBdsHookLib/BoardBdsHookLib.inf
+++ b/Platform/Intel/BoardModulePkg/Library/BoardBdsHookLib/BoardBdsHookLib.inf
@@ -34,6 +34,7 @@
PerformanceLib
TimerLib
Tcg2PhysicalPresenceLib
+ BootLogoLib
[Packages]
MdePkg/MdePkg.dec
diff --git a/Platform/Intel/BoardModulePkg/Library/BoardBootManagerLib/BoardBootManager.c b/Platform/Intel/BoardModulePkg/Library/BoardBootManagerLib/BoardBootManager.c
index f6628d4125f9..0e91d9338b43 100644
--- a/Platform/Intel/BoardModulePkg/Library/BoardBootManagerLib/BoardBootManager.c
+++ b/Platform/Intel/BoardModulePkg/Library/BoardBootManagerLib/BoardBootManager.c
@@ -11,9 +11,12 @@
#include <Library/PlatformBootManagerLib.h>
#include <Library/UefiLib.h>
#include <Library/HobLib.h>
+#include <Library/PcdLib.h>
#include <Library/PrintLib.h>
#include <Library/PerformanceLib.h>
#include <Library/BoardBootManagerLib.h>
+#include <Library/BootLogoLib.h>
+#include <Protocol/GraphicsOutput.h>
BOOLEAN mHotKeypressed = FALSE;
@@ -31,11 +34,39 @@ BoardBootManagerWaitCallback (
UINT16 TimeoutRemain
)
{
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION Black;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION White;
+ UINT16 TimeoutInitial;
EFI_STATUS Status;
EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TxtInEx;
EFI_KEY_DATA KeyData;
BOOLEAN PausePressed;
+ // Give user the notification, then consider being paused state.
+ TimeoutInitial = PcdGet16 (PcdPlatformBootTimeOut);
+
+ //
+ // If PcdPlatformBootTimeOut is set to zero, then we consider
+ // that no progress update should be enacted (since we'd only
+ // ever display a one-shot progress of either 0% or 100%).
+ //
+ if (TimeoutInitial == 0) {
+ return;
+ }
+
+ Black.Raw = 0x00000000;
+ White.Raw = 0x00FFFFFF;
+
+ // Show progress at bottom center
+ BootLogoUpdateProgress (
+ White.Pixel,
+ Black.Pixel,
+ L"Press F2 for Setup, or F7 for BootMenu!\n",
+ White.Pixel,
+ (TimeoutInitial - TimeoutRemain) * 100 / TimeoutInitial,
+ 0
+ );
+
//
// Pause on PAUSE key
//
diff --git a/Platform/Intel/BoardModulePkg/Library/BoardBootManagerLib/BoardBootManagerLib.inf b/Platform/Intel/BoardModulePkg/Library/BoardBootManagerLib/BoardBootManagerLib.inf
index 38ff52ca81c6..3a7a72716b99 100644
--- a/Platform/Intel/BoardModulePkg/Library/BoardBootManagerLib/BoardBootManagerLib.inf
+++ b/Platform/Intel/BoardModulePkg/Library/BoardBootManagerLib/BoardBootManagerLib.inf
@@ -30,10 +30,15 @@
DebugLib
UefiLib
HobLib
+ PcdLib
UefiBootManagerLib
TimerLib
+ BootLogoLib
[Packages]
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
MinPlatformPkg/MinPlatformPkg.dec
+
+[Pcd]
+ gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut
diff --git a/Platform/Intel/MinPlatformPkg/Include/Dsc/CoreCommonLib.dsc b/Platform/Intel/MinPlatformPkg/Include/Dsc/CoreCommonLib.dsc
index b77d55dfd550..5ff135136e28 100644
--- a/Platform/Intel/MinPlatformPkg/Include/Dsc/CoreCommonLib.dsc
+++ b/Platform/Intel/MinPlatformPkg/Include/Dsc/CoreCommonLib.dsc
@@ -84,6 +84,7 @@
CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
+ BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf
SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
--
2.36.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#91817): https://edk2.groups.io/g/devel/message/91817
Mute This Topic: https://groups.io/mt/92609644/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list