4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Graphics Output Protocol from the UEFI 2.0 specification.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Abstraction of a very simple graphics device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef __GRAPHICS_OUTPUT_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define __GRAPHICS_OUTPUT_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0x9042a9de, 0x23dc, 0x4a38, {0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a } \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL EFI_GRAPHICS_OUTPUT_PROTOCOL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 RedMask;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 GreenMask;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 BlueMask;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 ReservedMask;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_PIXEL_BITMASK;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef enum {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// A pixel is 32-bits and byte zero represents red, byte one represents green,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// byte two represents blue, and byte three is reserved. This is the definition
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// for the physical frame buffer. The byte values for the red, green, and blue
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// components represent the color intensity. This color intensity value range
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// from a minimum intensity of 0 to maximum intensity of 255.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PixelRedGreenBlueReserved8BitPerColor,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// A pixel is 32-bits and byte zero represents blue, byte one represents green,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// byte two represents red, and byte three is reserved. This is the definition
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// for the physical frame buffer. The byte values for the red, green, and blue
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// components represent the color intensity. This color intensity value range
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// from a minimum intensity of 0 to maximum intensity of 255.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PixelBlueGreenRedReserved8BitPerColor,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The Pixel definition of the physical frame buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PixelBitMask,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// This mode does not support a physical frame buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PixelBltOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Valid EFI_GRAPHICS_PIXEL_FORMAT enum values are less than this value.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PixelFormatMax
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_GRAPHICS_PIXEL_FORMAT;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The version of this data structure. A value of zero represents the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_GRAPHICS_OUTPUT_MODE_INFORMATION structure as defined in this specification.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 Version;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The size of video screen in pixels in the X dimension.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 HorizontalResolution;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The size of video screen in pixels in the Y dimension.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 VerticalResolution;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Enumeration that defines the physical format of the pixel. A value of PixelBltOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// implies that a linear frame buffer is not available for this mode.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_GRAPHICS_PIXEL_FORMAT PixelFormat;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// This bit-mask is only valid if PixelFormat is set to PixelPixelBitMask.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// A bit being set defines what bits are used for what purpose such as Red, Green, Blue, or Reserved.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PIXEL_BITMASK PixelInformation;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Defines the number of pixel elements per video memory line.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 PixelsPerScanLine;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_GRAPHICS_OUTPUT_MODE_INFORMATION;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Returns information for an available graphics mode that the graphics device
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync and the set of active video output devices supports.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This The EFI_GRAPHICS_OUTPUT_PROTOCOL instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ModeNumber The mode number to return information on.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param SizeOfInfo A pointer to the size, in bytes, of the Info buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Info A pointer to callee allocated buffer that returns information about ModeNumber.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Mode information returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_BUFFER_TOO_SMALL The Info buffer was too small.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR A hardware error occurred trying to retrieve the video mode.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER One of the input args was NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 ModeNumber,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT UINTN *SizeOfInfo,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Set the video device into the specified mode and clears the visible portions of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the output display to black.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This The EFI_GRAPHICS_OUTPUT_PROTOCOL instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ModeNumber Abstraction that defines the current video mode.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The graphics mode specified by ModeNumber was selected.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_UNSUPPORTED ModeNumber is not supported by this device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 ModeNumber
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Blue;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Green;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Red;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Reserved;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_GRAPHICS_OUTPUT_BLT_PIXEL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef union {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_GRAPHICS_OUTPUT_BLT_PIXEL Pixel;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 Raw;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// actions for BltOperations
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef enum {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Write data from the BltBuffer pixel (SourceX, SourceY)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// directly to every pixel of the video display rectangle
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Only one pixel will be used from the BltBuffer. Delta is NOT used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EfiBltVideoFill,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Read data from the video display rectangle
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// the BltBuffer rectangle (DestinationX, DestinationY )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// (DestinationX + Width, DestinationY + Height). If DestinationX or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// DestinationY is not zero then Delta must be set to the length in bytes
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// of a row in the BltBuffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EfiBltVideoToBltBuffer,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Write data from the BltBuffer rectangle
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// video display rectangle (DestinationX, DestinationY)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// not zero then Delta must be set to the length in bytes of a row in the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// BltBuffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EfiBltBufferToVideo,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Copy from the video display rectangle (SourceX, SourceY)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// (SourceX + Width, SourceY + Height) .to the video display rectangle
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The BltBuffer and Delta are not used in this mode.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EfiBltVideoToVideo,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EfiBltVideoToVideo,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EfiGraphicsOutputBltOperationMax
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_GRAPHICS_OUTPUT_BLT_OPERATION;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Blt a rectangle of pixels on the graphics screen. Blt stands for BLock Transfer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This Protocol instance pointer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param BltBuffer Buffer containing data to blit into video buffer. This
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buffer has a size of Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param BltOperation Operation to perform on BlitBuffer and video memory
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param SourceX X coordinate of source for the BltBuffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param SourceY Y coordinate of source for the BltBuffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DestinationX X coordinate of destination for the BltBuffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DestinationY Y coordinate of destination for the BltBuffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Width Width of rectangle in BltBuffer in pixels.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Height Hight of rectangle in BltBuffer in pixels.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Delta OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The Blt operation completed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER BltOperation is not valid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN SourceX,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN SourceY,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN DestinationX,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN DestinationY,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN Width,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN Height,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN Delta OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The number of modes supported by QueryMode() and SetMode().
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 MaxMode;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Current Mode of the graphics device. Valid mode numbers are 0 to MaxMode -1.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 Mode;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Pointer to read-only EFI_GRAPHICS_OUTPUT_MODE_INFORMATION data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Size of Info structure in bytes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN SizeOfInfo;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Base address of graphics linear frame buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Offset zero in FrameBufferBase represents the upper left pixel of the display.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PHYSICAL_ADDRESS FrameBufferBase;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Size of the frame buffer represented by FrameBufferBase in bytes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN FrameBufferSize;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Provides a basic abstraction to set video modes and copy pixels to and from
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// the graphics controller's frame buffer. The linear address of the hardware
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// frame buffer is also exposed so software can write directly to the video hardware.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct _EFI_GRAPHICS_OUTPUT_PROTOCOL {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE QueryMode;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE SetMode;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT Blt;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Pointer to EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Mode;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiGraphicsOutputProtocolGuid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif