exectos/xtldr/modules/framebuf/gop.c
belliash 605597262c
All checks were successful
ci/woodpecker/push/build Pipeline was successful
Initial version of EFI framebuffer module, currently support only GOP
2023-01-16 18:41:25 +01:00

52 lines
1.5 KiB
C

/**
* 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;
}