From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web12.4079.1585274157026201688 for ; Thu, 26 Mar 2020 18:55:57 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: liming.gao@intel.com) IronPort-SDR: 4/sor7P58mOtgpiua1+DoE7lET3Jk2YuJ4Vqmtx5mO23GyH4D1acBdf7lS5eCfICtn6jJSgeXt u5uLjyKuuPeg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Mar 2020 18:55:55 -0700 IronPort-SDR: /thANd5TFfjkRkmNMx8YBJQk1t6GnitYcKD3OBc4uQvhdaWuYMjKOiw7lSUBf7LPdz97ReMMbK kh+PMZoe8iaQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,310,1580803200"; d="scan'208";a="271396413" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga004.fm.intel.com with ESMTP; 26 Mar 2020 18:55:55 -0700 Received: from shsmsx603.ccr.corp.intel.com (10.109.6.143) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 26 Mar 2020 18:55:55 -0700 Received: from shsmsx606.ccr.corp.intel.com (10.109.6.216) by SHSMSX603.ccr.corp.intel.com (10.109.6.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 27 Mar 2020 09:55:52 +0800 Received: from shsmsx606.ccr.corp.intel.com ([10.109.6.216]) by SHSMSX606.ccr.corp.intel.com ([10.109.6.216]) with mapi id 15.01.1713.004; Fri, 27 Mar 2020 09:55:52 +0800 From: "Liming Gao" To: "Luo, Heng" , "devel@edk2.groups.io" CC: "Bi, Dandan" , "Dong, Eric" , "Ni, Ray" Subject: Re: [Patch V3] Features/Intel: Add LogoFeaturePkg to provide logo images and drivers Thread-Topic: [Patch V3] Features/Intel: Add LogoFeaturePkg to provide logo images and drivers Thread-Index: AQHWAnviGDbuX+Nv2kq/9JzZjnq+g6hbsLTQ Date: Fri, 27 Mar 2020 01:55:52 +0000 Message-ID: <5b0c105fb10f47a783724c002b1ca554@intel.com> References: <20200325080112.1966-1-heng.luo@intel.com> In-Reply-To: <20200325080112.1966-1-heng.luo@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.2.0.6 dlp-product: dlpe-windows dlp-reaction: no-action x-originating-ip: [10.239.127.36] MIME-Version: 1.0 Return-Path: liming.gao@intel.com Content-Language: en-US Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable Reviewed-by: Liming Gao -----Original Message----- From: Luo, Heng =20 Sent: 2020=1B$BG/=1B(B3=1B$B7n=1B(B25=1B$BF|=1B(B 16:01 To: devel@edk2.groups.io Cc: Bi, Dandan ; Gao, Liming ; D= ong, Eric ; Ni, Ray Subject: [Patch V3] Features/Intel: Add LogoFeaturePkg to provide logo imag= es and drivers 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. # 2. Provide a simple, single package build for all available advanced fea= tures. # -# Copyright (c) 2017 - 2019, Intel Corporation. All rights reserved.
+# Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.
# # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -46,6 +46,8 @@ gSmbiosFeaturePkgTokenSpaceGuid.PcdSmbiosFeatureEnable = |TRUE gUsb3DebugFeaturePkgTokenSpaceGuid.PcdUsb3DebugFeatureEnable = |TRUE gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable = |TRUE + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable = |TRUE + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable = |FALSE =20 # # This package builds all advanced features. 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 # can be conditionally built by enabling the respective feature via its F= eaturePCD. # -# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.
# # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -54,3 +54,7 @@ !if gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable = =3D=3D TRUE !include UserInterface/UserAuthFeaturePkg/Include/UserAuthFeature.dsc !endif + +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable =3D=3D TRUE + !include LogoFeaturePkg/Include/LogoFeature.dsc +!endif 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 # feature via its FeaturePCD. # -# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.
# # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -55,3 +55,7 @@ !if gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable = =3D=3D TRUE !include UserInterface/UserAuthFeaturePkg/Include/PostMemory.fdf !endif + +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable =3D=3D TRUE + !include LogoFeaturePkg/Include/PostMemory.fdf +!endif 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 # feature via its FeaturePCD. # -# Copyright (c) 2019, Intel Corporation. All rights reserved.
+# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.
# # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -55,3 +55,7 @@ !if gUserAuthFeaturePkgTokenSpaceGuid.PcdUserAuthenticationFeatureEnable = =3D=3D TRUE !include UserInterface/UserAuthFeaturePkg/Include/PreMemory.fdf !endif + +!if gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable =3D=3D TRUE + !include LogoFeaturePkg/Include/PreMemory.fdf +!endif 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 +# This is a build description file for the Logo advanced feature. +# This file should be included into another package DSC file to build this= feature. +# +# The DEC files are used by the utilities that parse DSC and +# INF files to generate AutoGen.c and AutoGen.h files +# for the build infrastructure. +# +# Copyright (c) 2020, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +##########################################################################= ###### +# +# Defines Section - statements that will be processed to create a Makefile= . +# +##########################################################################= ###### +[Defines] +!ifndef $(PEI_ARCH) + !error "PEI_ARCH must be specified to build this feature!" +!endif +!ifndef $(DXE_ARCH) + !error "DXE_ARCH must be specified to build this feature!" +!endif + +##########################################################################= ###### +# +# Packages Section - Make sure PCD can be directly used in a conditional s= tatement +# in a DSC which includes this DSC file. +# +##########################################################################= ###### +[Packages] + LogoFeaturePkg/LogoFeaturePkg.dec + +##########################################################################= ###### +# +# Library Class section - list of all Library Classes needed by this featu= re. +# +##########################################################################= ###### +[LibraryClasses] + ####################################### + # Edk2 Packages + ####################################### + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf + BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf + UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBoo= tServicesTableLib.inf + UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntry= Point.inf + +[LibraryClasses.common.DXE_DRIVER] + ####################################### + # Edk2 Packages + ####################################### + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf + +##########################################################################= ###### +# +# Component section - list of all components that need built for this feat= ure. +# +# Note: The EDK II DSC file is not used to specify how compiled binary ima= ges get placed +# into firmware volume images. This section is just a list of module= s to compile from +# source into UEFI-compliant binaries. +# It is the FDF file that contains information on combining binary f= iles into firmware +# volume images, whose concept is beyond UEFI and is described in PI= specification. +# There may also be modules listed in this section that are not requ= ired in the FDF file, +# When a module listed here is excluded from FDF file, then UEFI-com= pliant binary will be +# generated for it, but the binary will not be put into any firmware= volume. +# +##########################################################################= ###### + +# +# Feature DXE Components +# + +# @todo: Change below line to [Components.$(DXE_ARCH)] after https://bugzi= lla.tianocore.org/show_bug.cgi?id=3D2308 +# is completed. +[Components.X64] + ##################################### + # Logo Feature Package + ##################################### + + # Add library instances here that are not included in package components= and should be tested + # in the package build. + + # Add components here that should be included in the package build. +!if gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable =3D=3D TRUE + LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf +!else + LogoFeaturePkg/LogoDxe/LogoDxe.inf +!endif + +##########################################################################= ######################### +# +# BuildOptions Section - Define the module specific tool chain flags that = should be used as +# the default flags for a module. These flags are a= ppended to any +# standard flags that are defined by the build proc= ess. They can be +# applied for any modules or only those modules wit= h the specific +# module style (EDK or EDKII) specified in [Compone= nts] section. +# +# For advanced features, it is recommended to enabl= e [BuildOptions] in +# the applicable INF file so it does not affect the= whole board package +# build when this DSC file is active. +# +##########################################################################= ######################### +[BuildOptions] 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 +# FDF file for post-memory Logo modules. +# +# Copyright (c) 2020, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## +!if gSmbiosFeaturePkgTokenSpaceGuid.PcdJpgEnable =3D=3D TRUE + INF LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf +!else + INF LogoFeaturePkg/LogoDxe/LogoDxe.inf +!endif 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 +# FDF file for pre-memory Logo modules. +# +# Copyright (c) 2020, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## 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 +// Platform Logo image definition file. +// +// Copyright (c) 2020, Intel Corporation. All rights reserved.
+// +// SPDX-License-Identifier: BSD-2-Clause-Patent +// +// **/ + +#image IMG_LOGO Logo.jpg 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 +# The default logo JPEG picture shown on setup screen. +# +# Copyright (c) 2020, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D JpegLogoDxe + FILE_GUID =3D 319CFE1D-8F15-4A7A-BF40-EECA953D87EF + MODULE_TYPE =3D DXE_DRIVER + VERSION_STRING =3D 1.0 + + ENTRY_POINT =3D InitializeLogo +# +# This flag specifies whether HII resource section is generated into PE i= mage. +# + UEFI_HII_RESOURCE_SECTION =3D TRUE + +# +# The following information is for reference only and not required by the = build tools. +# +# VALID_ARCHITECTURES =3D 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.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 + Logo DXE Driver, install Edkii Platform Logo protocol. + +Copyright (c) 2016 - 2020, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ +#include +#include +#include +#include +#include +#include +#include +#include + +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[] =3D { + { + 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 Attribu= te. + @param OffsetY The Y offset of the image regarding the Attribu= te. + + @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 =3D=3D NULL || Image =3D=3D NULL || + Attribute =3D=3D NULL || OffsetX =3D=3D NULL || OffsetY =3D=3D NULL)= { + return EFI_INVALID_PARAMETER; + } + + Current =3D *Instance; + if (Current >=3D ARRAY_SIZE (mLogos)) { + return EFI_NOT_FOUND; + } + + (*Instance)++; + *Attribute =3D mLogos[Current].Attribute; + *OffsetX =3D mLogos[Current].OffsetX; + *OffsetY =3D mLogos[Current].OffsetY; + return mHiiImageEx->GetImageEx (mHiiImageEx, mHiiHandle, mLogos[Current]= .ImageId, Image); +} + +EDKII_PLATFORM_LOGO_PROTOCOL mPlatformLogo =3D { + GetImage +}; + +/** + Entrypoint of this module. + + This function is the entrypoint of this module. It installs the Edkii + Platform Logo protocol. + + @param ImageHandle The firmware allocated handle for the EFI imag= e. + @param SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + +**/ +EFI_STATUS +EFIAPI +InitializeLogo ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + EFI_HII_PACKAGE_LIST_HEADER *PackageList; + EFI_HII_DATABASE_PROTOCOL *HiiDatabase; + EFI_HANDLE Handle; + + Status =3D gBS->LocateProtocol ( + &gEfiHiiDatabaseProtocolGuid, + NULL, + (VOID **) &HiiDatabase + ); + ASSERT_EFI_ERROR (Status); + + Status =3D gBS->LocateProtocol ( + &gEfiHiiImageExProtocolGuid, + NULL, + (VOID **) &mHiiImageEx + ); + ASSERT_EFI_ERROR (Status); + + // + // Retrieve HII package list from ImageHandle + // + Status =3D gBS->OpenProtocol ( + ImageHandle, + &gEfiHiiPackageListProtocolGuid, + (VOID **) &PackageList, + ImageHandle, + NULL, + EFI_OPEN_PROTOCOL_GET_PROTOCOL + ); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "HII Image Package with logo not found in PE/COFF= resource section\n")); + return Status; + } + + // + // Publish HII package list to HII Database. + // + Status =3D HiiDatabase->NewPackageList ( + HiiDatabase, + PackageList, + NULL, + &mHiiHandle + ); + if (!EFI_ERROR (Status)) { + Handle =3D NULL; + Status =3D gBS->InstallMultipleProtocolInterfaces ( + &Handle, + &gEdkiiPlatformLogoProtocolGuid, &mPlatformLogo, + NULL + ); + } + return Status; +} 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 +// Platform Logo image definition file. +// +// Copyright (c) 2020, Intel Corporation. All rights reserved.
+// +// 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 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 +# The default logo bitmap picture shown on setup screen. +# +# Copyright (c) 2020, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D LogoDxe + FILE_GUID =3D 76ED6631-44FE-4ED2-8B5D-1B5355BB25E8 + MODULE_TYPE =3D DXE_DRIVER + VERSION_STRING =3D 1.0 + + ENTRY_POINT =3D InitializeLogo +# +# This flag specifies whether HII resource section is generated into PE i= mage. +# + UEFI_HII_RESOURCE_SECTION =3D TRUE + +# +# The following information is for reference only and not required by the = build tools. +# +# VALID_ARCHITECTURES =3D IA32 X64 +# + +[Sources] + Logo.bmp + Logo.c + Logo.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/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 +# This package provides advanced feature functionality for LOGO. +# This package should only depend on EDK II Core packages. +# +# The DEC files are used by the utilities that parse DSC and +# INF files to generate AutoGen.c and AutoGen.h files +# for the build infrastructure. +# +# Copyright (c) 2020, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + DEC_SPECIFICATION =3D 0x00010017 + PACKAGE_NAME =3D LogoFeaturePkg + PACKAGE_GUID =3D A1A87B33-C3E3-497B-978F-2FF7813FEB21 + PACKAGE_VERSION =3D 0.1 + +[Includes] + Include + +[LibraryClasses] + +[Guids] + gLogoFeaturePkgTokenSpaceGuid =3D {0x567199de, 0xb448, 0x4aa0, {0x99, = 0x4e, 0xd5, 0xd6, 0x82, 0x59, 0x91, 0x17}} + +[PcdsFeatureFlag] + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable|FALSE|BOOLEAN|0xA0000= 001 + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable|FALSE|BOOLEAN|0xA0000002 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 +# This package provides advanced feature functionality for LOGO. +# This package should only depend on EDK II Core packages. +# +# The DEC files are used by the utilities that parse DSC and +# INF files to generate AutoGen.c and AutoGen.h files +# for the build infrastructure. +# +# Copyright (c) 2020, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + PLATFORM_NAME =3D LogoFeaturePkg + PLATFORM_GUID =3D 0618AB19-9507-4D6A-A0D7-1F43D74736CF + PLATFORM_VERSION =3D 0.1 + DSC_SPECIFICATION =3D 0x00010005 + OUTPUT_DIRECTORY =3D Build/$(PLATFORM_NAME) + SUPPORTED_ARCHITECTURES =3D IA32|X64 + BUILD_TARGETS =3D DEBUG|RELEASE|NOOPT + SKUID_IDENTIFIER =3D DEFAULT + +[LibraryClasses] + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf + BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf + UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBoo= tServicesTableLib.inf + UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntry= Point.inf + +[LibraryClasses.common.DXE_DRIVER] + PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf + +[Components] + LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf + LogoFeaturePkg/LogoDxe/LogoDxe.inf 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 +* **Feature Name:** Logo +* **PI Phase(s) Supported:** DXE +* **SMM Required?** No + +## Purpose +This feature provides the Logo image and driver that produces EDKII_PLATFO= RM_LOGO_PROTOCOL: + +1. LogoDxe.inf includes a BMP logo in the EFI file, the driver provides th= e image via EDKII_PLATFORM_LOGO_PROTOCOL. +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. + +# High-Level Theory of Operation + +The driver produces a EDKII_PLATFORM_LOGO_PROTOCOL to provide a logo pictu= re shown on setup screen. + +The Logo file is built in HII package list as EFI resource, the driver use= s EFI_HII_DATABASE_PROTOCOL +to the publish HII package list to HII Database and get images via EFI_HII= _IMAGE_EX_PROTOCOL. + +## Firmware Volumes + +* PostMemory + +## Modules + +A bulleted list of the modules that make up the feature. + +* LogoDxe +* JpegLogoDxe + +## LogoDxe + +This driver provides a bitmap image via EDKII_PLATFORM_LOGO_PROTOCOL. + +## JpegLogoDxe + +This driver uses EFI_HII_IMAGE_DECODER_PROTOCOL to decode the jpeg data an= d provide a bitmap image via +EDKII_PLATFORM_LOGO_PROTOCOL. + +## Key Functions + +* This feature produces a EDKII_PLATFORM_LOGO_PROTOCOL which could be used= by consumer such as Edk2\MdeModulePkg\Library\BootLogoLib. + +## Configuration + +* gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable + TRUE: Enable logo feature + FALSE: Disable logo feature +* gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable + TRUE: Use jpeg logo + FALSE: Use bitmap logo + +## Data Flows + +Architecturally defined data structures and flows for the feature. + +### Data flows of LogoDxe + +```txt +| Consumer | | LogoFeatruePkg | |HiiDatabaseDxe| +------------ ------------------ ---------------- + | | | + | |--bitmap image data->| + |<---bitmap data--|<-return bitmap data-| +``` + +### Data flows of JpegLogoDxe + +```txt +| Consumer | | LogoFeatruePkg | |HiiDatabaseDxe| | EFI_HII_IMAGE_= DECODER_PROTOCOL | +------------ ------------------ ---------------- ----------------= ------------------ + | | | = | + | |---Jpeg Image data-->|---------decode Jpeg-------= >| + |<---bitmap data--|<-return bitmap data-|<-----return bitmap data---= -| +``` + +## Control Flows + +Consumer gets image from the logo driver via EDKII_PLATFORM_LOGO_PROTOCOL. + +## Build Flows + +No any special build flows is needed. + +## Test Point Results + +Not available. + +## Functional Exit Criteria + +* Check wether EDKII_PLATFORM_LOGO_PROTOCOL->GetImage() return a default I= ntel logo. +* If using jpeg logo, a dex driver which produces EFI_HII_IMAGE_DECODER_PR= OTOCOL(name is +gEfiHiiImageDecoderNameJpegGuid) is necessary, it is used to decode Jpeg d= ata. + +## Feature Enabling Checklist + +### Option 1 + +* Include AdvancedFeatures.dsc in platform dsc file, and use pcd to enable= the feature. + +```dsc + gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable = |TRUE + gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable = |FALSE + !include Include/AdvancedFeatures.dsc +``` + +* Include PreMemory.fdf and inPostMemory.fdf in platform fdf file + +```fdf +!include Include/PreMemory.fdf +!include Include/PostMemory.fdf +``` + +### Option 2 + +* To use bitmap logo, include "LogoFeaturePkg/LogoDxe/LogoDxe.inf" in plat= form dsc file, and include +"INF LogoFeaturePkg/LogoDxe/LogoDxe.inf" in platform fdf file. + +* To use jpeg logo, include "LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf" in pl= atform dsc file, and include +"INF LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf" in platform fdf file. + +## Performance Impact + +* LogoDxe + * EFI size: 180 KB + * Time spent in EDKII_PLATFORM_LOGO_PROTOCOL->GetImage(): about 18 milli= seconds + +* JpegLogoDxe + * EFI size: 13.6 KB + * Time spent in EDKII_PLATFORM_LOGO_PROTOCOL->GetImage(): about 80 milli= seconds --=20 2.24.0.windows.2