diff options
author | jljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524> | 2011-04-12 15:07:34 +0000 |
---|---|---|
committer | jljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524> | 2011-04-12 15:07:34 +0000 |
commit | caebd91505fa9e778ccaba6bd6c8f1d19723602a (patch) | |
tree | b8549abec5081f5114385e375a1f7ee8fe49ec9a | |
parent | 2b578de0b213ecc98d5889ec496d12a56eb3b187 (diff) | |
download | edk2-caebd91505fa9e778ccaba6bd6c8f1d19723602a.tar.gz edk2-caebd91505fa9e778ccaba6bd6c8f1d19723602a.tar.bz2 edk2-caebd91505fa9e778ccaba6bd6c8f1d19723602a.zip |
OptionRomPkg: Add BltLib definition
This library is intended to make it easy to perform blt operations
on a GOP framebuffer without using the GOP Blt function.
There can be two main forms of implementations of this library:
1) A library which interfaces directly with a framebuffer, and
has no dependence on the GOP protocol. Once configured with
the framebuffer parameters, it can operate directly on the
framebuffer.
2) A library which interfaces with the GOP protocol. In this
case this library provides a convenience layer and allows
blt code to look cleaner.
Potential uses for this library:
* Video driver with a framebuffer will not need to implement
GOP Blt function itself. Instead it can utilize an
implementation of this library as described in #1 above.
* OS Loader code which would like to easily use the GOP framebuffer
after Exit Boot Services. This would use a library instance
as described in #1 above.
* Any other code which would like to call GOP blt, but simplify
the code with the more convenient functions provided by this
library interface. (Using a library as described in #2 above.)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11520 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r-- | OptionRomPkg/Include/Library/BltLib.h | 259 | ||||
-rw-r--r-- | OptionRomPkg/OptionRomPkg.dec | 9 |
2 files changed, 268 insertions, 0 deletions
diff --git a/OptionRomPkg/Include/Library/BltLib.h b/OptionRomPkg/Include/Library/BltLib.h new file mode 100644 index 0000000000..9e519b17cd --- /dev/null +++ b/OptionRomPkg/Include/Library/BltLib.h @@ -0,0 +1,259 @@ +/** @file
+ Library for performing video blt operations
+
+ Copyright (c) 2009 - 2011, Intel Corporation<BR>
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+#ifndef __BLT_LIB__
+#define __BLT_LIB__
+
+#include <Protocol/GraphicsOutput.h>
+
+
+/**
+ Configure the BltLib for a frame-buffer
+
+ @param[in] FrameBuffer Pointer to the start of the frame buffer
+ @param[in] FrameBufferInfo Describes the frame buffer characteristics
+
+ @retval EFI_INVALID_PARAMETER - Invalid parameter passed in
+ @retval EFI_SUCCESS - Blt operation success
+
+**/
+EFI_STATUS
+EFIAPI
+BltLibConfigure (
+ IN VOID *FrameBuffer,
+ IN EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *FrameBufferInfo
+ );
+
+
+/**
+ Performs a UEFI Graphics Output Protocol Blt operation.
+
+ @param[in,out] BltBuffer - The data to transfer to screen
+ @param[in] BltOperation - The operation to perform
+ @param[in] SourceX - The X coordinate of the source for BltOperation
+ @param[in] SourceY - The Y coordinate of the source for BltOperation
+ @param[in] DestinationX - The X coordinate of the destination for BltOperation
+ @param[in] DestinationY - The Y coordinate of the destination for BltOperation
+ @param[in] Width - The width of a rectangle in the blt rectangle in pixels
+ @param[in] Height - The height of a rectangle in the blt rectangle in pixels
+ @param[in] Delta - Not used for EfiBltVideoFill and EfiBltVideoToVideo operation.
+ If a Delta of 0 is used, the entire BltBuffer will be operated on.
+ If a subrectangle of the BltBuffer is used, then Delta represents
+ the number of bytes in a row of the BltBuffer.
+
+ @retval EFI_DEVICE_ERROR - A hardware error occured
+ @retval EFI_INVALID_PARAMETER - Invalid parameter passed in
+ @retval EFI_SUCCESS - Blt operation success
+
+**/
+EFI_STATUS
+EFIAPI
+BltLibGopBlt (
+ IN OUT 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
+ );
+
+
+/**
+ Performs a UEFI Graphics Output Protocol Blt Video Fill.
+
+ @param[in] Color Color to fill the region with
+ @param[in] DestinationX X location to start fill operation
+ @param[in] DestinationY Y location to start fill operation
+ @param[in] Width Width (in pixels) to fill
+ @param[in] Height Height to fill
+
+ @retval EFI_DEVICE_ERROR - A hardware error occured
+ @retval EFI_INVALID_PARAMETER - Invalid parameter passed in
+ @retval EFI_SUCCESS - Blt operation success
+
+**/
+EFI_STATUS
+EFIAPI
+BltLibVideoFill (
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Color,
+ IN UINTN DestinationX,
+ IN UINTN DestinationY,
+ IN UINTN Width,
+ IN UINTN Height
+ );
+
+
+/**
+ Performs a UEFI Graphics Output Protocol Blt Video to Buffer operation.
+
+ @param[out] BltBuffer Output buffer for pixel color data
+ @param[in] SourceX X location within video
+ @param[in] SourceY Y location within video
+ @param[in] Width Width (in pixels)
+ @param[in] Height Height
+
+ @retval EFI_DEVICE_ERROR - A hardware error occured
+ @retval EFI_INVALID_PARAMETER - Invalid parameter passed in
+ @retval EFI_SUCCESS - Blt operation success
+
+**/
+EFI_STATUS
+EFIAPI
+BltLibVideoToBltBuffer (
+ OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer,
+ IN UINTN SourceX,
+ IN UINTN SourceY,
+ IN UINTN Width,
+ IN UINTN Height
+ );
+
+
+/**
+ Performs a UEFI Graphics Output Protocol Blt Video to Buffer operation
+ with extended parameters.
+
+ @param[out] BltBuffer Output buffer for pixel color data
+ @param[in] SourceX X location within video
+ @param[in] SourceY Y location within video
+ @param[in] DestinationX X location within BltBuffer
+ @param[in] DestinationY Y location within BltBuffer
+ @param[in] Width Width (in pixels)
+ @param[in] Height Height
+ @param[in] Delta Number of bytes in a row of BltBuffer
+
+ @retval EFI_DEVICE_ERROR - A hardware error occured
+ @retval EFI_INVALID_PARAMETER - Invalid parameter passed in
+ @retval EFI_SUCCESS - Blt operation success
+
+**/
+EFI_STATUS
+EFIAPI
+BltLibVideoToBltBufferEx (
+ OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer,
+ IN UINTN SourceX,
+ IN UINTN SourceY,
+ IN UINTN DestinationX,
+ IN UINTN DestinationY,
+ IN UINTN Width,
+ IN UINTN Height,
+ IN UINTN Delta
+ );
+
+
+/**
+ Performs a UEFI Graphics Output Protocol Blt Buffer to Video operation.
+
+ @param[in] BltBuffer Output buffer for pixel color data
+ @param[in] DestinationX X location within video
+ @param[in] DestinationY Y location within video
+ @param[in] Width Width (in pixels)
+ @param[in] Height Height
+
+ @retval EFI_DEVICE_ERROR - A hardware error occured
+ @retval EFI_INVALID_PARAMETER - Invalid parameter passed in
+ @retval EFI_SUCCESS - Blt operation success
+
+**/
+EFI_STATUS
+EFIAPI
+BltLibBufferToVideo (
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer,
+ IN UINTN DestinationX,
+ IN UINTN DestinationY,
+ IN UINTN Width,
+ IN UINTN Height
+ );
+
+
+/**
+ Performs a UEFI Graphics Output Protocol Blt Buffer to Video operation
+ with extended parameters.
+
+ @param[in] BltBuffer Output buffer for pixel color data
+ @param[in] SourceX X location within BltBuffer
+ @param[in] SourceY Y location within BltBuffer
+ @param[in] DestinationX X location within video
+ @param[in] DestinationY Y location within video
+ @param[in] Width Width (in pixels)
+ @param[in] Height Height
+ @param[in] Delta Number of bytes in a row of BltBuffer
+
+ @retval EFI_DEVICE_ERROR - A hardware error occured
+ @retval EFI_INVALID_PARAMETER - Invalid parameter passed in
+ @retval EFI_SUCCESS - Blt operation success
+
+**/
+EFI_STATUS
+EFIAPI
+BltLibBufferToVideoEx (
+ IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer,
+ IN UINTN SourceX,
+ IN UINTN SourceY,
+ IN UINTN DestinationX,
+ IN UINTN DestinationY,
+ IN UINTN Width,
+ IN UINTN Height,
+ IN UINTN Delta
+ );
+
+
+/**
+ Performs a UEFI Graphics Output Protocol Blt Video to Video operation
+
+ @param[in] SourceX X location within video
+ @param[in] SourceY Y location within video
+ @param[in] DestinationX X location within video
+ @param[in] DestinationY Y location within video
+ @param[in] Width Width (in pixels)
+ @param[in] Height Height
+
+ @retval EFI_DEVICE_ERROR - A hardware error occured
+ @retval EFI_INVALID_PARAMETER - Invalid parameter passed in
+ @retval EFI_SUCCESS - Blt operation success
+
+**/
+EFI_STATUS
+EFIAPI
+BltLibVideoToVideo (
+ IN UINTN SourceX,
+ IN UINTN SourceY,
+ IN UINTN DestinationX,
+ IN UINTN DestinationY,
+ IN UINTN Width,
+ IN UINTN Height
+ );
+
+
+/**
+ Returns the sizes related to the video device
+
+ @param[out] Width Width (in pixels)
+ @param[out] Height Height (in pixels)
+
+ @retval EFI_INVALID_PARAMETER - Invalid parameter passed in
+ @retval EFI_SUCCESS - The sizes were returned
+
+**/
+EFI_STATUS
+EFIAPI
+BltLibGetSizes (
+ OUT UINTN *Width, OPTIONAL
+ OUT UINTN *Height OPTIONAL
+ );
+
+#endif
+
diff --git a/OptionRomPkg/OptionRomPkg.dec b/OptionRomPkg/OptionRomPkg.dec index b9eb62048b..db61bbec74 100644 --- a/OptionRomPkg/OptionRomPkg.dec +++ b/OptionRomPkg/OptionRomPkg.dec @@ -24,6 +24,15 @@ PACKAGE_GUID = AA3865E8-7F30-4f59-8696-99F560101852
PACKAGE_VERSION = 0.1
+[Includes.common]
+ Include
+
+[LibraryClasses]
+ ## @libraryclass Provides an interface for performing UEFI Graphics
+ ## Output Protocol Video blt operations
+ ##
+ BltLib|Include/Library/BltLib.h
+
[PcdsFeatureFlag]
gOptionRomPkgTokenSpaceGuid.PcdSupportScsiPassThru|TRUE|BOOLEAN|0x00010001
gOptionRomPkgTokenSpaceGuid.PcdSupportExtScsiPassThru|TRUE|BOOLEAN|0x00010002
|