--- /dev/null
+/**\r
+Boot Logo 2 Protocol is used to convey information of Logo dispayed during boot.\r
+\r
+The Boot Logo 2 Protocol is a replacement for the Boot Logo Protocol. If a\r
+platform produces both the Boot Logo 2 Protocol and the Boot Logo Protocol\r
+then the Boot Logo 2 Protocol must be used instead of the Boot Logo Protocol.\r
+\r
+Copyright (c) 2016, Microsoft Corporation\r
+Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>\r
+\r
+All rights reserved.\r
+Redistribution and use in source and binary forms, with or without\r
+modification, are permitted provided that the following conditions are met:\r
+1. Redistributions of source code must retain the above copyright notice,\r
+this list of conditions and the following disclaimer.\r
+2. Redistributions in binary form must reproduce the above copyright notice,\r
+this list of conditions and the following disclaimer in the documentation\r
+ and/or other materials provided with the distribution.\r
+\r
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND\r
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\r
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\r
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\r
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\r
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\r
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\r
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+\r
+**/\r
+\r
+#ifndef _BOOT_LOGO2_H_\r
+#define _BOOT_LOGO2_H_\r
+\r
+#include <Protocol/GraphicsOutput.h>\r
+\r
+#define EDKII_BOOT_LOGO2_PROTOCOL_GUID \\r
+ { \\r
+ 0x4b5dc1df, 0x1eaa, 0x48b2, { 0xa7, 0xe9, 0xea, 0xc4, 0x89, 0xa0, 0xb, 0x5c } \\r
+ }\r
+\r
+//\r
+// Forward reference for pure ANSI compatability\r
+//\r
+typedef struct _EDKII_BOOT_LOGO2_PROTOCOL EDKII_BOOT_LOGO2_PROTOCOL;\r
+\r
+/**\r
+ Update information of logo image drawn on screen.\r
+\r
+ @param[in] This The pointer to the Boot Logo protocol 2 instance.\r
+ @param[in] BltBuffer The BLT buffer for logo drawn on screen. If BltBuffer\r
+ is set to NULL, it indicates that logo image is no\r
+ longer on the screen.\r
+ @param[in] DestinationX X coordinate of destination for the BltBuffer.\r
+ @param[in] DestinationY Y coordinate of destination for the BltBuffer.\r
+ @param[in] Width Width of rectangle in BltBuffer in pixels.\r
+ @param[in] Height Hight of rectangle in BltBuffer in pixels.\r
+\r
+ @retval EFI_SUCCESS The boot logo information was updated.\r
+ @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.\r
+ @retval EFI_OUT_OF_RESOURCES The logo information was not updated due to\r
+ insufficient memory resources.\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EDKII_SET_BOOT_LOGO2)(\r
+ IN EDKII_BOOT_LOGO2_PROTOCOL *This,\r
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer OPTIONAL,\r
+ IN UINTN DestinationX,\r
+ IN UINTN DestinationY,\r
+ IN UINTN Width,\r
+ IN UINTN Height\r
+ );\r
+\r
+/**\r
+ Get the location of the boot logo on the screen.\r
+\r
+ @param[in] This The pointer to the Boot Logo Protocol 2 instance\r
+ @param[out] BltBuffer Returns pointer to the GOP BLT buffer that was\r
+ previously registered with SetBootLogo2(). The\r
+ buffer returned must not be modified or freed.\r
+ @param[out] DestinationX Returns the X start position of the GOP BLT buffer\r
+ that was previously registered with SetBootLogo2().\r
+ @param[out] DestinationY Returns the Y start position of the GOP BLT buffer\r
+ that was previously registered with SetBootLogo2().\r
+ @param[out] Width Returns the width of the GOP BLT buffer\r
+ that was previously registered with SetBootLogo2().\r
+ @param[out] Height Returns the height of the GOP BLT buffer\r
+ that was previously registered with SetBootLogo2().\r
+\r
+ @retval EFI_SUCCESS The location of the boot logo was returned.\r
+ @retval EFI_NOT_READY The boot logo has not been set.\r
+ @retval EFI_INVALID_PARAMETER BltBuffer is NULL.\r
+ @retval EFI_INVALID_PARAMETER DestinationX is NULL.\r
+ @retval EFI_INVALID_PARAMETER DestinationY is NULL.\r
+ @retval EFI_INVALID_PARAMETER Width is NULL.\r
+ @retval EFI_INVALID_PARAMETER Height is NULL.\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EDKII_GET_BOOT_LOGO2)(\r
+ IN EDKII_BOOT_LOGO2_PROTOCOL *This,\r
+ OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL **BltBuffer,\r
+ OUT UINTN *DestinationX,\r
+ OUT UINTN *DestinationY,\r
+ OUT UINTN *Width,\r
+ OUT UINTN *Height\r
+ );\r
+\r
+struct _EDKII_BOOT_LOGO2_PROTOCOL {\r
+ EDKII_SET_BOOT_LOGO2 SetBootLogo;\r
+ EDKII_GET_BOOT_LOGO2 GetBootLogo;\r
+};\r
+\r
+extern EFI_GUID gEdkiiBootLogo2ProtocolGuid;\r
+\r
+#endif\r