mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-31 01:24:12 +02:00
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4153 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
6e98e26326
commit
62409219a1
@ -34,7 +34,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
#include <Library/BaseLib.h>
|
#include <Library/BaseLib.h>
|
||||||
#include <Library/MemoryAllocationLib.h>
|
#include <Library/MemoryAllocationLib.h>
|
||||||
#include <Library/UefiBootServicesTableLib.h>
|
#include <Library/UefiBootServicesTableLib.h>
|
||||||
|
#include <Library/DebugLib.h>
|
||||||
|
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
GetGraphicsBitMapFromFV (
|
GetGraphicsBitMapFromFV (
|
||||||
@ -133,8 +133,8 @@ ConvertBmpToGopBlt (
|
|||||||
|
|
||||||
Routine Description:
|
Routine Description:
|
||||||
|
|
||||||
Convert a *.BMP graphics image to a UGA blt buffer. If a NULL UgaBlt buffer
|
Convert a *.BMP graphics image to a GOP/UGA blt buffer. If a NULL Blt buffer
|
||||||
is passed in a UgaBlt buffer will be allocated by this routine. If a UgaBlt
|
is passed in a GopBlt buffer will be allocated by this routine. If a GopBlt
|
||||||
buffer is passed in it will be used if it is big enough.
|
buffer is passed in it will be used if it is big enough.
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
@ -143,21 +143,21 @@ Arguments:
|
|||||||
|
|
||||||
BmpImageSize - Number of bytes in BmpImage
|
BmpImageSize - Number of bytes in BmpImage
|
||||||
|
|
||||||
UgaBlt - Buffer containing UGA version of BmpImage.
|
GopBlt - Buffer containing GOP version of BmpImage.
|
||||||
|
|
||||||
UgaBltSize - Size of UgaBlt in bytes.
|
GopBltSize - Size of GopBlt in bytes.
|
||||||
|
|
||||||
PixelHeight - Height of UgaBlt/BmpImage in pixels
|
PixelHeight - Height of GopBlt/BmpImage in pixels
|
||||||
|
|
||||||
PixelWidth - Width of UgaBlt/BmpImage in pixels
|
PixelWidth - Width of GopBlt/BmpImage in pixels
|
||||||
|
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
|
|
||||||
EFI_SUCCESS - UgaBlt and UgaBltSize are returned.
|
EFI_SUCCESS - GopBlt and GopBltSize are returned.
|
||||||
EFI_UNSUPPORTED - BmpImage is not a valid *.BMP image
|
EFI_UNSUPPORTED - BmpImage is not a valid *.BMP image
|
||||||
EFI_BUFFER_TOO_SMALL - The passed in UgaBlt buffer is not big enough.
|
EFI_BUFFER_TOO_SMALL - The passed in GopBlt buffer is not big enough.
|
||||||
UgaBltSize will contain the required size.
|
GopBltSize will contain the required size.
|
||||||
EFI_OUT_OF_RESOURCES - No enough buffer to allocate
|
EFI_OUT_OF_RESOURCES - No enough buffer to allocate
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
@ -575,8 +575,8 @@ DisableQuietBoot (
|
|||||||
|
|
||||||
Routine Description:
|
Routine Description:
|
||||||
|
|
||||||
Use Console Control to turn on UGA based Simple Text Out consoles. The UGA
|
Use Console Control to turn on GOP/UGA based Simple Text Out consoles. The GOP/UGA
|
||||||
Simple Text Out screens will now be synced up with all non UGA output devices
|
Simple Text Out screens will now be synced up with all non GOP/UGA output devices
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
|
|
||||||
@ -584,7 +584,7 @@ Arguments:
|
|||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
|
|
||||||
EFI_SUCCESS - UGA devices are back in text mode and synced up.
|
EFI_SUCCESS - GOP/UGA devices are back in text mode and synced up.
|
||||||
EFI_UNSUPPORTED - Logo not found
|
EFI_UNSUPPORTED - Logo not found
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
@ -679,6 +679,8 @@ Returns:
|
|||||||
UINT32 VerticalResolution;
|
UINT32 VerticalResolution;
|
||||||
UINT32 ColorDepth;
|
UINT32 ColorDepth;
|
||||||
UINT32 RefreshRate;
|
UINT32 RefreshRate;
|
||||||
|
UINTN BufferLen;
|
||||||
|
UINTN LineBufferLen;
|
||||||
UINTN BufferGlyphWidth;
|
UINTN BufferGlyphWidth;
|
||||||
|
|
||||||
GlyphStatus = 0;
|
GlyphStatus = 0;
|
||||||
@ -700,8 +702,10 @@ Returns:
|
|||||||
//
|
//
|
||||||
UgaDraw->GetMode (UgaDraw, &HorizontalResolution, &VerticalResolution, &ColorDepth, &RefreshRate);
|
UgaDraw->GetMode (UgaDraw, &HorizontalResolution, &VerticalResolution, &ColorDepth, &RefreshRate);
|
||||||
}
|
}
|
||||||
|
ASSERT ((HorizontalResolution != 0) && (VerticalResolution !=0));
|
||||||
|
|
||||||
LineBuffer = AllocatePool (sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL) * HorizontalResolution * GLYPH_WIDTH * GLYPH_HEIGHT);
|
LineBufferLen = sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL) * HorizontalResolution * GLYPH_HEIGHT;
|
||||||
|
LineBuffer = AllocatePool (LineBufferLen);
|
||||||
if (LineBuffer == NULL) {
|
if (LineBuffer == NULL) {
|
||||||
gBS->FreePool (Buffer);
|
gBS->FreePool (Buffer);
|
||||||
return EFI_OUT_OF_RESOURCES;
|
return EFI_OUT_OF_RESOURCES;
|
||||||
@ -724,7 +728,14 @@ Returns:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Index = 0; Index < StrLen (Buffer); Index++) {
|
BufferLen = StrLen (Buffer);
|
||||||
|
|
||||||
|
if (GLYPH_WIDTH * GLYPH_HEIGHT * sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL) * BufferLen > LineBufferLen) {
|
||||||
|
Status = EFI_INVALID_PARAMETER;
|
||||||
|
goto Error;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Index = 0; Index < BufferLen; Index++) {
|
||||||
StringIndex = (UINT16) Index;
|
StringIndex = (UINT16) Index;
|
||||||
Status = Hii->GetGlyph (Hii, UnicodeWeight, &StringIndex, (UINT8 **) &Glyph, &GlyphWidth, &GlyphStatus);
|
Status = Hii->GetGlyph (Hii, UnicodeWeight, &StringIndex, (UINT8 **) &Glyph, &GlyphWidth, &GlyphStatus);
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
@ -737,7 +748,7 @@ Returns:
|
|||||||
(UINT8 *) Glyph,
|
(UINT8 *) Glyph,
|
||||||
mEfiColors[Sto->Mode->Attribute & 0x0f],
|
mEfiColors[Sto->Mode->Attribute & 0x0f],
|
||||||
mEfiColors[Sto->Mode->Attribute >> 4],
|
mEfiColors[Sto->Mode->Attribute >> 4],
|
||||||
StrLen (Buffer),
|
BufferLen,
|
||||||
GlyphWidth,
|
GlyphWidth,
|
||||||
GLYPH_HEIGHT,
|
GLYPH_HEIGHT,
|
||||||
&LineBuffer[Index * GLYPH_WIDTH]
|
&LineBuffer[Index * GLYPH_WIDTH]
|
||||||
@ -748,7 +759,7 @@ Returns:
|
|||||||
(UINT8 *) Glyph,
|
(UINT8 *) Glyph,
|
||||||
*Foreground,
|
*Foreground,
|
||||||
*Background,
|
*Background,
|
||||||
StrLen (Buffer),
|
BufferLen,
|
||||||
GlyphWidth,
|
GlyphWidth,
|
||||||
GLYPH_HEIGHT,
|
GLYPH_HEIGHT,
|
||||||
&LineBuffer[Index * GLYPH_WIDTH]
|
&LineBuffer[Index * GLYPH_WIDTH]
|
||||||
@ -759,7 +770,7 @@ Returns:
|
|||||||
//
|
//
|
||||||
// Blt a character to the screen
|
// Blt a character to the screen
|
||||||
//
|
//
|
||||||
BufferGlyphWidth = GLYPH_WIDTH * StrLen (Buffer);
|
BufferGlyphWidth = GLYPH_WIDTH * BufferLen;
|
||||||
if (GraphicsOutput != NULL) {
|
if (GraphicsOutput != NULL) {
|
||||||
Status = GraphicsOutput->Blt (
|
Status = GraphicsOutput->Blt (
|
||||||
GraphicsOutput,
|
GraphicsOutput,
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
MemoryAllocationLib
|
MemoryAllocationLib
|
||||||
BaseLib
|
BaseLib
|
||||||
PrintLib
|
PrintLib
|
||||||
|
DebugLib
|
||||||
|
|
||||||
[Protocols]
|
[Protocols]
|
||||||
gEfiHiiProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiHiiProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||||
|
@ -27,7 +27,6 @@ Abstract:
|
|||||||
#include <PiDxe.h>
|
#include <PiDxe.h>
|
||||||
#include <Protocol/LoadedImage.h>
|
#include <Protocol/LoadedImage.h>
|
||||||
#include <Protocol/Runtime.h>
|
#include <Protocol/Runtime.h>
|
||||||
#include <Protocol/UgaIo.h>
|
|
||||||
#include <Library/BaseLib.h>
|
#include <Library/BaseLib.h>
|
||||||
#include <Library/UefiDriverEntryPoint.h>
|
#include <Library/UefiDriverEntryPoint.h>
|
||||||
#include <Library/DebugLib.h>
|
#include <Library/DebugLib.h>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*++
|
/*++
|
||||||
|
|
||||||
Copyright (c) 2006, Intel Corporation
|
Copyright (c) 2006 - 2007, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
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
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -15,7 +15,7 @@ Module Name:
|
|||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
|
||||||
Abstraction of a Text mode or UGA screen
|
Abstraction of a Text mode or GOP/UGA screen
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
@ -40,20 +40,21 @@ EFI_STATUS
|
|||||||
(EFIAPI *EFI_CONSOLE_CONTROL_PROTOCOL_GET_MODE) (
|
(EFIAPI *EFI_CONSOLE_CONTROL_PROTOCOL_GET_MODE) (
|
||||||
IN EFI_CONSOLE_CONTROL_PROTOCOL *This,
|
IN EFI_CONSOLE_CONTROL_PROTOCOL *This,
|
||||||
OUT EFI_CONSOLE_CONTROL_SCREEN_MODE *Mode,
|
OUT EFI_CONSOLE_CONTROL_SCREEN_MODE *Mode,
|
||||||
OUT BOOLEAN *UgaExists, OPTIONAL
|
OUT BOOLEAN *GopUgaExists, OPTIONAL
|
||||||
OUT BOOLEAN *StdInLocked OPTIONAL
|
OUT BOOLEAN *StdInLocked OPTIONAL
|
||||||
)
|
)
|
||||||
/*++
|
/*++
|
||||||
|
|
||||||
Routine Description:
|
Routine Description:
|
||||||
Return the current video mode information. Also returns info about existence
|
Return the current video mode information. Also returns info about existence
|
||||||
of UGA Draw devices in system, and if the Std In device is locked. All the
|
of Graphics Output devices or UGA Draw devices in system, and if the Std In
|
||||||
arguments are optional and only returned if a non NULL pointer is passed in.
|
device is locked. All the arguments are optional and only returned if a non
|
||||||
|
NULL pointer is passed in.
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
This - Protocol instance pointer.
|
This - Protocol instance pointer.
|
||||||
Mode - Are we in text of grahics mode.
|
Mode - Are we in text of grahics mode.
|
||||||
UgaExists - TRUE if UGA Spliter has found a UGA device
|
GopUgaExists - TRUE if Console Spliter has found a GOP or UGA device
|
||||||
StdInLocked - TRUE if StdIn device is keyboard locked
|
StdInLocked - TRUE if StdIn device is keyboard locked
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
|
@ -59,16 +59,6 @@ extern EFI_GUID gEfiWinNtVirtualDisksGuid;
|
|||||||
|
|
||||||
extern EFI_GUID gEfiWinNtPhysicalDisksGuid;
|
extern EFI_GUID gEfiWinNtPhysicalDisksGuid;
|
||||||
|
|
||||||
//
|
|
||||||
// EFI_WIN_NT_GOP_GUID
|
|
||||||
//
|
|
||||||
#define EFI_WIN_NT_GOP_GUID \
|
|
||||||
{ \
|
|
||||||
0x4e11e955, 0xccca, 0x11d4, {0xbd, 0x0d, 0x00, 0x80, 0xc7, 0x3c, 0x88, 0x81} \
|
|
||||||
}
|
|
||||||
|
|
||||||
extern EFI_GUID gEfiWinNtGopGuid;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// EFI_WIN_NT_FILE_SYSTEM
|
// EFI_WIN_NT_FILE_SYSTEM
|
||||||
//
|
//
|
||||||
@ -99,6 +89,16 @@ extern EFI_GUID gEfiWinNtSerialPortGuid;
|
|||||||
|
|
||||||
extern EFI_GUID gEfiWinNtUgaGuid;
|
extern EFI_GUID gEfiWinNtUgaGuid;
|
||||||
|
|
||||||
|
//
|
||||||
|
// EFI_WIN_NT_GOP
|
||||||
|
//
|
||||||
|
#define EFI_WIN_NT_GOP_GUID \
|
||||||
|
{ \
|
||||||
|
0x4e11e955, 0xccca, 0x11d4, 0xbd, 0xd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 \
|
||||||
|
}
|
||||||
|
|
||||||
|
extern EFI_GUID gEfiWinNtGopGuid;
|
||||||
|
|
||||||
//
|
//
|
||||||
// EFI_WIN_NT_CONSOLE
|
// EFI_WIN_NT_CONSOLE
|
||||||
//
|
//
|
||||||
|
@ -26,7 +26,7 @@ EFI_WIN_NT_PHYSICAL_DISKS - maps to drives on your system
|
|||||||
EFI_WIN_NT_VIRTUAL_DISKS - maps to a device emulated by a file
|
EFI_WIN_NT_VIRTUAL_DISKS - maps to a device emulated by a file
|
||||||
EFI_WIN_NT_FILE_SYSTEM - mouts a directory as a file system
|
EFI_WIN_NT_FILE_SYSTEM - mouts a directory as a file system
|
||||||
EFI_WIN_NT_CONSOLE - make a logical comand line window (only one!)
|
EFI_WIN_NT_CONSOLE - make a logical comand line window (only one!)
|
||||||
EFI_WIN_NT_UGA - Builds UGA Windows of Width and Height
|
EFI_WIN_NT_GOP - Builds GOP Windows of Width and Height
|
||||||
EFI_WIN_NT_SERIAL_PORT - maps physical serial ports
|
EFI_WIN_NT_SERIAL_PORT - maps physical serial ports
|
||||||
|
|
||||||
<F>ixed - Fixed disk like a hard drive.
|
<F>ixed - Fixed disk like a hard drive.
|
||||||
@ -76,11 +76,11 @@ EFI_WIN_NT_SERIAL_PORT - maps physical serial ports
|
|||||||
Declaring a text console window with the title "My EFI Console" woild look like:
|
Declaring a text console window with the title "My EFI Console" woild look like:
|
||||||
EFI_WIN_NT_CONSOLE=My EFI Console
|
EFI_WIN_NT_CONSOLE=My EFI Console
|
||||||
|
|
||||||
EFI_WIN_NT_UGA =
|
EFI_WIN_NT_GOP =
|
||||||
<width> <height>[!...]
|
<width> <height>[!...]
|
||||||
|
|
||||||
Declaring a two UGA windows with resolutions of 800x600 and 1024x768 would look like:
|
Declaring a two GOP windows with resolutions of 800x600 and 1024x768 would look like:
|
||||||
Example : EFI_WIN_NT_UGA=800 600!1024 768
|
Example : EFI_WIN_NT_GOP=800 600!1024 768
|
||||||
|
|
||||||
EFI_WIN_NT_SERIAL_PORT =
|
EFI_WIN_NT_SERIAL_PORT =
|
||||||
<port name>[!...]
|
<port name>[!...]
|
||||||
|
@ -26,7 +26,7 @@ EFI_WIN_NT_PHYSICAL_DISKS - maps to drives on your system
|
|||||||
EFI_WIN_NT_VIRTUAL_DISKS - maps to a device emulated by a file
|
EFI_WIN_NT_VIRTUAL_DISKS - maps to a device emulated by a file
|
||||||
EFI_WIN_NT_FILE_SYSTEM - mouts a directory as a file system
|
EFI_WIN_NT_FILE_SYSTEM - mouts a directory as a file system
|
||||||
EFI_WIN_NT_CONSOLE - make a logical comand line window (only one!)
|
EFI_WIN_NT_CONSOLE - make a logical comand line window (only one!)
|
||||||
EFI_WIN_NT_UGA - Builds UGA Windows of Width and Height
|
EFI_WIN_NT_GOP - Builds GOP Windows of Width and Height
|
||||||
EFI_WIN_NT_SERIAL_PORT - maps physical serial ports
|
EFI_WIN_NT_SERIAL_PORT - maps physical serial ports
|
||||||
EFI_WIN_NT_PASS_THRU - associates a device with our PCI support
|
EFI_WIN_NT_PASS_THRU - associates a device with our PCI support
|
||||||
|
|
||||||
@ -77,11 +77,11 @@ EFI_WIN_NT_PASS_THRU - associates a device with our PCI support
|
|||||||
Declaring a text console window with the title "My EFI Console" woild look like:
|
Declaring a text console window with the title "My EFI Console" woild look like:
|
||||||
EFI_WIN_NT_CONSOLE=My EFI Console
|
EFI_WIN_NT_CONSOLE=My EFI Console
|
||||||
|
|
||||||
EFI_WIN_NT_UGA =
|
EFI_WIN_NT_GOP =
|
||||||
<width> <height>[!...]
|
<width> <height>[!...]
|
||||||
|
|
||||||
Declaring a two UGA windows with resolutions of 800x600 and 1024x768 would look like:
|
Declaring a two GOP windows with resolutions of 800x600 and 1024x768 would look like:
|
||||||
Example : EFI_WIN_NT_UGA=800 600!1024 768
|
Example : EFI_WIN_NT_GOP=800 600!1024 768
|
||||||
|
|
||||||
EFI_WIN_NT_SERIAL_PORT =
|
EFI_WIN_NT_SERIAL_PORT =
|
||||||
<port name>[!...]
|
<port name>[!...]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user