]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Protocol/GraphicsOutput.h
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Include / Protocol / GraphicsOutput.h
index 7782f5d7c3ec2b751b7293b54ca94ed965b65108..935f2f0bd0b9d37e4fe9d4ec382a1f13212478a2 100644 (file)
@@ -3,14 +3,8 @@
 \r
   Abstraction of a very simple graphics device.\r
 \r
-  Copyright (c) 2006 - 2008, Intel Corporation                                                         \r
-  All rights reserved. This program and the accompanying materials                          \r
-  are licensed and made available under the terms and conditions of the BSD License         \r
-  which accompanies this distribution.  The full text of the license may be found at        \r
-  http://opensource.org/licenses/bsd-license.php                                            \r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -33,18 +27,18 @@ typedef struct {
 \r
 typedef enum {\r
   ///\r
-  /// A pixel is 32-bits and byte zero represents red, byte one represents green, \r
-  /// byte two represents blue, and byte three is reserved. This is the definition \r
-  /// for the physical frame buffer. The byte values for the red, green, and blue \r
-  /// components represent the color intensity. This color intensity value range \r
+  /// A pixel is 32-bits and byte zero represents red, byte one represents green,\r
+  /// byte two represents blue, and byte three is reserved. This is the definition\r
+  /// for the physical frame buffer. The byte values for the red, green, and blue\r
+  /// components represent the color intensity. This color intensity value range\r
   /// from a minimum intensity of 0 to maximum intensity of 255.\r
   ///\r
   PixelRedGreenBlueReserved8BitPerColor,\r
   ///\r
-  /// A pixel is 32-bits and byte zero represents blue, byte one represents green, \r
-  /// byte two represents red, and byte three is reserved. This is the definition \r
-  /// for the physical frame buffer. The byte values for the red, green, and blue \r
-  /// components represent the color intensity. This color intensity value range \r
+  /// A pixel is 32-bits and byte zero represents blue, byte one represents green,\r
+  /// byte two represents red, and byte three is reserved. This is the definition\r
+  /// for the physical frame buffer. The byte values for the red, green, and blue\r
+  /// components represent the color intensity. This color intensity value range\r
   /// from a minimum intensity of 0 to maximum intensity of 255.\r
   ///\r
   PixelBlueGreenRedReserved8BitPerColor,\r
@@ -64,7 +58,7 @@ typedef enum {
 \r
 typedef struct {\r
   ///\r
-  /// The version of this data structure. A value of zero represents the \r
+  /// The version of this data structure. A value of zero represents the\r
   /// EFI_GRAPHICS_OUTPUT_MODE_INFORMATION structure as defined in this specification.\r
   ///\r
   UINT32                     Version;\r
@@ -77,34 +71,33 @@ typedef struct {
   ///\r
   UINT32                     VerticalResolution;\r
   ///\r
-  /// Enumeration that defines the physical format of the pixel. A value of PixelBltOnly \r
+  /// Enumeration that defines the physical format of the pixel. A value of PixelBltOnly\r
   /// implies that a linear frame buffer is not available for this mode.\r
   ///\r
   EFI_GRAPHICS_PIXEL_FORMAT  PixelFormat;\r
   ///\r
-  /// This bit-mask is only valid if PixelFormat is set to PixelPixelBitMask. \r
+  /// This bit-mask is only valid if PixelFormat is set to PixelPixelBitMask.\r
   /// A bit being set defines what bits are used for what purpose such as Red, Green, Blue, or Reserved.\r
   ///\r
   EFI_PIXEL_BITMASK          PixelInformation;\r
   ///\r
   /// Defines the number of pixel elements per video memory line.\r
-  /// \r
+  ///\r
   UINT32                     PixelsPerScanLine;\r
 } EFI_GRAPHICS_OUTPUT_MODE_INFORMATION;\r
 \r
 /**\r
-  Return the current video mode information.\r
+  Returns information for an available graphics mode that the graphics device\r
+  and the set of active video output devices supports.\r
 \r
-  @param  This       Protocol instance pointer.\r
-  @param  ModeNumber The mode number to return information on.\r
-  @param  SizeOfInfo A pointer to the size, in bytes, of the Info buffer.\r
-  @param  Info       A pointer to callee allocated buffer that returns information about ModeNumber.\r
+  @param  This                  The EFI_GRAPHICS_OUTPUT_PROTOCOL instance.\r
+  @param  ModeNumber            The mode number to return information on.\r
+  @param  SizeOfInfo            A pointer to the size, in bytes, of the Info buffer.\r
+  @param  Info                  A pointer to callee allocated buffer that returns information about ModeNumber.\r
 \r
-  @retval EFI_SUCCESS           Mode information returned.\r
-  @retval EFI_BUFFER_TOO_SMALL  The Info buffer was too small.\r
+  @retval EFI_SUCCESS           Valid mode information was returned.\r
   @retval EFI_DEVICE_ERROR      A hardware error occurred trying to retrieve the video mode.\r
-  @retval EFI_NOT_STARTED       Video display is not initialized. Call SetMode ()\r
-  @retval EFI_INVALID_PARAMETER One of the input args was NULL.\r
+  @retval EFI_INVALID_PARAMETER ModeNumber is not valid.\r
 \r
 **/\r
 typedef\r
@@ -117,12 +110,13 @@ EFI_STATUS
   );\r
 \r
 /**\r
-  Return the current video mode information.\r
+  Set the video device into the specified mode and clears the visible portions of\r
+  the output display to black.\r
 \r
-  @param  This              Protocol instance pointer.\r
-  @param  ModeNumber        The mode number to be set.\r
+  @param  This              The EFI_GRAPHICS_OUTPUT_PROTOCOL instance.\r
+  @param  ModeNumber        Abstraction that defines the current video mode.\r
 \r
-  @retval EFI_SUCCESS       Graphics mode was changed.\r
+  @retval EFI_SUCCESS       The graphics mode specified by ModeNumber was selected.\r
   @retval EFI_DEVICE_ERROR  The device had an error and could not complete the request.\r
   @retval EFI_UNSUPPORTED   ModeNumber is not supported by this device.\r
 \r
@@ -151,63 +145,65 @@ typedef union {
 ///\r
 typedef enum {\r
   ///\r
-  /// Write data from the  BltBuffer pixel (SourceX, SourceY) \r
-  /// directly to every pixel of the video display rectangle \r
-  /// (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height). \r
-  /// Only one pixel will be used from the BltBuffer. Delta is NOT used.  \r
+  /// Write data from the BltBuffer pixel (0, 0)\r
+  /// directly to every pixel of the video display rectangle\r
+  /// (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).\r
+  /// Only one pixel will be used from the BltBuffer. Delta is NOT used.\r
   ///\r
   EfiBltVideoFill,\r
-  \r
+\r
   ///\r
-  /// Read data from the video display rectangle \r
-  /// (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in \r
-  /// the BltBuffer rectangle (DestinationX, DestinationY ) \r
-  /// (DestinationX + Width, DestinationY + Height). If DestinationX or \r
-  /// DestinationY is not zero then Delta must be set to the length in bytes \r
-  /// of a row in the BltBuffer.  \r
+  /// Read data from the video display rectangle\r
+  /// (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in\r
+  /// the BltBuffer rectangle (DestinationX, DestinationY )\r
+  /// (DestinationX + Width, DestinationY + Height). If DestinationX or\r
+  /// DestinationY is not zero then Delta must be set to the length in bytes\r
+  /// of a row in the BltBuffer.\r
   ///\r
   EfiBltVideoToBltBuffer,\r
-  \r
+\r
   ///\r
-  /// Write data from the  BltBuffer rectangle \r
-  /// (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the \r
-  /// video display rectangle (DestinationX, DestinationY) \r
-  /// (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is \r
-  /// not zero then Delta must be set to the length in bytes of a row in the \r
+  /// Write data from the BltBuffer rectangle\r
+  /// (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the\r
+  /// video display rectangle (DestinationX, DestinationY)\r
+  /// (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is\r
+  /// not zero then Delta must be set to the length in bytes of a row in the\r
   /// BltBuffer.\r
   ///\r
-  EfiBltBufferToVideo, \r
-  \r
+  EfiBltBufferToVideo,\r
+\r
   ///\r
   /// Copy from the video display rectangle (SourceX, SourceY)\r
-  /// (SourceX + Width, SourceY + Height) .to the video display rectangle \r
-  /// (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height). \r
-  /// The BltBuffer and Delta  are not used in this mode.\r
-  /// EfiBltVideoToVideo,\r
+  /// (SourceX + Width, SourceY + Height) to the video display rectangle\r
+  /// (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).\r
+  /// The BltBuffer and Delta are not used in this mode.\r
   ///\r
   EfiBltVideoToVideo,\r
-  \r
+\r
   EfiGraphicsOutputBltOperationMax\r
 } EFI_GRAPHICS_OUTPUT_BLT_OPERATION;\r
 \r
 /**\r
   Blt a rectangle of pixels on the graphics screen. Blt stands for BLock Transfer.\r
-  \r
+\r
   @param  This         Protocol instance pointer.\r
-  @param  BltBuffer    Buffer containing data to blit into video buffer. This\r
-                       buffer has a size of Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
-  @param  BltOperation Operation to perform on BlitBuffer and video memory\r
-  @param  SourceX      X coordinate of source for the BltBuffer.\r
-  @param  SourceY      Y coordinate of source for the BltBuffer.\r
-  @param  DestinationX X coordinate of destination for the BltBuffer.\r
-  @param  DestinationY Y coordinate of destination for the BltBuffer.\r
-  @param  Width        Width of rectangle in BltBuffer in pixels.\r
-  @param  Height       Hight of rectangle in BltBuffer in pixels.\r
-  @param  Delta        OPTIONAL\r
-\r
-  @retval EFI_SUCCESS           The Blt operation completed.\r
+  @param  BltBuffer    The data to transfer to the graphics screen.\r
+                       Size is at least Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL).\r
+  @param  BltOperation The operation to perform when copying BltBuffer on to the graphics screen.\r
+  @param  SourceX      The X coordinate of source for the BltOperation.\r
+  @param  SourceY      The Y coordinate of source for the BltOperation.\r
+  @param  DestinationX The X coordinate of destination for the BltOperation.\r
+  @param  DestinationY The Y coordinate of destination for the BltOperation.\r
+  @param  Width        The width of a rectangle in the blt rectangle in pixels.\r
+  @param  Height       The height of a rectangle in the blt rectangle in pixels.\r
+  @param  Delta        Not used for EfiBltVideoFill or the EfiBltVideoToVideo operation.\r
+                       If a Delta of zero is used, the entire BltBuffer is being operated on.\r
+                       If a subrectangle of the BltBuffer is being used then Delta\r
+                       represents the number of bytes in a row of the BltBuffer.\r
+\r
+  @retval EFI_SUCCESS           BltBuffer was drawn to the graphics screen.\r
   @retval EFI_INVALID_PARAMETER BltOperation is not valid.\r
-  @retval EFI_DEVICE_ERROR      A hardware error occured writting to the video buffer.\r
+  @retval EFI_DEVICE_ERROR      The device had an error and could not complete the request.\r
 \r
 **/\r
 typedef\r
@@ -248,14 +244,15 @@ typedef struct {
   ///\r
   EFI_PHYSICAL_ADDRESS                   FrameBufferBase;\r
   ///\r
-  /// Size of the frame buffer represented by FrameBufferBase in bytes.\r
+  /// Amount of frame buffer needed to support the active mode as defined by\r
+  /// PixelsPerScanLine xVerticalResolution x PixelElementSize.\r
   ///\r
   UINTN                                  FrameBufferSize;\r
 } EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE;\r
 \r
 ///\r
-/// Provides a basic abstraction to set video modes and copy pixels to and from \r
-/// the graphics controller's frame buffer. The linear address of the hardware \r
+/// Provides a basic abstraction to set video modes and copy pixels to and from\r
+/// the graphics controller's frame buffer. The linear address of the hardware\r
 /// frame buffer is also exposed so software can write directly to the video hardware.\r
 ///\r
 struct _EFI_GRAPHICS_OUTPUT_PROTOCOL {\r