summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe
diff options
context:
space:
mode:
authorkx <kx@radix.pro>2024-06-04 06:43:08 +0300
committerkx <kx@radix.pro>2024-06-04 06:43:08 +0300
commit7e2ccccace24636f29ddc210b94606abd4c7e42b (patch)
tree545d43ea12671048956cafeb12303e84d601e571 /MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe
parent27b044605cd5f6b33a3d231576003850b3fe305b (diff)
downloadedk2-trunk.tar.xz
Renormalized end-of-lines from master@27b044605cd5f6b33a3d231576003850b3fe305btrunk
Diffstat (limited to 'MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe')
-rw-r--r--MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.c1214
-rw-r--r--MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf120
-rw-r--r--MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.uni32
-rw-r--r--MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxeExtra.uni28
4 files changed, 697 insertions, 697 deletions
diff --git a/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.c b/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.c
index 57f15d49ea..2050b2df99 100644
--- a/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.c
+++ b/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.c
@@ -1,607 +1,607 @@
-/** @file
- This module install ACPI Boot Graphics Resource Table (BGRT).
-
- Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
- Copyright (c) 2016, Microsoft Corporation<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
-**/
-
-#include <Uefi.h>
-
-#include <IndustryStandard/Acpi.h>
-
-#include <Protocol/AcpiTable.h>
-#include <Protocol/GraphicsOutput.h>
-#include <Protocol/BootLogo.h>
-#include <Protocol/BootLogo2.h>
-
-#include <Guid/EventGroup.h>
-
-#include <Library/BaseLib.h>
-#include <Library/BaseMemoryLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/UefiBootServicesTableLib.h>
-#include <Library/DebugLib.h>
-#include <Library/PcdLib.h>
-#include <Library/SafeIntLib.h>
-#include <Library/BmpSupportLib.h>
-
-/**
- Update information of logo image drawn on screen.
-
- @param[in] This The pointer to the Boot Logo protocol 2 instance.
- @param[in] BltBuffer The BLT buffer for logo drawn on screen. If BltBuffer
- is set to NULL, it indicates that logo image is no
- longer on the screen.
- @param[in] DestinationX X coordinate of destination for the BltBuffer.
- @param[in] DestinationY Y coordinate of destination for the BltBuffer.
- @param[in] Width Width of rectangle in BltBuffer in pixels.
- @param[in] Height Hight of rectangle in BltBuffer in pixels.
-
- @retval EFI_SUCCESS The boot logo information was updated.
- @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.
- @retval EFI_OUT_OF_RESOURCES The logo information was not updated due to
- insufficient memory resources.
-**/
-EFI_STATUS
-EFIAPI
-SetBootLogo (
- IN EFI_BOOT_LOGO_PROTOCOL *This,
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL,
- IN UINTN DestinationX,
- IN UINTN DestinationY,
- IN UINTN Width,
- IN UINTN Height
- );
-
-/**
- Update information of logo image drawn on screen.
-
- @param[in] This The pointer to the Boot Logo protocol 2 instance.
- @param[in] BltBuffer The BLT buffer for logo drawn on screen. If BltBuffer
- is set to NULL, it indicates that logo image is no
- longer on the screen.
- @param[in] DestinationX X coordinate of destination for the BltBuffer.
- @param[in] DestinationY Y coordinate of destination for the BltBuffer.
- @param[in] Width Width of rectangle in BltBuffer in pixels.
- @param[in] Height Hight of rectangle in BltBuffer in pixels.
-
- @retval EFI_SUCCESS The boot logo information was updated.
- @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.
- @retval EFI_OUT_OF_RESOURCES The logo information was not updated due to
- insufficient memory resources.
-**/
-EFI_STATUS
-EFIAPI
-SetBootLogo2 (
- IN EDKII_BOOT_LOGO2_PROTOCOL *This,
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL,
- IN UINTN DestinationX,
- IN UINTN DestinationY,
- IN UINTN Width,
- IN UINTN Height
- );
-
-/**
- Get the location of the boot logo on the screen.
-
- @param[in] This The pointer to the Boot Logo Protocol 2 instance
- @param[out] BltBuffer Returns pointer to the GOP BLT buffer that was
- previously registered with SetBootLogo2(). The
- buffer returned must not be modified or freed.
- @param[out] DestinationX Returns the X start position of the GOP BLT buffer
- that was previously registered with SetBootLogo2().
- @param[out] DestinationY Returns the Y start position of the GOP BLT buffer
- that was previously registered with SetBootLogo2().
- @param[out] Width Returns the width of the GOP BLT buffer
- that was previously registered with SetBootLogo2().
- @param[out] Height Returns the height of the GOP BLT buffer
- that was previously registered with SetBootLogo2().
-
- @retval EFI_SUCCESS The location of the boot logo was returned.
- @retval EFI_NOT_READY The boot logo has not been set.
- @retval EFI_INVALID_PARAMETER BltBuffer is NULL.
- @retval EFI_INVALID_PARAMETER DestinationX is NULL.
- @retval EFI_INVALID_PARAMETER DestinationY is NULL.
- @retval EFI_INVALID_PARAMETER Width is NULL.
- @retval EFI_INVALID_PARAMETER Height is NULL.
-**/
-EFI_STATUS
-EFIAPI
-GetBootLogo2 (
- IN EDKII_BOOT_LOGO2_PROTOCOL *This,
- OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL **BltBuffer,
- OUT UINTN *DestinationX,
- OUT UINTN *DestinationY,
- OUT UINTN *Width,
- OUT UINTN *Height
- );
-
-//
-// Boot Logo Protocol Handle
-//
-EFI_HANDLE mBootLogoHandle = NULL;
-
-//
-// Boot Logo Protocol Instance
-//
-EFI_BOOT_LOGO_PROTOCOL mBootLogoProtocolTemplate = {
- SetBootLogo
-};
-
-///
-/// Boot Logo 2 Protocol instance
-///
-EDKII_BOOT_LOGO2_PROTOCOL mBootLogo2ProtocolTemplate = {
- SetBootLogo2,
- GetBootLogo2
-};
-
-EFI_EVENT mBootGraphicsReadyToBootEvent;
-UINTN mBootGraphicsResourceTableKey = 0;
-BOOLEAN mIsLogoValid = FALSE;
-EFI_GRAPHICS_OUTPUT_BLT_PIXEL *mLogoBltBuffer = NULL;
-UINTN mLogoDestX = 0;
-UINTN mLogoDestY = 0;
-UINTN mLogoWidth = 0;
-UINTN mLogoHeight = 0;
-BOOLEAN mAcpiBgrtInstalled = FALSE;
-BOOLEAN mAcpiBgrtStatusChanged = FALSE;
-BOOLEAN mAcpiBgrtBufferChanged = FALSE;
-
-//
-// ACPI Boot Graphics Resource Table template
-//
-EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE mBootGraphicsResourceTableTemplate = {
- {
- EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE,
- sizeof (EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE),
- EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION, // Revision
- 0x00, // Checksum will be updated at runtime
- //
- // It is expected that these values will be updated at EntryPoint.
- //
- { 0x00 }, // OEM ID is a 6 bytes long field
- 0x00, // OEM Table ID(8 bytes long)
- 0x00, // OEM Revision
- 0x00, // Creator ID
- 0x00, // Creator Revision
- },
- EFI_ACPI_5_0_BGRT_VERSION, // Version
- EFI_ACPI_5_0_BGRT_STATUS_VALID, // Status
- EFI_ACPI_5_0_BGRT_IMAGE_TYPE_BMP, // Image Type
- 0, // Image Address
- 0, // Image Offset X
- 0 // Image Offset Y
-};
-
-/**
- Update information of logo image drawn on screen.
-
- @param This The pointer to the Boot Logo protocol instance.
- @param BltBuffer The BLT buffer for logo drawn on screen. If BltBuffer
- is set to NULL, it indicates that logo image is no
- longer on the screen.
- @param DestinationX X coordinate of destination for the BltBuffer.
- @param DestinationY Y coordinate of destination for the BltBuffer.
- @param Width Width of rectangle in BltBuffer in pixels.
- @param Height Hight of rectangle in BltBuffer in pixels.
-
- @retval EFI_SUCCESS The boot logo information was updated.
- @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.
- @retval EFI_OUT_OF_RESOURCES The logo information was not updated due to
- insufficient memory resources.
-
-**/
-EFI_STATUS
-EFIAPI
-SetBootLogo (
- IN EFI_BOOT_LOGO_PROTOCOL *This,
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL,
- IN UINTN DestinationX,
- IN UINTN DestinationY,
- IN UINTN Width,
- IN UINTN Height
- )
-{
- //
- // Call same service in Boot Logo 2 Protocol
- //
- return SetBootLogo2 (
- &mBootLogo2ProtocolTemplate,
- BltBuffer,
- DestinationX,
- DestinationY,
- Width,
- Height
- );
-}
-
-/**
- Update information of logo image drawn on screen.
-
- @param[in] This The pointer to the Boot Logo protocol 2 instance.
- @param[in] BltBuffer The BLT buffer for logo drawn on screen. If BltBuffer
- is set to NULL, it indicates that logo image is no
- longer on the screen.
- @param[in] DestinationX X coordinate of destination for the BltBuffer.
- @param[in] DestinationY Y coordinate of destination for the BltBuffer.
- @param[in] Width Width of rectangle in BltBuffer in pixels.
- @param[in] Height Hight of rectangle in BltBuffer in pixels.
-
- @retval EFI_SUCCESS The boot logo information was updated.
- @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.
- @retval EFI_OUT_OF_RESOURCES The logo information was not updated due to
- insufficient memory resources.
-**/
-EFI_STATUS
-EFIAPI
-SetBootLogo2 (
- IN EDKII_BOOT_LOGO2_PROTOCOL *This,
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL,
- IN UINTN DestinationX,
- IN UINTN DestinationY,
- IN UINTN Width,
- IN UINTN Height
- )
-{
- EFI_STATUS Status;
- UINTN BufferSize;
- UINT32 Result32;
-
- if (BltBuffer == NULL) {
- mIsLogoValid = FALSE;
- mAcpiBgrtStatusChanged = TRUE;
- return EFI_SUCCESS;
- }
-
- //
- // Width and height are not allowed to be zero.
- //
- if ((Width == 0) || (Height == 0)) {
- return EFI_INVALID_PARAMETER;
- }
-
- //
- // Verify destination, width, and height do not overflow 32-bit values.
- // The Boot Graphics Resource Table only has 32-bit fields for these values.
- //
- Status = SafeUintnToUint32 (DestinationX, &Result32);
- if (EFI_ERROR (Status)) {
- return EFI_INVALID_PARAMETER;
- }
-
- Status = SafeUintnToUint32 (DestinationY, &Result32);
- if (EFI_ERROR (Status)) {
- return EFI_INVALID_PARAMETER;
- }
-
- Status = SafeUintnToUint32 (Width, &Result32);
- if (EFI_ERROR (Status)) {
- return EFI_INVALID_PARAMETER;
- }
-
- Status = SafeUintnToUint32 (Height, &Result32);
- if (EFI_ERROR (Status)) {
- return EFI_INVALID_PARAMETER;
- }
-
- //
- // Ensure the Height * Width * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL) does
- // not overflow UINTN
- //
- Status = SafeUintnMult (
- Width,
- Height,
- &BufferSize
- );
- if (EFI_ERROR (Status)) {
- return EFI_UNSUPPORTED;
- }
-
- Status = SafeUintnMult (
- BufferSize,
- sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL),
- &BufferSize
- );
- if (EFI_ERROR (Status)) {
- return EFI_UNSUPPORTED;
- }
-
- //
- // Update state
- //
- mAcpiBgrtBufferChanged = TRUE;
-
- //
- // Free old logo buffer
- //
- if (mLogoBltBuffer != NULL) {
- FreePool (mLogoBltBuffer);
- mLogoBltBuffer = NULL;
- }
-
- //
- // Allocate new logo buffer
- //
- mLogoBltBuffer = AllocateCopyPool (BufferSize, BltBuffer);
- if (mLogoBltBuffer == NULL) {
- return EFI_OUT_OF_RESOURCES;
- }
-
- mLogoDestX = DestinationX;
- mLogoDestY = DestinationY;
- mLogoWidth = Width;
- mLogoHeight = Height;
- mIsLogoValid = TRUE;
-
- return EFI_SUCCESS;
-}
-
-/**
- Get the location of the boot logo on the screen.
-
- @param[in] This The pointer to the Boot Logo Protocol 2 instance
- @param[out] BltBuffer Returns pointer to the GOP BLT buffer that was
- previously registered with SetBootLogo2(). The
- buffer returned must not be modified or freed.
- @param[out] DestinationX Returns the X start position of the GOP BLT buffer
- that was previously registered with SetBootLogo2().
- @param[out] DestinationY Returns the Y start position of the GOP BLT buffer
- that was previously registered with SetBootLogo2().
- @param[out] Width Returns the width of the GOP BLT buffer
- that was previously registered with SetBootLogo2().
- @param[out] Height Returns the height of the GOP BLT buffer
- that was previously registered with SetBootLogo2().
-
- @retval EFI_SUCCESS The location of the boot logo was returned.
- @retval EFI_NOT_READY The boot logo has not been set.
- @retval EFI_INVALID_PARAMETER BltBuffer is NULL.
- @retval EFI_INVALID_PARAMETER DestinationX is NULL.
- @retval EFI_INVALID_PARAMETER DestinationY is NULL.
- @retval EFI_INVALID_PARAMETER Width is NULL.
- @retval EFI_INVALID_PARAMETER Height is NULL.
-**/
-EFI_STATUS
-EFIAPI
-GetBootLogo2 (
- IN EDKII_BOOT_LOGO2_PROTOCOL *This,
- OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL **BltBuffer,
- OUT UINTN *DestinationX,
- OUT UINTN *DestinationY,
- OUT UINTN *Width,
- OUT UINTN *Height
- )
-{
- //
- // If the boot logo has not been set with SetBootLogo() or SetBootLogo() was
- // called with a NULL BltBuffer then the boot logo is not valid and
- // EFI_NOT_READY is returned.
- //
- if (mLogoBltBuffer == NULL) {
- DEBUG ((DEBUG_ERROR, "Request to get boot logo location before boot logo has been set.\n"));
- return EFI_NOT_READY;
- }
-
- //
- // Make sure none of the boot logo location parameters are NULL.
- //
- if ((BltBuffer == NULL) || (DestinationX == NULL) || (DestinationY == NULL) ||
- (Width == NULL) || (Height == NULL))
- {
- return EFI_INVALID_PARAMETER;
- }
-
- //
- // Boot logo is valid. Return values from module globals.
- //
- *BltBuffer = mLogoBltBuffer;
- *DestinationX = mLogoDestX;
- *DestinationY = mLogoDestY;
- *Width = mLogoWidth;
- *Height = mLogoHeight;
-
- return EFI_SUCCESS;
-}
-
-/**
- Notify function for event group EFI_EVENT_GROUP_READY_TO_BOOT. This is used to
- install the Boot Graphics Resource Table.
-
- @param[in] Event The Event that is being processed.
- @param[in] Context The Event Context.
-
-**/
-VOID
-EFIAPI
-BgrtReadyToBootEventNotify (
- IN EFI_EVENT Event,
- IN VOID *Context
- )
-{
- EFI_STATUS Status;
- EFI_ACPI_TABLE_PROTOCOL *AcpiTableProtocol;
- VOID *ImageBuffer;
- UINT32 BmpSize;
-
- //
- // Get ACPI Table protocol.
- //
- Status = gBS->LocateProtocol (
- &gEfiAcpiTableProtocolGuid,
- NULL,
- (VOID **)&AcpiTableProtocol
- );
- if (EFI_ERROR (Status)) {
- return;
- }
-
- //
- // Check whether Boot Graphics Resource Table is already installed.
- //
- if (mAcpiBgrtInstalled) {
- if (!mAcpiBgrtStatusChanged && !mAcpiBgrtBufferChanged) {
- //
- // Nothing has changed
- //
- return;
- } else {
- //
- // If BGRT data change happens, then uninstall orignal AcpiTable first
- //
- Status = AcpiTableProtocol->UninstallAcpiTable (
- AcpiTableProtocol,
- mBootGraphicsResourceTableKey
- );
- if (EFI_ERROR (Status)) {
- return;
- }
- }
- } else {
- //
- // Check whether Logo exists
- //
- if (mLogoBltBuffer == NULL) {
- return;
- }
- }
-
- if (mAcpiBgrtBufferChanged) {
- //
- // Free the old BMP image buffer
- //
- ImageBuffer = (UINT8 *)(UINTN)mBootGraphicsResourceTableTemplate.ImageAddress;
- if (ImageBuffer != NULL) {
- FreePool (ImageBuffer);
- }
-
- //
- // Convert GOP Blt buffer to BMP image. Pass in ImageBuffer set to NULL
- // so the BMP image is allocated by TranslateGopBltToBmp().
- //
- ImageBuffer = NULL;
- Status = TranslateGopBltToBmp (
- mLogoBltBuffer,
- (UINT32)mLogoHeight,
- (UINT32)mLogoWidth,
- &ImageBuffer,
- &BmpSize
- );
- if (EFI_ERROR (Status)) {
- return;
- }
-
- //
- // Free the logo buffer
- //
- FreePool (mLogoBltBuffer);
- mLogoBltBuffer = NULL;
-
- //
- // Update BMP image fields of the Boot Graphics Resource Table
- //
- mBootGraphicsResourceTableTemplate.ImageAddress = (UINT64)(UINTN)ImageBuffer;
- mBootGraphicsResourceTableTemplate.ImageOffsetX = (UINT32)mLogoDestX;
- mBootGraphicsResourceTableTemplate.ImageOffsetY = (UINT32)mLogoDestY;
- }
-
- //
- // Update Status field of Boot Graphics Resource Table
- //
- if (mIsLogoValid) {
- mBootGraphicsResourceTableTemplate.Status = EFI_ACPI_5_0_BGRT_STATUS_VALID;
- } else {
- mBootGraphicsResourceTableTemplate.Status = EFI_ACPI_5_0_BGRT_STATUS_INVALID;
- }
-
- //
- // Update Checksum of Boot Graphics Resource Table
- //
- mBootGraphicsResourceTableTemplate.Header.Checksum = 0;
- mBootGraphicsResourceTableTemplate.Header.Checksum =
- CalculateCheckSum8 (
- (UINT8 *)&mBootGraphicsResourceTableTemplate,
- sizeof (EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE)
- );
-
- //
- // Publish Boot Graphics Resource Table.
- //
- Status = AcpiTableProtocol->InstallAcpiTable (
- AcpiTableProtocol,
- &mBootGraphicsResourceTableTemplate,
- sizeof (EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE),
- &mBootGraphicsResourceTableKey
- );
- if (EFI_ERROR (Status)) {
- return;
- }
-
- mAcpiBgrtInstalled = TRUE;
- mAcpiBgrtStatusChanged = FALSE;
- mAcpiBgrtBufferChanged = FALSE;
-}
-
-/**
- The module Entry Point of the Boot Graphics Resource Table DXE driver.
-
- @param[in] ImageHandle The firmware allocated handle for the EFI image.
- @param[in] SystemTable A pointer to the EFI System Table.
-
- @retval EFI_SUCCESS The entry point is executed successfully.
- @retval Other Some error occurs when executing this entry point.
-
-**/
-EFI_STATUS
-EFIAPI
-BootGraphicsDxeEntryPoint (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
- )
-{
- EFI_STATUS Status;
- EFI_ACPI_DESCRIPTION_HEADER *Header;
-
- //
- // Update Header fields of Boot Graphics Resource Table from PCDs
- //
- Header = &mBootGraphicsResourceTableTemplate.Header;
- ZeroMem (Header->OemId, sizeof (Header->OemId));
- CopyMem (
- Header->OemId,
- PcdGetPtr (PcdAcpiDefaultOemId),
- MIN (PcdGetSize (PcdAcpiDefaultOemId), sizeof (Header->OemId))
- );
- WriteUnaligned64 (&Header->OemTableId, PcdGet64 (PcdAcpiDefaultOemTableId));
- Header->OemRevision = PcdGet32 (PcdAcpiDefaultOemRevision);
- Header->CreatorId = PcdGet32 (PcdAcpiDefaultCreatorId);
- Header->CreatorRevision = PcdGet32 (PcdAcpiDefaultCreatorRevision);
-
- //
- // Install Boot Logo and Boot Logo 2 Protocols.
- //
- Status = gBS->InstallMultipleProtocolInterfaces (
- &mBootLogoHandle,
- &gEfiBootLogoProtocolGuid,
- &mBootLogoProtocolTemplate,
- &gEdkiiBootLogo2ProtocolGuid,
- &mBootLogo2ProtocolTemplate,
- NULL
- );
- ASSERT_EFI_ERROR (Status);
-
- //
- // Register notify function to install BGRT on ReadyToBoot Event.
- //
- Status = gBS->CreateEventEx (
- EVT_NOTIFY_SIGNAL,
- TPL_CALLBACK,
- BgrtReadyToBootEventNotify,
- NULL,
- &gEfiEventReadyToBootGuid,
- &mBootGraphicsReadyToBootEvent
- );
- ASSERT_EFI_ERROR (Status);
-
- return Status;
-}
+/** @file
+ This module install ACPI Boot Graphics Resource Table (BGRT).
+
+ Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2016, Microsoft Corporation<BR>
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#include <Uefi.h>
+
+#include <IndustryStandard/Acpi.h>
+
+#include <Protocol/AcpiTable.h>
+#include <Protocol/GraphicsOutput.h>
+#include <Protocol/BootLogo.h>
+#include <Protocol/BootLogo2.h>
+
+#include <Guid/EventGroup.h>
+
+#include <Library/BaseLib.h>
+#include <Library/BaseMemoryLib.h>
+#include <Library/MemoryAllocationLib.h>
+#include <Library/UefiBootServicesTableLib.h>
+#include <Library/DebugLib.h>
+#include <Library/PcdLib.h>
+#include <Library/SafeIntLib.h>
+#include <Library/BmpSupportLib.h>
+
+/**
+ Update information of logo image drawn on screen.
+
+ @param[in] This The pointer to the Boot Logo protocol 2 instance.
+ @param[in] BltBuffer The BLT buffer for logo drawn on screen. If BltBuffer
+ is set to NULL, it indicates that logo image is no
+ longer on the screen.
+ @param[in] DestinationX X coordinate of destination for the BltBuffer.
+ @param[in] DestinationY Y coordinate of destination for the BltBuffer.
+ @param[in] Width Width of rectangle in BltBuffer in pixels.
+ @param[in] Height Hight of rectangle in BltBuffer in pixels.
+
+ @retval EFI_SUCCESS The boot logo information was updated.
+ @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.
+ @retval EFI_OUT_OF_RESOURCES The logo information was not updated due to
+ insufficient memory resources.
+**/
+EFI_STATUS
+EFIAPI
+SetBootLogo (
+ IN EFI_BOOT_LOGO_PROTOCOL *This,
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL,
+ IN UINTN DestinationX,
+ IN UINTN DestinationY,
+ IN UINTN Width,
+ IN UINTN Height
+ );
+
+/**
+ Update information of logo image drawn on screen.
+
+ @param[in] This The pointer to the Boot Logo protocol 2 instance.
+ @param[in] BltBuffer The BLT buffer for logo drawn on screen. If BltBuffer
+ is set to NULL, it indicates that logo image is no
+ longer on the screen.
+ @param[in] DestinationX X coordinate of destination for the BltBuffer.
+ @param[in] DestinationY Y coordinate of destination for the BltBuffer.
+ @param[in] Width Width of rectangle in BltBuffer in pixels.
+ @param[in] Height Hight of rectangle in BltBuffer in pixels.
+
+ @retval EFI_SUCCESS The boot logo information was updated.
+ @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.
+ @retval EFI_OUT_OF_RESOURCES The logo information was not updated due to
+ insufficient memory resources.
+**/
+EFI_STATUS
+EFIAPI
+SetBootLogo2 (
+ IN EDKII_BOOT_LOGO2_PROTOCOL *This,
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL,
+ IN UINTN DestinationX,
+ IN UINTN DestinationY,
+ IN UINTN Width,
+ IN UINTN Height
+ );
+
+/**
+ Get the location of the boot logo on the screen.
+
+ @param[in] This The pointer to the Boot Logo Protocol 2 instance
+ @param[out] BltBuffer Returns pointer to the GOP BLT buffer that was
+ previously registered with SetBootLogo2(). The
+ buffer returned must not be modified or freed.
+ @param[out] DestinationX Returns the X start position of the GOP BLT buffer
+ that was previously registered with SetBootLogo2().
+ @param[out] DestinationY Returns the Y start position of the GOP BLT buffer
+ that was previously registered with SetBootLogo2().
+ @param[out] Width Returns the width of the GOP BLT buffer
+ that was previously registered with SetBootLogo2().
+ @param[out] Height Returns the height of the GOP BLT buffer
+ that was previously registered with SetBootLogo2().
+
+ @retval EFI_SUCCESS The location of the boot logo was returned.
+ @retval EFI_NOT_READY The boot logo has not been set.
+ @retval EFI_INVALID_PARAMETER BltBuffer is NULL.
+ @retval EFI_INVALID_PARAMETER DestinationX is NULL.
+ @retval EFI_INVALID_PARAMETER DestinationY is NULL.
+ @retval EFI_INVALID_PARAMETER Width is NULL.
+ @retval EFI_INVALID_PARAMETER Height is NULL.
+**/
+EFI_STATUS
+EFIAPI
+GetBootLogo2 (
+ IN EDKII_BOOT_LOGO2_PROTOCOL *This,
+ OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL **BltBuffer,
+ OUT UINTN *DestinationX,
+ OUT UINTN *DestinationY,
+ OUT UINTN *Width,
+ OUT UINTN *Height
+ );
+
+//
+// Boot Logo Protocol Handle
+//
+EFI_HANDLE mBootLogoHandle = NULL;
+
+//
+// Boot Logo Protocol Instance
+//
+EFI_BOOT_LOGO_PROTOCOL mBootLogoProtocolTemplate = {
+ SetBootLogo
+};
+
+///
+/// Boot Logo 2 Protocol instance
+///
+EDKII_BOOT_LOGO2_PROTOCOL mBootLogo2ProtocolTemplate = {
+ SetBootLogo2,
+ GetBootLogo2
+};
+
+EFI_EVENT mBootGraphicsReadyToBootEvent;
+UINTN mBootGraphicsResourceTableKey = 0;
+BOOLEAN mIsLogoValid = FALSE;
+EFI_GRAPHICS_OUTPUT_BLT_PIXEL *mLogoBltBuffer = NULL;
+UINTN mLogoDestX = 0;
+UINTN mLogoDestY = 0;
+UINTN mLogoWidth = 0;
+UINTN mLogoHeight = 0;
+BOOLEAN mAcpiBgrtInstalled = FALSE;
+BOOLEAN mAcpiBgrtStatusChanged = FALSE;
+BOOLEAN mAcpiBgrtBufferChanged = FALSE;
+
+//
+// ACPI Boot Graphics Resource Table template
+//
+EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE mBootGraphicsResourceTableTemplate = {
+ {
+ EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE,
+ sizeof (EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE),
+ EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION, // Revision
+ 0x00, // Checksum will be updated at runtime
+ //
+ // It is expected that these values will be updated at EntryPoint.
+ //
+ { 0x00 }, // OEM ID is a 6 bytes long field
+ 0x00, // OEM Table ID(8 bytes long)
+ 0x00, // OEM Revision
+ 0x00, // Creator ID
+ 0x00, // Creator Revision
+ },
+ EFI_ACPI_5_0_BGRT_VERSION, // Version
+ EFI_ACPI_5_0_BGRT_STATUS_VALID, // Status
+ EFI_ACPI_5_0_BGRT_IMAGE_TYPE_BMP, // Image Type
+ 0, // Image Address
+ 0, // Image Offset X
+ 0 // Image Offset Y
+};
+
+/**
+ Update information of logo image drawn on screen.
+
+ @param This The pointer to the Boot Logo protocol instance.
+ @param BltBuffer The BLT buffer for logo drawn on screen. If BltBuffer
+ is set to NULL, it indicates that logo image is no
+ longer on the screen.
+ @param DestinationX X coordinate of destination for the BltBuffer.
+ @param DestinationY Y coordinate of destination for the BltBuffer.
+ @param Width Width of rectangle in BltBuffer in pixels.
+ @param Height Hight of rectangle in BltBuffer in pixels.
+
+ @retval EFI_SUCCESS The boot logo information was updated.
+ @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.
+ @retval EFI_OUT_OF_RESOURCES The logo information was not updated due to
+ insufficient memory resources.
+
+**/
+EFI_STATUS
+EFIAPI
+SetBootLogo (
+ IN EFI_BOOT_LOGO_PROTOCOL *This,
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL,
+ IN UINTN DestinationX,
+ IN UINTN DestinationY,
+ IN UINTN Width,
+ IN UINTN Height
+ )
+{
+ //
+ // Call same service in Boot Logo 2 Protocol
+ //
+ return SetBootLogo2 (
+ &mBootLogo2ProtocolTemplate,
+ BltBuffer,
+ DestinationX,
+ DestinationY,
+ Width,
+ Height
+ );
+}
+
+/**
+ Update information of logo image drawn on screen.
+
+ @param[in] This The pointer to the Boot Logo protocol 2 instance.
+ @param[in] BltBuffer The BLT buffer for logo drawn on screen. If BltBuffer
+ is set to NULL, it indicates that logo image is no
+ longer on the screen.
+ @param[in] DestinationX X coordinate of destination for the BltBuffer.
+ @param[in] DestinationY Y coordinate of destination for the BltBuffer.
+ @param[in] Width Width of rectangle in BltBuffer in pixels.
+ @param[in] Height Hight of rectangle in BltBuffer in pixels.
+
+ @retval EFI_SUCCESS The boot logo information was updated.
+ @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.
+ @retval EFI_OUT_OF_RESOURCES The logo information was not updated due to
+ insufficient memory resources.
+**/
+EFI_STATUS
+EFIAPI
+SetBootLogo2 (
+ IN EDKII_BOOT_LOGO2_PROTOCOL *This,
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL,
+ IN UINTN DestinationX,
+ IN UINTN DestinationY,
+ IN UINTN Width,
+ IN UINTN Height
+ )
+{
+ EFI_STATUS Status;
+ UINTN BufferSize;
+ UINT32 Result32;
+
+ if (BltBuffer == NULL) {
+ mIsLogoValid = FALSE;
+ mAcpiBgrtStatusChanged = TRUE;
+ return EFI_SUCCESS;
+ }
+
+ //
+ // Width and height are not allowed to be zero.
+ //
+ if ((Width == 0) || (Height == 0)) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ //
+ // Verify destination, width, and height do not overflow 32-bit values.
+ // The Boot Graphics Resource Table only has 32-bit fields for these values.
+ //
+ Status = SafeUintnToUint32 (DestinationX, &Result32);
+ if (EFI_ERROR (Status)) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ Status = SafeUintnToUint32 (DestinationY, &Result32);
+ if (EFI_ERROR (Status)) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ Status = SafeUintnToUint32 (Width, &Result32);
+ if (EFI_ERROR (Status)) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ Status = SafeUintnToUint32 (Height, &Result32);
+ if (EFI_ERROR (Status)) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ //
+ // Ensure the Height * Width * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL) does
+ // not overflow UINTN
+ //
+ Status = SafeUintnMult (
+ Width,
+ Height,
+ &BufferSize
+ );
+ if (EFI_ERROR (Status)) {
+ return EFI_UNSUPPORTED;
+ }
+
+ Status = SafeUintnMult (
+ BufferSize,
+ sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL),
+ &BufferSize
+ );
+ if (EFI_ERROR (Status)) {
+ return EFI_UNSUPPORTED;
+ }
+
+ //
+ // Update state
+ //
+ mAcpiBgrtBufferChanged = TRUE;
+
+ //
+ // Free old logo buffer
+ //
+ if (mLogoBltBuffer != NULL) {
+ FreePool (mLogoBltBuffer);
+ mLogoBltBuffer = NULL;
+ }
+
+ //
+ // Allocate new logo buffer
+ //
+ mLogoBltBuffer = AllocateCopyPool (BufferSize, BltBuffer);
+ if (mLogoBltBuffer == NULL) {
+ return EFI_OUT_OF_RESOURCES;
+ }
+
+ mLogoDestX = DestinationX;
+ mLogoDestY = DestinationY;
+ mLogoWidth = Width;
+ mLogoHeight = Height;
+ mIsLogoValid = TRUE;
+
+ return EFI_SUCCESS;
+}
+
+/**
+ Get the location of the boot logo on the screen.
+
+ @param[in] This The pointer to the Boot Logo Protocol 2 instance
+ @param[out] BltBuffer Returns pointer to the GOP BLT buffer that was
+ previously registered with SetBootLogo2(). The
+ buffer returned must not be modified or freed.
+ @param[out] DestinationX Returns the X start position of the GOP BLT buffer
+ that was previously registered with SetBootLogo2().
+ @param[out] DestinationY Returns the Y start position of the GOP BLT buffer
+ that was previously registered with SetBootLogo2().
+ @param[out] Width Returns the width of the GOP BLT buffer
+ that was previously registered with SetBootLogo2().
+ @param[out] Height Returns the height of the GOP BLT buffer
+ that was previously registered with SetBootLogo2().
+
+ @retval EFI_SUCCESS The location of the boot logo was returned.
+ @retval EFI_NOT_READY The boot logo has not been set.
+ @retval EFI_INVALID_PARAMETER BltBuffer is NULL.
+ @retval EFI_INVALID_PARAMETER DestinationX is NULL.
+ @retval EFI_INVALID_PARAMETER DestinationY is NULL.
+ @retval EFI_INVALID_PARAMETER Width is NULL.
+ @retval EFI_INVALID_PARAMETER Height is NULL.
+**/
+EFI_STATUS
+EFIAPI
+GetBootLogo2 (
+ IN EDKII_BOOT_LOGO2_PROTOCOL *This,
+ OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL **BltBuffer,
+ OUT UINTN *DestinationX,
+ OUT UINTN *DestinationY,
+ OUT UINTN *Width,
+ OUT UINTN *Height
+ )
+{
+ //
+ // If the boot logo has not been set with SetBootLogo() or SetBootLogo() was
+ // called with a NULL BltBuffer then the boot logo is not valid and
+ // EFI_NOT_READY is returned.
+ //
+ if (mLogoBltBuffer == NULL) {
+ DEBUG ((DEBUG_ERROR, "Request to get boot logo location before boot logo has been set.\n"));
+ return EFI_NOT_READY;
+ }
+
+ //
+ // Make sure none of the boot logo location parameters are NULL.
+ //
+ if ((BltBuffer == NULL) || (DestinationX == NULL) || (DestinationY == NULL) ||
+ (Width == NULL) || (Height == NULL))
+ {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ //
+ // Boot logo is valid. Return values from module globals.
+ //
+ *BltBuffer = mLogoBltBuffer;
+ *DestinationX = mLogoDestX;
+ *DestinationY = mLogoDestY;
+ *Width = mLogoWidth;
+ *Height = mLogoHeight;
+
+ return EFI_SUCCESS;
+}
+
+/**
+ Notify function for event group EFI_EVENT_GROUP_READY_TO_BOOT. This is used to
+ install the Boot Graphics Resource Table.
+
+ @param[in] Event The Event that is being processed.
+ @param[in] Context The Event Context.
+
+**/
+VOID
+EFIAPI
+BgrtReadyToBootEventNotify (
+ IN EFI_EVENT Event,
+ IN VOID *Context
+ )
+{
+ EFI_STATUS Status;
+ EFI_ACPI_TABLE_PROTOCOL *AcpiTableProtocol;
+ VOID *ImageBuffer;
+ UINT32 BmpSize;
+
+ //
+ // Get ACPI Table protocol.
+ //
+ Status = gBS->LocateProtocol (
+ &gEfiAcpiTableProtocolGuid,
+ NULL,
+ (VOID **)&AcpiTableProtocol
+ );
+ if (EFI_ERROR (Status)) {
+ return;
+ }
+
+ //
+ // Check whether Boot Graphics Resource Table is already installed.
+ //
+ if (mAcpiBgrtInstalled) {
+ if (!mAcpiBgrtStatusChanged && !mAcpiBgrtBufferChanged) {
+ //
+ // Nothing has changed
+ //
+ return;
+ } else {
+ //
+ // If BGRT data change happens, then uninstall orignal AcpiTable first
+ //
+ Status = AcpiTableProtocol->UninstallAcpiTable (
+ AcpiTableProtocol,
+ mBootGraphicsResourceTableKey
+ );
+ if (EFI_ERROR (Status)) {
+ return;
+ }
+ }
+ } else {
+ //
+ // Check whether Logo exists
+ //
+ if (mLogoBltBuffer == NULL) {
+ return;
+ }
+ }
+
+ if (mAcpiBgrtBufferChanged) {
+ //
+ // Free the old BMP image buffer
+ //
+ ImageBuffer = (UINT8 *)(UINTN)mBootGraphicsResourceTableTemplate.ImageAddress;
+ if (ImageBuffer != NULL) {
+ FreePool (ImageBuffer);
+ }
+
+ //
+ // Convert GOP Blt buffer to BMP image. Pass in ImageBuffer set to NULL
+ // so the BMP image is allocated by TranslateGopBltToBmp().
+ //
+ ImageBuffer = NULL;
+ Status = TranslateGopBltToBmp (
+ mLogoBltBuffer,
+ (UINT32)mLogoHeight,
+ (UINT32)mLogoWidth,
+ &ImageBuffer,
+ &BmpSize
+ );
+ if (EFI_ERROR (Status)) {
+ return;
+ }
+
+ //
+ // Free the logo buffer
+ //
+ FreePool (mLogoBltBuffer);
+ mLogoBltBuffer = NULL;
+
+ //
+ // Update BMP image fields of the Boot Graphics Resource Table
+ //
+ mBootGraphicsResourceTableTemplate.ImageAddress = (UINT64)(UINTN)ImageBuffer;
+ mBootGraphicsResourceTableTemplate.ImageOffsetX = (UINT32)mLogoDestX;
+ mBootGraphicsResourceTableTemplate.ImageOffsetY = (UINT32)mLogoDestY;
+ }
+
+ //
+ // Update Status field of Boot Graphics Resource Table
+ //
+ if (mIsLogoValid) {
+ mBootGraphicsResourceTableTemplate.Status = EFI_ACPI_5_0_BGRT_STATUS_VALID;
+ } else {
+ mBootGraphicsResourceTableTemplate.Status = EFI_ACPI_5_0_BGRT_STATUS_INVALID;
+ }
+
+ //
+ // Update Checksum of Boot Graphics Resource Table
+ //
+ mBootGraphicsResourceTableTemplate.Header.Checksum = 0;
+ mBootGraphicsResourceTableTemplate.Header.Checksum =
+ CalculateCheckSum8 (
+ (UINT8 *)&mBootGraphicsResourceTableTemplate,
+ sizeof (EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE)
+ );
+
+ //
+ // Publish Boot Graphics Resource Table.
+ //
+ Status = AcpiTableProtocol->InstallAcpiTable (
+ AcpiTableProtocol,
+ &mBootGraphicsResourceTableTemplate,
+ sizeof (EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE),
+ &mBootGraphicsResourceTableKey
+ );
+ if (EFI_ERROR (Status)) {
+ return;
+ }
+
+ mAcpiBgrtInstalled = TRUE;
+ mAcpiBgrtStatusChanged = FALSE;
+ mAcpiBgrtBufferChanged = FALSE;
+}
+
+/**
+ The module Entry Point of the Boot Graphics Resource Table DXE driver.
+
+ @param[in] ImageHandle The firmware allocated handle for the EFI image.
+ @param[in] SystemTable A pointer to the EFI System Table.
+
+ @retval EFI_SUCCESS The entry point is executed successfully.
+ @retval Other Some error occurs when executing this entry point.
+
+**/
+EFI_STATUS
+EFIAPI
+BootGraphicsDxeEntryPoint (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable
+ )
+{
+ EFI_STATUS Status;
+ EFI_ACPI_DESCRIPTION_HEADER *Header;
+
+ //
+ // Update Header fields of Boot Graphics Resource Table from PCDs
+ //
+ Header = &mBootGraphicsResourceTableTemplate.Header;
+ ZeroMem (Header->OemId, sizeof (Header->OemId));
+ CopyMem (
+ Header->OemId,
+ PcdGetPtr (PcdAcpiDefaultOemId),
+ MIN (PcdGetSize (PcdAcpiDefaultOemId), sizeof (Header->OemId))
+ );
+ WriteUnaligned64 (&Header->OemTableId, PcdGet64 (PcdAcpiDefaultOemTableId));
+ Header->OemRevision = PcdGet32 (PcdAcpiDefaultOemRevision);
+ Header->CreatorId = PcdGet32 (PcdAcpiDefaultCreatorId);
+ Header->CreatorRevision = PcdGet32 (PcdAcpiDefaultCreatorRevision);
+
+ //
+ // Install Boot Logo and Boot Logo 2 Protocols.
+ //
+ Status = gBS->InstallMultipleProtocolInterfaces (
+ &mBootLogoHandle,
+ &gEfiBootLogoProtocolGuid,
+ &mBootLogoProtocolTemplate,
+ &gEdkiiBootLogo2ProtocolGuid,
+ &mBootLogo2ProtocolTemplate,
+ NULL
+ );
+ ASSERT_EFI_ERROR (Status);
+
+ //
+ // Register notify function to install BGRT on ReadyToBoot Event.
+ //
+ Status = gBS->CreateEventEx (
+ EVT_NOTIFY_SIGNAL,
+ TPL_CALLBACK,
+ BgrtReadyToBootEventNotify,
+ NULL,
+ &gEfiEventReadyToBootGuid,
+ &mBootGraphicsReadyToBootEvent
+ );
+ ASSERT_EFI_ERROR (Status);
+
+ return Status;
+}
diff --git a/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf b/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf
index 911092fc92..7031409982 100644
--- a/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf
+++ b/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf
@@ -1,60 +1,60 @@
-## @file
-# This module install ACPI Boot Graphics Resource Table (BGRT).
-#
-# Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
-# Copyright (c) 2016, Microsoft Corporation<BR>
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-[Defines]
- INF_VERSION = 0x00010005
- BASE_NAME = BootGraphicsResourceTableDxe
- MODULE_UNI_FILE = BootGraphicsResourceTableDxe.uni
- FILE_GUID = B8E62775-BB0A-43f0-A843-5BE8B14F8CCD
- MODULE_TYPE = UEFI_DRIVER
- VERSION_STRING = 1.0
- ENTRY_POINT = BootGraphicsDxeEntryPoint
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-# VALID_ARCHITECTURES = IA32 X64 EBC
-#
-
-[Sources]
- BootGraphicsResourceTableDxe.c
-
-[Packages]
- MdePkg/MdePkg.dec
- MdeModulePkg/MdeModulePkg.dec
-
-[LibraryClasses]
- UefiDriverEntryPoint
- BaseLib
- BaseMemoryLib
- MemoryAllocationLib
- UefiLib
- UefiBootServicesTableLib
- DebugLib
- PcdLib
- SafeIntLib
- BmpSupportLib
-
-[Protocols]
- gEfiAcpiTableProtocolGuid ## CONSUMES
- gEfiBootLogoProtocolGuid ## PRODUCES
- gEdkiiBootLogo2ProtocolGuid ## PRODUCES
-
-[Pcd]
- gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemId ## CONSUMES
- gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemTableId ## CONSUMES
- gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemRevision ## CONSUMES
- gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorId ## CONSUMES
- gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorRevision ## CONSUMES
-
-[Guids]
- gEfiEventReadyToBootGuid ## CONSUMES ## Event
-
-[UserExtensions.TianoCore."ExtraFiles"]
- BootGraphicsResourceTableDxeExtra.uni
+## @file
+# This module install ACPI Boot Graphics Resource Table (BGRT).
+#
+# Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2016, Microsoft Corporation<BR>
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+ INF_VERSION = 0x00010005
+ BASE_NAME = BootGraphicsResourceTableDxe
+ MODULE_UNI_FILE = BootGraphicsResourceTableDxe.uni
+ FILE_GUID = B8E62775-BB0A-43f0-A843-5BE8B14F8CCD
+ MODULE_TYPE = UEFI_DRIVER
+ VERSION_STRING = 1.0
+ ENTRY_POINT = BootGraphicsDxeEntryPoint
+
+#
+# The following information is for reference only and not required by the build tools.
+#
+# VALID_ARCHITECTURES = IA32 X64 EBC
+#
+
+[Sources]
+ BootGraphicsResourceTableDxe.c
+
+[Packages]
+ MdePkg/MdePkg.dec
+ MdeModulePkg/MdeModulePkg.dec
+
+[LibraryClasses]
+ UefiDriverEntryPoint
+ BaseLib
+ BaseMemoryLib
+ MemoryAllocationLib
+ UefiLib
+ UefiBootServicesTableLib
+ DebugLib
+ PcdLib
+ SafeIntLib
+ BmpSupportLib
+
+[Protocols]
+ gEfiAcpiTableProtocolGuid ## CONSUMES
+ gEfiBootLogoProtocolGuid ## PRODUCES
+ gEdkiiBootLogo2ProtocolGuid ## PRODUCES
+
+[Pcd]
+ gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemId ## CONSUMES
+ gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemTableId ## CONSUMES
+ gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemRevision ## CONSUMES
+ gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorId ## CONSUMES
+ gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorRevision ## CONSUMES
+
+[Guids]
+ gEfiEventReadyToBootGuid ## CONSUMES ## Event
+
+[UserExtensions.TianoCore."ExtraFiles"]
+ BootGraphicsResourceTableDxeExtra.uni
diff --git a/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.uni b/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.uni
index 0a94edae40..ffec88dc74 100644
--- a/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.uni
+++ b/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.uni
@@ -1,16 +1,16 @@
-// /** @file
-// This module install ACPI Boot Graphics Resource Table (BGRT).
-//
-// This module installs the ACPI Boot Graphics Resource Table (BGRT).
-//
-// Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
-//
-// SPDX-License-Identifier: BSD-2-Clause-Patent
-//
-// **/
-
-
-#string STR_MODULE_ABSTRACT #language en-US "Installs ACPI Boot Graphics Resource Table (BGRT)"
-
-#string STR_MODULE_DESCRIPTION #language en-US "This module installs the ACPI Boot Graphics Resource Table (BGRT)."
-
+// /** @file
+// This module install ACPI Boot Graphics Resource Table (BGRT).
+//
+// This module installs the ACPI Boot Graphics Resource Table (BGRT).
+//
+// Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
+//
+// SPDX-License-Identifier: BSD-2-Clause-Patent
+//
+// **/
+
+
+#string STR_MODULE_ABSTRACT #language en-US "Installs ACPI Boot Graphics Resource Table (BGRT)"
+
+#string STR_MODULE_DESCRIPTION #language en-US "This module installs the ACPI Boot Graphics Resource Table (BGRT)."
+
diff --git a/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxeExtra.uni b/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxeExtra.uni
index e4956d4a0e..16e1b23a03 100644
--- a/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxeExtra.uni
+++ b/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxeExtra.uni
@@ -1,14 +1,14 @@
-// /** @file
-// BootGraphicsResourceTableDxe Localized Strings and Content
-//
-// Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
-//
-// SPDX-License-Identifier: BSD-2-Clause-Patent
-//
-// **/
-
-#string STR_PROPERTIES_MODULE_NAME
-#language en-US
-"ACPI Boot Graphics Resource Table DXE Driver"
-
-
+// /** @file
+// BootGraphicsResourceTableDxe Localized Strings and Content
+//
+// Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
+//
+// SPDX-License-Identifier: BSD-2-Clause-Patent
+//
+// **/
+
+#string STR_PROPERTIES_MODULE_NAME
+#language en-US
+"ACPI Boot Graphics Resource Table DXE Driver"
+
+