forked from xt-sys/exectos
Initial version of EFI framebuffer module, currently support only GOP
This commit is contained in:
51
xtldr/modules/framebuf/gop.c
Normal file
51
xtldr/modules/framebuf/gop.c
Normal file
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtldr/modules/framebuf/gop.c
|
||||
* DESCRIPTION: Graphical Output Protocol (GOP) support
|
||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
||||
*/
|
||||
|
||||
#include <framebuf.h>
|
||||
|
||||
|
||||
/**
|
||||
* Returns a number of bits per pixel (BPP) in the current video mode.
|
||||
*
|
||||
* @return A number of bits per pixel.
|
||||
*
|
||||
* @since XT 1.0
|
||||
*/
|
||||
XTCDECL
|
||||
UINT32
|
||||
GoppGetBitsPerPixel()
|
||||
{
|
||||
UINT32 BitsPerPixel, CompoundMask;
|
||||
|
||||
switch(FrameBufferInfo.Adapter.GOP->Mode->Info->PixelFormat)
|
||||
{
|
||||
case PixelBlueGreenRedReserved8BitPerColor:
|
||||
case PixelRedGreenBlueReserved8BitPerColor:
|
||||
case PixelBltOnly:
|
||||
BitsPerPixel = 32;
|
||||
break;
|
||||
case PixelBitMask:
|
||||
BitsPerPixel = 32;
|
||||
CompoundMask = FrameBufferInfo.Adapter.GOP->Mode->Info->PixelInformation.RedMask |
|
||||
FrameBufferInfo.Adapter.GOP->Mode->Info->PixelInformation.GreenMask |
|
||||
FrameBufferInfo.Adapter.GOP->Mode->Info->PixelInformation.BlueMask |
|
||||
FrameBufferInfo.Adapter.GOP->Mode->Info->PixelInformation.ReservedMask;
|
||||
while((CompoundMask & (1 << 31)) == 0)
|
||||
{
|
||||
BitsPerPixel--;
|
||||
CompoundMask <<= 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
BitsPerPixel = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Return bpp */
|
||||
return BitsPerPixel;
|
||||
}
|
Reference in New Issue
Block a user