2018-07-12 14:56:34 +00:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
2018-05-16 15:10:54 +00:00
|
|
|
From: Alexander Graf <agraf@suse.de>
|
|
|
|
Date: Wed, 1 Feb 2017 23:10:45 +0100
|
2018-07-10 19:08:14 +00:00
|
|
|
Subject: [PATCH] grub-core/video/efi_gop.c: Add support for BLT_ONLY adapters
|
2018-05-16 15:10:54 +00:00
|
|
|
|
|
|
|
EFI GOP has support for multiple different bitness types of frame buffers
|
|
|
|
and for a special "BLT only" type which is always defined to be RGBx.
|
|
|
|
|
|
|
|
Because grub2 doesn't ever directly access the frame buffer but instead
|
|
|
|
only renders graphics via the BLT interface anyway, we can easily support
|
|
|
|
these adapters.
|
|
|
|
|
|
|
|
The reason this has come up now is the emerging support for virtio-gpu
|
|
|
|
in OVMF. That adapter does not have the notion of a memory mapped frame
|
|
|
|
buffer and thus is BLT only.
|
|
|
|
|
|
|
|
Signed-off-by: Alexander Graf <agraf@suse.de>
|
|
|
|
---
|
|
|
|
grub-core/video/efi_gop.c | 2 ++
|
|
|
|
include/grub/efi/graphics_output.h | 3 ++-
|
|
|
|
2 files changed, 4 insertions(+), 1 deletion(-)
|
|
|
|
|
|
|
|
diff --git a/grub-core/video/efi_gop.c b/grub-core/video/efi_gop.c
|
|
|
|
index 7f9d1c2dfa1..c9e40e8d4e9 100644
|
|
|
|
--- a/grub-core/video/efi_gop.c
|
|
|
|
+++ b/grub-core/video/efi_gop.c
|
|
|
|
@@ -121,6 +121,7 @@ grub_video_gop_get_bpp (struct grub_efi_gop_mode_info *in)
|
|
|
|
{
|
|
|
|
case GRUB_EFI_GOT_BGRA8:
|
|
|
|
case GRUB_EFI_GOT_RGBA8:
|
|
|
|
+ case GRUB_EFI_GOT_BLT_ONLY:
|
|
|
|
return 32;
|
|
|
|
|
|
|
|
case GRUB_EFI_GOT_BITMASK:
|
|
|
|
@@ -187,6 +188,7 @@ grub_video_gop_fill_real_mode_info (unsigned mode,
|
|
|
|
switch (in->pixel_format)
|
|
|
|
{
|
|
|
|
case GRUB_EFI_GOT_RGBA8:
|
|
|
|
+ case GRUB_EFI_GOT_BLT_ONLY:
|
|
|
|
out->red_mask_size = 8;
|
|
|
|
out->red_field_pos = 0;
|
|
|
|
out->green_mask_size = 8;
|
|
|
|
diff --git a/include/grub/efi/graphics_output.h b/include/grub/efi/graphics_output.h
|
|
|
|
index 12977741192..e4388127c66 100644
|
|
|
|
--- a/include/grub/efi/graphics_output.h
|
|
|
|
+++ b/include/grub/efi/graphics_output.h
|
|
|
|
@@ -28,7 +28,8 @@ typedef enum
|
|
|
|
{
|
|
|
|
GRUB_EFI_GOT_RGBA8,
|
|
|
|
GRUB_EFI_GOT_BGRA8,
|
|
|
|
- GRUB_EFI_GOT_BITMASK
|
|
|
|
+ GRUB_EFI_GOT_BITMASK,
|
|
|
|
+ GRUB_EFI_GOT_BLT_ONLY,
|
|
|
|
}
|
|
|
|
grub_efi_gop_pixel_format_t;
|
|
|
|
|