https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Bob Feng <bob.c.feng@intel.com>
		
			
				
	
	
		
			188 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			188 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Graphics Output Protocol from the UEFI 2.0 specification.
 | |
| 
 | |
|   Abstraction of a very simple graphics device.
 | |
| 
 | |
|   Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
| 
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __GRAPHICS_OUTPUT_H__
 | |
| #define __GRAPHICS_OUTPUT_H__
 | |
| 
 | |
| #define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
 | |
|   { \
 | |
|     0x9042a9de, 0x23dc, 0x4a38, {0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a } \
 | |
|   }
 | |
| 
 | |
| typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL EFI_GRAPHICS_OUTPUT_PROTOCOL;
 | |
| 
 | |
| typedef struct {
 | |
|   UINT32            RedMask;
 | |
|   UINT32            GreenMask;
 | |
|   UINT32            BlueMask;
 | |
|   UINT32            ReservedMask;
 | |
| } EFI_PIXEL_BITMASK;
 | |
| 
 | |
| typedef enum {
 | |
|   PixelRedGreenBlueReserved8BitPerColor,
 | |
|   PixelBlueGreenRedReserved8BitPerColor,
 | |
|   PixelBitMask,
 | |
|   PixelBltOnly,
 | |
|   PixelFormatMax
 | |
| } EFI_GRAPHICS_PIXEL_FORMAT;
 | |
| 
 | |
| typedef struct {
 | |
|   UINT32                     Version;
 | |
|   UINT32                     HorizontalResolution;
 | |
|   UINT32                     VerticalResolution;
 | |
|   EFI_GRAPHICS_PIXEL_FORMAT  PixelFormat;
 | |
|   EFI_PIXEL_BITMASK          PixelInformation;
 | |
|   UINT32                     PixelsPerScanLine;
 | |
| } EFI_GRAPHICS_OUTPUT_MODE_INFORMATION;
 | |
| 
 | |
| /**
 | |
|   Return the current video mode information.
 | |
| 
 | |
|   @param  This       Protocol instance pointer.
 | |
|   @param  ModeNumber The mode number to return information on.
 | |
|   @param  SizeOfInfo A pointer to the size, in bytes, of the Info buffer.
 | |
|   @param  Info       A pointer to callee allocated buffer that returns information about ModeNumber.
 | |
| 
 | |
|   @retval EFI_SUCCESS           Mode information returned.
 | |
|   @retval EFI_BUFFER_TOO_SMALL  The Info buffer was too small.
 | |
|   @retval EFI_DEVICE_ERROR      A hardware error occurred trying to retrieve the video mode.
 | |
|   @retval EFI_NOT_STARTED       Video display is not initialized. Call SetMode ()
 | |
|   @retval EFI_INVALID_PARAMETER One of the input args was NULL.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE) (
 | |
|   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL          *This,
 | |
|   IN  UINT32                                ModeNumber,
 | |
|   OUT UINTN                                 *SizeOfInfo,
 | |
|   OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  **Info
 | |
|   )
 | |
| ;
 | |
| 
 | |
| /**
 | |
|   Return the current video mode information.
 | |
| 
 | |
|   @param  This              Protocol instance pointer.
 | |
|   @param  ModeNumber        The mode number to be set.
 | |
| 
 | |
|   @retval EFI_SUCCESS       Graphics mode was changed.
 | |
|   @retval EFI_DEVICE_ERROR  The device had an error and could not complete the request.
 | |
|   @retval EFI_UNSUPPORTED   ModeNumber is not supported by this device.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE) (
 | |
|   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
 | |
|   IN  UINT32                       ModeNumber
 | |
|   )
 | |
| ;
 | |
| 
 | |
| typedef struct {
 | |
|   UINT8 Blue;
 | |
|   UINT8 Green;
 | |
|   UINT8 Red;
 | |
|   UINT8 Reserved;
 | |
| } EFI_GRAPHICS_OUTPUT_BLT_PIXEL;
 | |
| 
 | |
| typedef union {
 | |
|   EFI_GRAPHICS_OUTPUT_BLT_PIXEL Pixel;
 | |
|   UINT32                        Raw;
 | |
| } EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION;
 | |
| 
 | |
| typedef enum {
 | |
|   EfiBltVideoFill,
 | |
|   EfiBltVideoToBltBuffer,
 | |
|   EfiBltBufferToVideo,
 | |
|   EfiBltVideoToVideo,
 | |
|   EfiGraphicsOutputBltOperationMax
 | |
| } EFI_GRAPHICS_OUTPUT_BLT_OPERATION;
 | |
| 
 | |
| /**
 | |
|   The following table defines actions for BltOperations:
 | |
| 
 | |
|   <B>EfiBltVideoFill</B> - Write data from the  BltBuffer pixel (SourceX, SourceY)
 | |
|   directly to every pixel of the video display rectangle
 | |
|   (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
 | |
|   Only one pixel will be used from the BltBuffer. Delta is NOT used.
 | |
| 
 | |
|   <B>EfiBltVideoToBltBuffer</B> - Read data from the video display rectangle
 | |
|   (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in
 | |
|   the BltBuffer rectangle (DestinationX, DestinationY )
 | |
|   (DestinationX + Width, DestinationY + Height). If DestinationX or
 | |
|   DestinationY is not zero then Delta must be set to the length in bytes
 | |
|   of a row in the BltBuffer.
 | |
| 
 | |
|   <B>EfiBltBufferToVideo</B> - Write data from the  BltBuffer rectangle
 | |
|   (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the
 | |
|   video display rectangle (DestinationX, DestinationY)
 | |
|   (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is
 | |
|   not zero then Delta must be set to the length in bytes of a row in the
 | |
|   BltBuffer.
 | |
| 
 | |
|   <B>EfiBltVideoToVideo</B> - Copy from the video display rectangle (SourceX, SourceY)
 | |
|   (SourceX + Width, SourceY + Height) .to the video display rectangle
 | |
|   (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
 | |
|   The BltBuffer and Delta  are not used in this mode.
 | |
| 
 | |
|   @param  This         Protocol instance pointer.
 | |
|   @param  BltBuffer    Buffer containing data to blit into video buffer. This
 | |
|                        buffer has a size of Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)
 | |
|   @param  BltOperation Operation to perform on BlitBuffer and video memory
 | |
|   @param  SourceX      X coordinate of source for the BltBuffer.
 | |
|   @param  SourceY      Y coordinate of source for the BltBuffer.
 | |
|   @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       Height of rectangle in BltBuffer in pixels.
 | |
|   @param  Delta        OPTIONAL
 | |
| 
 | |
|   @retval EFI_SUCCESS           The Blt operation completed.
 | |
|   @retval EFI_INVALID_PARAMETER BltOperation is not valid.
 | |
|   @retval EFI_DEVICE_ERROR      A hardware error occurred writing to the video buffer.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT) (
 | |
|   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL            *This,
 | |
|   IN  EFI_GRAPHICS_OUTPUT_BLT_PIXEL           *BltBuffer,   OPTIONAL
 | |
|   IN  EFI_GRAPHICS_OUTPUT_BLT_OPERATION       BltOperation,
 | |
|   IN  UINTN                                   SourceX,
 | |
|   IN  UINTN                                   SourceY,
 | |
|   IN  UINTN                                   DestinationX,
 | |
|   IN  UINTN                                   DestinationY,
 | |
|   IN  UINTN                                   Width,
 | |
|   IN  UINTN                                   Height,
 | |
|   IN  UINTN                                   Delta         OPTIONAL
 | |
|   );
 | |
| 
 | |
| typedef struct {
 | |
|   UINT32                                 MaxMode;
 | |
|   UINT32                                 Mode;
 | |
|   EFI_GRAPHICS_OUTPUT_MODE_INFORMATION   *Info;
 | |
|   UINTN                                  SizeOfInfo;
 | |
|   EFI_PHYSICAL_ADDRESS                   FrameBufferBase;
 | |
|   UINTN                                  FrameBufferSize;
 | |
| } EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE;
 | |
| 
 | |
| struct _EFI_GRAPHICS_OUTPUT_PROTOCOL {
 | |
|   EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE  QueryMode;
 | |
|   EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE    SetMode;
 | |
|   EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT         Blt;
 | |
|   EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE        *Mode;
 | |
| };
 | |
| 
 | |
| extern EFI_GUID gEfiGraphicsOutputProtocolGuid;
 | |
| 
 | |
| #endif
 |