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.chaga...@intel.com> Cc: Isaac Oram <isaac.w.o...@intel.com> Cc: Nate DeSimone <nathaniel.l.desim...@intel.com> Cc: Ankit Sinha <ankit.si...@intel.com> Cc: Eric Dong <eric.d...@intel.com> Cc: Dandan Bi <dandan...@intel.com> Cc: Liming Gao <gaolim...@byosoft.com.cn> Signed-off-by: Benjamin Doron <benjamin.doro...@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@5v+;AfrMetB{BaK!a<Lo1UI@;nOdY3|UrAo&u+#3@<2}4W~~g!%54* z8N;h%;opI*irk!e7Ebc2>vmA)@0+{y=$UH@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@Rn|x~3un^tCH?jsOWM2mwxq5FlyU zO9G5d72|SL+?)1qw=~u+!Gn<|$4r?xC9nwm@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@yh)zt>nxwpU6 z)x21mf7;RDBxwBOME`r*)V@-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@TAprf79zf|Wz>6ZFK<mOK zp1*~^;R^TaFC{>8Z!cgFz)=p&mCom1-)PMfVyz7XSd=fAko+p2Lx5W=XT>4@x8W$f zSyIQ7h3{}hRd|H}i-9wakl1ba`N~N|MxDEmVPpJC1|A@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@bU;E zjzh}>@iqdCN3rLi{E`*~`$`+|nTs|>MTm6}+zsj0!445%6~i1?eGPM-YLzQ1`m@}W z{KFuNpGysbLW4{~gN#d{CD7R@-`jk0O~jBX0fI?A<`RePUX;f1|356GUXmba*#%@Y z*_?*9zu3i@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@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@x-FkIE2#170A)WYSwu2=RpDx;F$Ll7_vtI(yheC zmPAN28lfWzpmhHLOt*2;B-xR+j`;%RyEI~pg2i)h^+s@l=y7f5qIa*|St6)TGSX%y zlgWuP-A*FmhKa1BfoJwF&Ge%5Pn3;d7GvE(SvSiM3q(S^sW7IQHZo2C3Z@^v#-KBK z-@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@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@l zCXpiLpi5yVG`rTRkb-wc0~t@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@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@2+228K>TcSm<kZyudpnu$vmfJ!aBY;>f8DAGD@<7`;SUmxLJanEUc50%GOo%nB z31GdN0Q>3q=RWepbjF9Hy!VZmRgZ_{&Um=Fa74m+YP=7|KJG4y%V4nwbCsjdQ%li9 z@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@C^tTdqN<*j6)#IZh%0T{pB0=nKmhTh>96e z#40o)#Qpdu4A(Ss8FTS`&a6n^o2*K<N|A?EOjr=_a@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@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@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=+@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@tR{+I&|AT}y1Y%7v9emOR#yrby8B<16G z%Wn?-I$*M_s(eY`mo@okY79<?$ovitBSXa^P4Nr~hZDq^!>s2NnkTk-HQ76bB@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@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@jSD}|AV}I5?A>Zb0Ttks2c@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@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@9 zYwp^j*={kg*9+_W4?4KNAUagoFi0E4WOLXkHV^=IiUF`w?1r$7a(Gq9WQn=xEINTW z(m2ztF&(<%mLw;N{mvR!N)Vju@x*UTXdl7q23+`WO)s!K9v%n|D~$Ae{c?c;s{7!u z(OJ^y2Witx8D@#Klm$6knsGbEKFO7zOAj@FMHNFk4HM-f(iY!0yVTz9x^o~#Gs1uI zO4w$tj)eCJ2B1N#Ls~mD#2SV@MJYFY)jfuky3!?go+7vEss+Ku5D2mmDSEDnfauBn z>MwB!iG*zzY|?2JG$}z_e_2Y<UPMEJMo&La8k2xSv;taLePf5Q@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@C}Az+={nc5akj$=+-*^BdrC8 z5#k_yN{xnCPY<?3Z5V8d_BY~L+MXZ=@_MP7^Cu*hj3s=V=mr!{)P@S@IXW8WfM!y2 zIJ`u4^{we*H3A3^7IVJq&8^h4+Vmbtp&dbc>IzAcY&hN@Wh3CYqbSiyYB_R{NhOOJ z{g>8(8U9TyK(ePLt95};va*@!0~?MbkPC94`T#3G)Ff7?OEn271wm25qEo74!K~%- z18Cw88j@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@XttRl;T32-<BqJPq7WI)4z@-iZ-hdJiDf&iOK zV17XvqH`;hB~~;}Rkq<ljrgcE*;IZ*Tg^CQR_H`p92HAFfagUKAOp71PYYqv9bkV= z&J{PXCB2!{7uw)2XgsWC0M;@XZGR;bl40;+-)X=mRG213d_g*XaRdfN0`wP@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@F7IMpx4kgdP zJz~caqa)TSZ3nln+|}T%bG--q@uqi|>x9|tiA?I9+vKrgd=_L}@hd){Wl-G=45QCx z=;asrCv#>tRE{JtK5ecl2%pa?45b^+o?V-#zc8RE@RZEDz=MEROHUE2^q40;H*a}P zV>t64UAs0=Vmh97<Pqy`$I537S1NXI>ON~tI@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@k@4c zr~L2s*4=(eg8NY^)UEk3F_+!b@0Qre?u)mZ?W85E4a%g%^DnYpTKx2;5%q6+%Sl-D zl`5r@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@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@WgPJ_Ny;0nz6UGUEGvt?W&NvEY-)7H2xJZB4Blf<uHB$vqlOW=<!eHCoZkR z!n)Nj2kqonS3FaH?fLcUQg5AOH5zH}Qhzja+Lo8n6J+9uoQuE~Sr5(=B;$&uqV-|i zd{(t7ebw{U@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@e{$(-=i8xUo_pRL ztxbA-de)kw4FGj!|C#jnzhuPUm<^;jf31CyCuN{dvpBuB1ki<g%@zW*1h{8X;}(&p zU`v$n6T*9nP;q;PKA$UAO&8t~+_UwsU@5+>zQsUVm;0X1!?Hb3g~vD9{S=!otE{=| zfMv+3(qG*jX@zrv7pPY9{Fc3x;au@-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@dgQv|sn!MB>HrVI4a81@>PnXG z7p|(q0_*_+`~>pPZhOSu8_>R4@44^rK121xKOZzInB%@M&f@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@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@TK8_I!| zuoR!o!90-yq&owDhrbcg+AT{xs2DbCFlH@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@Aw+D z%n9LTbet>~EoDSJVU>sP4SLF_C1qJpEofFvLxK+KdstNU8-(1j0ncqRsc&iR2XJaQ z=6d&SM?dl?VlXN<r0t~4hcI;JSDW1Xy%8hH9#zM>{Dq9kwYI@GL2LxC5woM>3YWW+ z7Y%=H?9i#$u5$+e`k;tEw&_gI)MYng|JoF=S>P|$gRmjHnm?4YEtFRHsVLVr;Stvz zJ8&<{x_QXzVXnhRCgk@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@XpnAY=tteJ1H`O{d0k<*dkkOLLX{O(%5c{cfd`@ z6OuC@54T!bae_zDg5g5}gT50ZT4NT4;q@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/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-