Enable simpler initialation of the MinPlatformPkg feature selection PCD. Most features and boards don't benefit from initializing these. Cc: Sai Chaganty <rangasai.v.chaganty@intel.com> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Signed-off-by: Isaac Oram <isaac.w.oram@intel.com> Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
Overview
- Feature Name: Logo
- PI Phase(s) Supported: DXE
- SMM Required? No
Purpose
This feature provides the Logo image and driver that produces EDKII_PLATFORM_LOGO_PROTOCOL:
- LogoDxe.inf includes a BMP logo in the EFI file, the driver provides the image via EDKII_PLATFORM_LOGO_PROTOCOL.
- JpegLogoDxe.inf includes a JPEG logo in the EFI file, the driver uses EFI_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 picture shown on setup screen.
The Logo file is built in HII package list as EFI resource, the driver uses 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 and 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
| Consumer | | LogoFeatruePkg | |HiiDatabaseDxe|
------------ ------------------ ----------------
| | |
| |--bitmap image data->|
|<---bitmap data--|<-return bitmap data-|
Data flows of JpegLogoDxe
| 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 Intel logo.
- If using jpeg logo, a dex driver which produces EFI_HII_IMAGE_DECODER_PROTOCOL(name is gEfiHiiImageDecoderNameJpegGuid) is necessary, it is used to decode Jpeg data.
Feature Enabling Checklist
Option 1
- Include AdvancedFeatures.dsc in platform dsc file, and use pcd to enable the feature.
gLogoFeaturePkgTokenSpaceGuid.PcdLogoFeatureEnable |TRUE
gLogoFeaturePkgTokenSpaceGuid.PcdJpgEnable |FALSE
!include Include/AdvancedFeatures.dsc
- Include PreMemory.fdf and inPostMemory.fdf in platform fdf file
!include Include/PreMemory.fdf
!include Include/PostMemory.fdf
Option 2
-
To use bitmap logo, include "LogoFeaturePkg/LogoDxe/LogoDxe.inf" in platform dsc file, and include "INF LogoFeaturePkg/LogoDxe/LogoDxe.inf" in platform fdf file.
-
To use jpeg logo, include "LogoFeaturePkg/LogoDxe/JpegLogoDxe.inf" in platform 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 milliseconds
-
JpegLogoDxe
- EFI size: 13.6 KB
- Time spent in EDKII_PLATFORM_LOGO_PROTOCOL->GetImage(): about 80 milliseconds