提交 01fcf0ee 编写于 作者: M Mark Kettenis 提交者: Anatolij Gustschin

efi_loader: GOP: Add 30bpp support

Provide correct framebuffer information for 30bpp modes.
Signed-off-by: NMark Kettenis <kettenis@openbsd.org>
上级 0efe41ca
......@@ -432,7 +432,7 @@ efi_status_t EFIAPI gop_blt(struct efi_gop *this, struct efi_gop_pixel *buffer,
efi_status_t efi_gop_register(void)
{
struct efi_gop_obj *gopobj;
u32 bpix, col, row;
u32 bpix, format, col, row;
u64 fb_base, fb_size;
void *fb;
efi_status_t ret;
......@@ -449,6 +449,7 @@ efi_status_t efi_gop_register(void)
priv = dev_get_uclass_priv(vdev);
bpix = priv->bpix;
format = priv->format;
col = video_get_xsize(vdev);
row = video_get_ysize(vdev);
fb_base = (uintptr_t)priv->fb;
......@@ -458,6 +459,7 @@ efi_status_t efi_gop_register(void)
int line_len;
bpix = panel_info.vl_bpix;
format = VIDEO_UNKNOWN;
col = panel_info.vl_col;
row = panel_info.vl_row;
fb_base = gd->fb_base;
......@@ -517,7 +519,15 @@ efi_status_t efi_gop_register(void)
if (bpix == LCD_COLOR32)
#endif
{
gopobj->info.pixel_format = EFI_GOT_BGRA8;
if (format == VIDEO_X2R10G10B10) {
gopobj->info.pixel_format = EFI_GOT_BITMASK;
gopobj->info.pixel_bitmask[0] = 0x3ff00000; /* red */
gopobj->info.pixel_bitmask[1] = 0x000ffc00; /* green */
gopobj->info.pixel_bitmask[2] = 0x000003ff; /* blue */
gopobj->info.pixel_bitmask[3] = 0xc0000000; /* reserved */
} else {
gopobj->info.pixel_format = EFI_GOT_BGRA8;
}
} else {
gopobj->info.pixel_format = EFI_GOT_BITMASK;
gopobj->info.pixel_bitmask[0] = 0xf800; /* red */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册