From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web10.7051.1585123407437991168 for ; Wed, 25 Mar 2020 01:03:27 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: heng.luo@intel.com) IronPort-SDR: a34OSTwvhMrnAbE4zCYErhFWPnyFSh1DPVFUyZVUQv3GB8jXBFOQrg2d/fxzvkPY+UddxeGPIx sKKm//MfgP4g== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2020 01:03:26 -0700 IronPort-SDR: cU69TYUyKeZOC/fYG2ES2O5MjQVKgQB0B8GR5c2NpC3RwrSWF8hV+1iAXx8MSIvC2eLLc+7gvu zMcclZ0iBPbQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,303,1580803200"; d="scan'208";a="270728129" Received: from hengluo-dev.ccr.corp.intel.com ([10.239.153.154]) by fmsmga004.fm.intel.com with ESMTP; 25 Mar 2020 01:03:24 -0700 From: "Heng Luo" To: devel@edk2.groups.io Cc: Dandan Bi , Liming Gao , Eric Dong , Ray Ni Subject: [Patch V3] Features/Intel: Add LogoFeaturePkg to provide logo images and drivers Date: Wed, 25 Mar 2020 16:01:12 +0800 Message-Id: <20200325080112.1966-1-heng.luo@intel.com> X-Mailer: git-send-email 2.24.0.windows.2 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2584 1. LogoDxe.inf includes a BMP logo in the EFI file, the driver decodes the BMP file and provide the image via EDKII_PLATFORM_LOGO_PROTOCOL. 2. JpegLogoDxe.inf includes a JPEG logo in the EFI file, the driver use EFI_HII_IMAGE_DECODER_PROTOCOL to decode the Jpeg file and provide the image via EDKII_PLATFORM_LOGO_PROTOCOL. Cc: Dandan Bi Cc: Liming Gao Cc: Eric Dong Cc: Ray Ni Signed-off-by: Heng Luo --- Notes: v3: - Remove the feature-domain prefix "UserInterface" from all paths ins= ide DSC/FDF/INF. [Ray Ni] - Pass build with VS2015/Clang in Windows and GCC in Ubuntu. v2: - Add Cc and remove Change-Id in commit message. [Liming Gao] Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc | 4 = +++- Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc | 6 = +++++- Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf | 6 = +++++- Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf | 6 = +++++- Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc | 107 = +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++= ++++++++++++++++++++++++++++++++ Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf | 13 = +++++++++++++ Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf | 8 = ++++++++ Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf | 10 = ++++++++++ Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf | 52 = ++++++++++++++++++++++++++++++++++++++++++++++++++++ Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp | Bin = 0 -> 183366 bytes Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c | 153 = +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++= +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++= +++ Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf | 10 = ++++++++++ Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg | Bin = 0 -> 11944 bytes Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf | 52 = ++++++++++++++++++++++++++++++++++++++++++++++++++++ Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec | 31 = +++++++++++++++++++++++++++++++ Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc | 37 = +++++++++++++++++++++++++++++++++++++ Features/Intel/UserInterface/LogoFeaturePkg/Readme.md | 129 = +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++= ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 17 files changed, 620 insertions(+), 4 deletions(-) diff --git a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc b/Fea= tures/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc index 23e7c6474a..ea879680ba 100644 --- a/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc +++ b/Features/Intel/AdvancedFeaturePkg/AdvancedFeaturePkg.dsc @@ -7,7 +7,7 @@ # 1. Present a consolidated and simplified view of all available advanced = features to board packages.=0D # 2. Provide a simple, single package build for all available advanced fea= tures.=0D #=0D -# Copyright (c) 2017 - 2019, Intel Corporation. All rights reserved.
=0D +# Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.
=0D #=0D # SPDX-License-Identifier: BSD-2-Clause-Patent=0D #=0D @@ -46,6 +46,8 @@ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable = |TRUE=0D gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable = |TRUE=0D gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable = |TRUE=0D + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable = |TRUE=0D + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable = |FALSE=0D =0D #=0D # This package builds all advanced features.=0D diff --git a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc= b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc index 649774edf7..ac9ab80e8e 100644 --- a/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc +++ b/Features/Intel/AdvancedFeaturePkg/Include/AdvancedFeatures.dsc @@ -4,7 +4,7 @@ # This file is intended to be included into another package so advanced f= eatures=0D # can be conditionally built by enabling the respective feature via its F= eaturePCD.=0D #=0D -# Copyright (c) 2019, Intel Corporation. All rights reserved.
=0D +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.
=0D #=0D # SPDX-License-Identifier: BSD-2-Clause-Patent=0D #=0D @@ -54,3 +54,7 @@ !if gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable = =3D=3D TRUE=0D !include UserInterface/UserAuthFeaturePkg/Include/UserAuthFeature.dsc=0D !endif=0D +=0D +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable =3D=3D TRUE=0D + !include LogoFeaturePkg/Include/LogoFeature.dsc=0D +!endif=0D diff --git a/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf b/Fea= tures/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf index 57b29a42b9..c49a0fd875 100644 --- a/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf +++ b/Features/Intel/AdvancedFeaturePkg/Include/PostMemory.fdf @@ -5,7 +5,7 @@ # can be conditionally included in the flash image by enabling the respec= tive=0D # feature via its FeaturePCD.=0D #=0D -# Copyright (c) 2019, Intel Corporation. All rights reserved.
=0D +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.
=0D #=0D # SPDX-License-Identifier: BSD-2-Clause-Patent=0D #=0D @@ -55,3 +55,7 @@ !if gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable = =3D=3D TRUE=0D !include UserInterface/UserAuthFeaturePkg/Include/PostMemory.fdf=0D !endif=0D +=0D +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable =3D=3D TRUE=0D + !include LogoFeaturePkg/Include/PostMemory.fdf=0D +!endif=0D diff --git a/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf b/Feat= ures/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf index 20d25dd173..1b21e96a5f 100644 --- a/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf +++ b/Features/Intel/AdvancedFeaturePkg/Include/PreMemory.fdf @@ -5,7 +5,7 @@ # can be conditionally included in the flash image by enabling the respec= tive=0D # feature via its FeaturePCD.=0D #=0D -# Copyright (c) 2019, Intel Corporation. All rights reserved.
=0D +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.
=0D #=0D # SPDX-License-Identifier: BSD-2-Clause-Patent=0D #=0D @@ -55,3 +55,7 @@ !if gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable = =3D=3D TRUE=0D !include UserInterface/UserAuthFeaturePkg/Include/PreMemory.fdf=0D !endif=0D +=0D +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable =3D=3D TRUE=0D + !include LogoFeaturePkg/Include/PreMemory.fdf=0D +!endif=0D diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeatur= e.dsc b/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc new file mode 100644 index 0000000000..fca0bfd540 --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/Include/LogoFeature.dsc @@ -0,0 +1,107 @@ +## @file=0D +# This is a build description file for the Logo advanced feature.=0D +# This file should be included into another package DSC file to build this= feature.=0D +#=0D +# The DEC files are used by the utilities that parse DSC and=0D +# INF files to generate AutoGen.c and AutoGen.h files=0D +# for the build infrastructure.=0D +#=0D +# Copyright (c) 2020, Intel Corporation. All rights reserved.
=0D +#=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +#=0D +##=0D +=0D +##########################################################################= ######=0D +#=0D +# Defines Section - statements that will be processed to create a Makefile= .=0D +#=0D +##########################################################################= ######=0D +[Defines]=0D +!ifndef $(PEI_ARCH)=0D + !error "PEI_ARCH must be specified to build this feature!"=0D +!endif=0D +!ifndef $(DXE_ARCH)=0D + !error "DXE_ARCH must be specified to build this feature!"=0D +!endif=0D +=0D +##########################################################################= ######=0D +#=0D +# Packages Section - Make sure PCD can be directly used in a conditional s= tatement=0D +# in a DSC which includes this DSC file.=0D +#=0D +##########################################################################= ######=0D +[Packages]=0D + LogoFeaturePkg/LogoFeaturePkg.dec=0D +=0D +##########################################################################= ######=0D +#=0D +# Library Class section - list of all Library Classes needed by this featu= re.=0D +#=0D +##########################################################################= ######=0D +[LibraryClasses]=0D + #######################################=0D + # Edk2 Packages=0D + #######################################=0D + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf=0D + BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf= =0D + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf=0D + UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBoo= tServicesTableLib.inf=0D + UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntry= Point.inf=0D +=0D +[LibraryClasses.common.DXE_DRIVER]=0D + #######################################=0D + # Edk2 Packages=0D + #######################################=0D + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf=0D +=0D +##########################################################################= ######=0D +#=0D +# Component section - list of all components that need built for this feat= ure.=0D +#=0D +# Note: The EDK II DSC file is not used to specify how compiled binary ima= ges get placed=0D +# into firmware volume images. This section is just a list of module= s to compile from=0D +# source into UEFI-compliant binaries.=0D +# It is the FDF file that contains information on combining binary f= iles into firmware=0D +# volume images, whose concept is beyond UEFI and is described in PI= specification.=0D +# There may also be modules listed in this section that are not requ= ired in the FDF file,=0D +# When a module listed here is excluded from FDF file, then UEFI-com= pliant binary will be=0D +# generated for it, but the binary will not be put into any firmware= volume.=0D +#=0D +##########################################################################= ######=0D +=0D +#=0D +# Feature DXE Components=0D +#=0D +=0D +# @todo: Change below line to [Components.$(DXE_ARCH)] after https://bugzi= lla.tianocore.org/show_bug.cgi?id=3D2308=0D +# is completed.=0D +[Components.X64]=0D + #####################################=0D + # Logo Feature Package=0D + #####################################=0D +=0D + # Add library instances here that are not included in package components= and should be tested=0D + # in the package build.=0D +=0D + # Add components here that should be included in the package build.=0D +!if gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable =3D=3D TRUE=0D + LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf=0D +!else=0D + LogoFeaturePkg/LogoDxe/LogoDxe.inf=0D +!endif=0D +=0D +##########################################################################= #########################=0D +#=0D +# BuildOptions Section - Define the module specific tool chain flags that = should be used as=0D +# the default flags for a module. These flags are a= ppended to any=0D +# standard flags that are defined by the build proc= ess. They can be=0D +# applied for any modules or only those modules wit= h the specific=0D +# module style (EDK or EDKII) specified in [Compone= nts] section.=0D +#=0D +# For advanced features, it is recommended to enabl= e [BuildOptions] in=0D +# the applicable INF file so it does not affect the= whole board package=0D +# build when this DSC file is active.=0D +#=0D +##########################################################################= #########################=0D +[BuildOptions]=0D diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory= .fdf b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf new file mode 100644 index 0000000000..080c87223c --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PostMemory.fdf @@ -0,0 +1,13 @@ +## @file=0D +# FDF file for post-memory Logo modules.=0D +#=0D +# Copyright (c) 2020, Intel Corporation. All rights reserved.
=0D +#=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +#=0D +##=0D +!if gSmbiosFeaturePkgTokenSpaceGuid.PcdJpgEnable =3D=3D TRUE=0D + INF LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf=0D +!else=0D + INF LogoFeaturePkg/LogoDxe/LogoDxe.inf=0D +!endif=0D diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.= fdf b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf new file mode 100644 index 0000000000..91cd1c6ec6 --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/Include/PreMemory.fdf @@ -0,0 +1,8 @@ +## @file=0D +# FDF file for pre-memory Logo modules.=0D +#=0D +# Copyright (c) 2020, Intel Corporation. All rights reserved.
=0D +#=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +#=0D +##=0D diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.i= df b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf new file mode 100644 index 0000000000..a39500e043 --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogo.idf @@ -0,0 +1,10 @@ +// /** @file=0D +// Platform Logo image definition file.=0D +//=0D +// Copyright (c) 2020, Intel Corporation. All rights reserved.
=0D +//=0D +// SPDX-License-Identifier: BSD-2-Clause-Patent=0D +//=0D +// **/=0D +=0D +#image IMG_LOGO Logo.jpg=0D diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDx= e.inf b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf new file mode 100644 index 0000000000..47f1672a4c --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf @@ -0,0 +1,52 @@ +## @file=0D +# The default logo JPEG picture shown on setup screen.=0D +#=0D +# Copyright (c) 2020, Intel Corporation. All rights reserved.
=0D +#=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +#=0D +#=0D +##=0D +=0D +[Defines]=0D + INF_VERSION =3D 0x00010005=0D + BASE_NAME =3D JpegLogoDxe=0D + FILE_GUID =3D 319CFE1D-8F15-4A7A-BF40-EECA953D87EF= =0D + MODULE_TYPE =3D DXE_DRIVER=0D + VERSION_STRING =3D 1.0=0D +=0D + ENTRY_POINT =3D InitializeLogo=0D +#=0D +# This flag specifies whether HII resource section is generated into PE i= mage.=0D +#=0D + UEFI_HII_RESOURCE_SECTION =3D TRUE=0D +=0D +#=0D +# The following information is for reference only and not required by the = build tools.=0D +#=0D +# VALID_ARCHITECTURES =3D IA32 X64=0D +#=0D +=0D +[Sources]=0D + Logo.jpg=0D + Logo.c=0D + JpegLogo.idf=0D +=0D +[Packages]=0D + MdePkg/MdePkg.dec=0D + MdeModulePkg/MdeModulePkg.dec=0D +=0D +[LibraryClasses]=0D + UefiBootServicesTableLib=0D + UefiDriverEntryPoint=0D + DebugLib=0D +=0D +[Protocols]=0D + gEfiHiiDatabaseProtocolGuid ## CONSUMES=0D + gEfiHiiImageExProtocolGuid ## CONSUMES=0D + gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES=0D + gEdkiiPlatformLogoProtocolGuid ## PRODUCES=0D +=0D +[Depex]=0D + gEfiHiiDatabaseProtocolGuid AND=0D + gEfiHiiImageExProtocolGuid=0D diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp b= /Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7ec1aa6a852564e262df5992965= 5f7a0f3d5445f GIT binary patch literal 183366 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 Q9t=3D$LltI8CkSzrM7XaWYkpKVy literal 0 HcmV?d00001 diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c b/F= eatures/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c new file mode 100644 index 0000000000..a636b086ca --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.c @@ -0,0 +1,153 @@ +/** @file=0D + Logo DXE Driver, install Edkii Platform Logo protocol.=0D +=0D +Copyright (c) 2016 - 2020, Intel Corporation. All rights reserved.
=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +#include =0D +#include =0D +#include =0D +#include =0D +#include =0D +#include =0D +#include =0D +#include =0D +=0D +typedef struct {=0D + EFI_IMAGE_ID ImageId;=0D + EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE Attribute;=0D + INTN OffsetX;=0D + INTN OffsetY;=0D +} LOGO_ENTRY;=0D +=0D +EFI_HII_IMAGE_EX_PROTOCOL *mHiiImageEx;=0D +EFI_HII_HANDLE mHiiHandle;=0D +LOGO_ENTRY mLogos[] =3D {=0D + {=0D + IMAGE_TOKEN (IMG_LOGO),=0D + EdkiiPlatformLogoDisplayAttributeCenter,=0D + 0,=0D + 0=0D + }=0D +};=0D +=0D +/**=0D + Load a platform logo image and return its data and attributes.=0D +=0D + @param This The pointer to this protocol instance.=0D + @param Instance The visible image instance is found.=0D + @param Image Points to the image.=0D + @param Attribute The display attributes of the image returned.=0D + @param OffsetX The X offset of the image regarding the Attribu= te.=0D + @param OffsetY The Y offset of the image regarding the Attribu= te.=0D +=0D + @retval EFI_SUCCESS The image was fetched successfully.=0D + @retval EFI_NOT_FOUND The specified image could not be found.=0D +**/=0D +EFI_STATUS=0D +EFIAPI=0D +GetImage (=0D + IN EDKII_PLATFORM_LOGO_PROTOCOL *This,=0D + IN OUT UINT32 *Instance,=0D + OUT EFI_IMAGE_INPUT *Image,=0D + OUT EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE *Attribute,=0D + OUT INTN *OffsetX,=0D + OUT INTN *OffsetY=0D + )=0D +{=0D + UINT32 Current;=0D + if (Instance =3D=3D NULL || Image =3D=3D NULL ||=0D + Attribute =3D=3D NULL || OffsetX =3D=3D NULL || OffsetY =3D=3D NULL)= {=0D + return EFI_INVALID_PARAMETER;=0D + }=0D +=0D + Current =3D *Instance;=0D + if (Current >=3D ARRAY_SIZE (mLogos)) {=0D + return EFI_NOT_FOUND;=0D + }=0D +=0D + (*Instance)++;=0D + *Attribute =3D mLogos[Current].Attribute;=0D + *OffsetX =3D mLogos[Current].OffsetX;=0D + *OffsetY =3D mLogos[Current].OffsetY;=0D + return mHiiImageEx->GetImageEx (mHiiImageEx, mHiiHandle, mLogos[Current]= .ImageId, Image);=0D +}=0D +=0D +EDKII_PLATFORM_LOGO_PROTOCOL mPlatformLogo =3D {=0D + GetImage=0D +};=0D +=0D +/**=0D + Entrypoint of this module.=0D +=0D + This function is the entrypoint of this module. It installs the Edkii=0D + Platform Logo protocol.=0D +=0D + @param ImageHandle The firmware allocated handle for the EFI imag= e.=0D + @param SystemTable A pointer to the EFI System Table.=0D +=0D + @retval EFI_SUCCESS The entry point is executed successfully.=0D +=0D +**/=0D +EFI_STATUS=0D +EFIAPI=0D +InitializeLogo (=0D + IN EFI_HANDLE ImageHandle,=0D + IN EFI_SYSTEM_TABLE *SystemTable=0D + )=0D +{=0D + EFI_STATUS Status;=0D + EFI_HII_PACKAGE_LIST_HEADER *PackageList;=0D + EFI_HII_DATABASE_PROTOCOL *HiiDatabase;=0D + EFI_HANDLE Handle;=0D +=0D + Status =3D gBS->LocateProtocol (=0D + &gEfiHiiDatabaseProtocolGuid,=0D + NULL,=0D + (VOID **) &HiiDatabase=0D + );=0D + ASSERT_EFI_ERROR (Status);=0D +=0D + Status =3D gBS->LocateProtocol (=0D + &gEfiHiiImageExProtocolGuid,=0D + NULL,=0D + (VOID **) &mHiiImageEx=0D + );=0D + ASSERT_EFI_ERROR (Status);=0D +=0D + //=0D + // Retrieve HII package list from ImageHandle=0D + //=0D + Status =3D gBS->OpenProtocol (=0D + ImageHandle,=0D + &gEfiHiiPackageListProtocolGuid,=0D + (VOID **) &PackageList,=0D + ImageHandle,=0D + NULL,=0D + EFI_OPEN_PROTOCOL_GET_PROTOCOL=0D + );=0D + if (EFI_ERROR (Status)) {=0D + DEBUG ((DEBUG_ERROR, "HII Image Package with logo not found in PE/COFF= resource section\n"));=0D + return Status;=0D + }=0D +=0D + //=0D + // Publish HII package list to HII Database.=0D + //=0D + Status =3D HiiDatabase->NewPackageList (=0D + HiiDatabase,=0D + PackageList,=0D + NULL,=0D + &mHiiHandle=0D + );=0D + if (!EFI_ERROR (Status)) {=0D + Handle =3D NULL;=0D + Status =3D gBS->InstallMultipleProtocolInterfaces (=0D + &Handle,=0D + &gEdkiiPlatformLogoProtocolGuid, &mPlatformLogo,=0D + NULL=0D + );=0D + }=0D + return Status;=0D +}=0D diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf b= /Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf new file mode 100644 index 0000000000..fd9c489815 --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.idf @@ -0,0 +1,10 @@ +// /** @file=0D +// Platform Logo image definition file.=0D +//=0D +// Copyright (c) 2020, Intel Corporation. All rights reserved.
=0D +//=0D +// SPDX-License-Identifier: BSD-2-Clause-Patent=0D +//=0D +// **/=0D +=0D +#image IMG_LOGO Logo.bmp=0D diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg b= /Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/Logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d1d099789fa794648b86c046f03= 20a553954764e GIT binary patch literal 11944 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 literal 0 HcmV?d00001 diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.in= f b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf new file mode 100644 index 0000000000..5ef93461ee --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoDxe/LogoDxe.inf @@ -0,0 +1,52 @@ +## @file=0D +# The default logo bitmap picture shown on setup screen.=0D +#=0D +# Copyright (c) 2020, Intel Corporation. All rights reserved.
=0D +#=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +#=0D +#=0D +##=0D +=0D +[Defines]=0D + INF_VERSION =3D 0x00010005=0D + BASE_NAME =3D LogoDxe=0D + FILE_GUID =3D 76ED6631-44FE-4ED2-8B5D-1B5355BB25E8= =0D + MODULE_TYPE =3D DXE_DRIVER=0D + VERSION_STRING =3D 1.0=0D +=0D + ENTRY_POINT =3D InitializeLogo=0D +#=0D +# This flag specifies whether HII resource section is generated into PE i= mage.=0D +#=0D + UEFI_HII_RESOURCE_SECTION =3D TRUE=0D +=0D +#=0D +# The following information is for reference only and not required by the = build tools.=0D +#=0D +# VALID_ARCHITECTURES =3D IA32 X64=0D +#=0D +=0D +[Sources]=0D + Logo.bmp=0D + Logo.c=0D + Logo.idf=0D +=0D +[Packages]=0D + MdePkg/MdePkg.dec=0D + MdeModulePkg/MdeModulePkg.dec=0D +=0D +[LibraryClasses]=0D + UefiBootServicesTableLib=0D + UefiDriverEntryPoint=0D + DebugLib=0D +=0D +[Protocols]=0D + gEfiHiiDatabaseProtocolGuid ## CONSUMES=0D + gEfiHiiImageExProtocolGuid ## CONSUMES=0D + gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES=0D + gEdkiiPlatformLogoProtocolGuid ## PRODUCES=0D +=0D +[Depex]=0D + gEfiHiiDatabaseProtocolGuid AND=0D + gEfiHiiImageExProtocolGuid=0D diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec= b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec new file mode 100644 index 0000000000..1418eb2137 --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dec @@ -0,0 +1,31 @@ +## @file=0D +# This package provides advanced feature functionality for LOGO.=0D +# This package should only depend on EDK II Core packages.=0D +#=0D +# The DEC files are used by the utilities that parse DSC and=0D +# INF files to generate AutoGen.c and AutoGen.h files=0D +# for the build infrastructure.=0D +#=0D +# Copyright (c) 2020, Intel Corporation. All rights reserved.
=0D +#=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +#=0D +##=0D +=0D +[Defines]=0D + DEC_SPECIFICATION =3D 0x00010017=0D + PACKAGE_NAME =3D LogoFeaturePkg=0D + PACKAGE_GUID =3D A1A87B33-C3E3-497B-978F-2FF7813FEB21=0D + PACKAGE_VERSION =3D 0.1=0D +=0D +[Includes]=0D + Include=0D +=0D +[LibraryClasses]=0D +=0D +[Guids]=0D + gLogoFeaturePkgTokenSpaceGuid =3D {0x567199de, 0xb448, 0x4aa0, {0x99, = 0x4e, 0xd5, 0xd6, 0x82, 0x59, 0x91, 0x17}}=0D +=0D +[PcdsFeatureFlag]=0D + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable|FALSE|BOOLEAN|0xA0000= 001=0D + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable|FALSE|BOOLEAN|0xA0000002=0D diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc= b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc new file mode 100644 index 0000000000..fca413b46b --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/LogoFeaturePkg.dsc @@ -0,0 +1,37 @@ +## @file=0D +# This package provides advanced feature functionality for LOGO.=0D +# This package should only depend on EDK II Core packages.=0D +#=0D +# The DEC files are used by the utilities that parse DSC and=0D +# INF files to generate AutoGen.c and AutoGen.h files=0D +# for the build infrastructure.=0D +#=0D +# Copyright (c) 2020, Intel Corporation. All rights reserved.
=0D +#=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +#=0D +##=0D +=0D +[Defines]=0D + PLATFORM_NAME =3D LogoFeaturePkg=0D + PLATFORM_GUID =3D 0618AB19-9507-4D6A-A0D7-1F43D74736CF= =0D + PLATFORM_VERSION =3D 0.1=0D + DSC_SPECIFICATION =3D 0x00010005=0D + OUTPUT_DIRECTORY =3D Build/$(PLATFORM_NAME)=0D + SUPPORTED_ARCHITECTURES =3D IA32|X64=0D + BUILD_TARGETS =3D DEBUG|RELEASE|NOOPT=0D + SKUID_IDENTIFIER =3D DEFAULT=0D +=0D +[LibraryClasses]=0D + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf=0D + BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf= =0D + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf=0D + UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBoo= tServicesTableLib.inf=0D + UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntry= Point.inf=0D +=0D +[LibraryClasses.common.DXE_DRIVER]=0D + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf=0D +=0D +[Components]=0D + LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf=0D + LogoFeaturePkg/LogoDxe/LogoDxe.inf=0D diff --git a/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md b/Featur= es/Intel/UserInterface/LogoFeaturePkg/Readme.md new file mode 100644 index 0000000000..bf1a61ba95 --- /dev/null +++ b/Features/Intel/UserInterface/LogoFeaturePkg/Readme.md @@ -0,0 +1,129 @@ +# Overview=0D +* **Feature Name:** Logo=0D +* **PI Phase(s) Supported:** DXE=0D +* **SMM Required?** No=0D +=0D +## Purpose=0D +This feature provides the Logo image and driver that produces EDKII_PLATFO= RM_LOGO_PROTOCOL:=0D +=0D +1. LogoDxe.inf includes a BMP logo in the EFI file, the driver provides th= e image via EDKII_PLATFORM_LOGO_PROTOCOL.=0D +2. JpegLogoDxe.inf includes a JPEG logo in the EFI file, the driver uses E= FI_HII_IMAGE_DECODER_PROTOCOL to decode the JPEG file and provide the image= via EDKII_PLATFORM_LOGO_PROTOCOL.=0D +=0D +# High-Level Theory of Operation=0D +=0D +The driver produces a EDKII_PLATFORM_LOGO_PROTOCOL to provide a logo pictu= re shown on setup screen.=0D +=0D +The Logo file is built in HII package list as EFI resource, the driver use= s EFI_HII_DATABASE_PROTOCOL=0D +to the publish HII package list to HII Database and get images via EFI_HII= _IMAGE_EX_PROTOCOL.=0D +=0D +## Firmware Volumes=0D +=0D +* PostMemory=0D +=0D +## Modules=0D +=0D +A bulleted list of the modules that make up the feature.=0D +=0D +* LogoDxe=0D +* JpegLogoDxe=0D +=0D +## LogoDxe=0D +=0D +This driver provides a bitmap image via EDKII_PLATFORM_LOGO_PROTOCOL.=0D +=0D +## JpegLogoDxe=0D +=0D +This driver uses EFI_HII_IMAGE_DECODER_PROTOCOL to decode the jpeg data an= d provide a bitmap image via=0D +EDKII_PLATFORM_LOGO_PROTOCOL.=0D +=0D +## Key Functions=0D +=0D +* This feature produces a EDKII_PLATFORM_LOGO_PROTOCOL which could be used= by consumer such as Edk2\MdeModulePkg\Library\BootLogoLib.=0D +=0D +## Configuration=0D +=0D +* gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable=0D + TRUE: Enable logo feature=0D + FALSE: Disable logo feature=0D +* gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable=0D + TRUE: Use jpeg logo=0D + FALSE: Use bitmap logo=0D +=0D +## Data Flows=0D +=0D +Architecturally defined data structures and flows for the feature.=0D +=0D +### Data flows of LogoDxe=0D +=0D +```txt=0D +| Consumer | | LogoFeatruePkg | |HiiDatabaseDxe|=0D +------------ ------------------ ----------------=0D + | | |=0D + | |--bitmap image data->|=0D + |<---bitmap data--|<-return bitmap data-|=0D +```=0D +=0D +### Data flows of JpegLogoDxe=0D +=0D +```txt=0D +| Consumer | | LogoFeatruePkg | |HiiDatabaseDxe| | EFI_HII_IMAGE_= DECODER_PROTOCOL |=0D +------------ ------------------ ---------------- ----------------= ------------------=0D + | | | = |=0D + | |---Jpeg Image data-->|---------decode Jpeg-------= >|=0D + |<---bitmap data--|<-return bitmap data-|<-----return bitmap data---= -|=0D +```=0D +=0D +## Control Flows=0D +=0D +Consumer gets image from the logo driver via EDKII_PLATFORM_LOGO_PROTOCOL.= =0D +=0D +## Build Flows=0D +=0D +No any special build flows is needed.=0D +=0D +## Test Point Results=0D +=0D +Not available.=0D +=0D +## Functional Exit Criteria=0D +=0D +* Check wether EDKII_PLATFORM_LOGO_PROTOCOL->GetImage() return a default I= ntel logo.=0D +* If using jpeg logo, a dex driver which produces EFI_HII_IMAGE_DECODER_PR= OTOCOL(name is=0D +gEfiHiiImageDecoderNameJpegGuid) is necessary, it is used to decode Jpeg d= ata.=0D +=0D +## Feature Enabling Checklist=0D +=0D +### Option 1=0D +=0D +* Include AdvancedFeatures.dsc in platform dsc file, and use pcd to enable= the feature.=0D +=0D +```dsc=0D + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable = |TRUE=0D + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable = |FALSE=0D + !include Include/AdvancedFeatures.dsc=0D +```=0D +=0D +* Include PreMemory.fdf and inPostMemory.fdf in platform fdf file=0D +=0D +```fdf=0D +!include Include/PreMemory.fdf=0D +!include Include/PostMemory.fdf=0D +```=0D +=0D +### Option 2=0D +=0D +* To use bitmap logo, include "LogoFeaturePkg/LogoDxe/LogoDxe.inf" in plat= form dsc file, and include=0D +"INF LogoFeaturePkg/LogoDxe/LogoDxe.inf" in platform fdf file.=0D +=0D +* To use jpeg logo, include "LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf" in pl= atform dsc file, and include=0D +"INF LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf" in platform fdf file.=0D +=0D +## Performance Impact=0D +=0D +* LogoDxe=0D + * EFI size: 180 KB=0D + * Time spent in EDKII_PLATFORM_LOGO_PROTOCOL->GetImage(): about 18 milli= seconds=0D +=0D +* JpegLogoDxe=0D + * EFI size: 13.6 KB=0D + * Time spent in EDKII_PLATFORM_LOGO_PROTOCOL->GetImage(): about 80 milli= seconds=0D --=20 2.24.0.windows.2