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