aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAhmad Khalifa <vexeduxr@FreeBSD.org>2026-01-04 13:15:37 +0000
committerAhmad Khalifa <vexeduxr@FreeBSD.org>2026-01-12 17:24:55 +0000
commitd3902baca506ec48e2f8b1121c7744766a175516 (patch)
tree22ea4a6c7b54954a98f77ef8209436a99312ae45
parent5a9e2c59cb08bf1c1a428cd8a9ebd2886381a051 (diff)
loader.efi: only use firmware provided Blt on GOP
gfx_state.tg_private points to a EFI_GRAPHICS_OUTPUT_PROTOCOL only when using GOP. The firmware provided Blt functions on UGA platforms have been observed to not work on old MacBooks, and are likley hit or miss anyways as UGA has been deprecated since 2006. Reviewed by: tsoome PR: 291935 MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D54432 (cherry picked from commit 9595055ae7494997bb07b4aaed544f88ac4c5e7f)
-rw-r--r--stand/common/gfx_fb.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/stand/common/gfx_fb.c b/stand/common/gfx_fb.c
index 659bf8540422..3ac3694ce5fe 100644
--- a/stand/common/gfx_fb.c
+++ b/stand/common/gfx_fb.c
@@ -83,6 +83,7 @@
*/
#include <sys/param.h>
+#include <assert.h>
#include <stand.h>
#include <teken.h>
#include <gfx_fb.h>
@@ -856,7 +857,7 @@ gfxfb_blt(void *BltBuffer, GFXFB_BLT_OPERATION BltOperation,
int rv;
#if defined(EFI)
EFI_STATUS status;
- EFI_GRAPHICS_OUTPUT *gop = gfx_state.tg_private;
+ EFI_GRAPHICS_OUTPUT *gop;
EFI_TPL tpl;
/*
@@ -866,7 +867,10 @@ gfxfb_blt(void *BltBuffer, GFXFB_BLT_OPERATION BltOperation,
* done as they are provided by protocols that disappear when exit
* boot services.
*/
- if (!ignore_gop_blt && gop != NULL && boot_services_active) {
+ if (gfx_state.tg_fb_type == FB_GOP && !ignore_gop_blt &&
+ boot_services_active) {
+ assert(gfx_state.tg_private != NULL);
+ gop = gfx_state.tg_private;
tpl = BS->RaiseTPL(TPL_NOTIFY);
switch (BltOperation) {
case GfxFbBltVideoFill: