diff --git a/Changelog.md b/Changelog.md index c005d7c31de0201d8d36358cf5e5b9345abf4b24..5d23fe9fe4d31a126212bad60e93dd66ef6496e9 100644 --- a/Changelog.md +++ b/Changelog.md @@ -20,6 +20,7 @@ OpenCore Changelog - Added 11.0 support for `AvoidRuntimeDefrag` Booter quirk - Fixed 11.0 lapic kernel quirk as of DP1 - Improved boot selection scripts for macOS without NVRAM +- Added UGA protocol compatibility in `ProvideConsoleGop` quirk #### v0.5.9 - Added full HiDPI support in OpenCanopy diff --git a/Docs/Configuration.pdf b/Docs/Configuration.pdf index fcbec4df9945b314f30abe128bec9cebedee93e2..bb40e305422d1cebf705de941c4629e638a0c933 100644 Binary files a/Docs/Configuration.pdf and b/Docs/Configuration.pdf differ diff --git a/Docs/Configuration.tex b/Docs/Configuration.tex index c1f75b86685cba5356e37752422a3d62fb467043..459d63068c28834e87d7f1521abce46c14f0b730 100755 --- a/Docs/Configuration.tex +++ b/Docs/Configuration.tex @@ -5104,9 +5104,10 @@ functioning. Feature highlights: \textbf{Failsafe}: \texttt{false}\\ \textbf{Description}: Ensure GOP (Graphics Output Protocol) on console handle. - macOS bootloader requires GOP to be present on console handle, yet the exact - location of GOP is not covered by the UEFI specification. This option will - ensure GOP is installed on console handle if it is present. + macOS bootloader requires GOP or UGA (for 10.4 EfiBoot) to be present on console + handle, yet the exact location of the graphics protocol is not covered by the + UEFI specification. This option will ensure GOP and UGA, if present, are available + on the console handle. \emph{Note}: This option will also replace broken GOP protocol on console handle, which may be the case on \texttt{MacPro5,1} with newer GPUs. diff --git a/Docs/Differences/Differences.pdf b/Docs/Differences/Differences.pdf index 7c5b13fefcf978f71823ea37122130f021af21a7..004684a7abe231fe4eb8288045eba789d97dfaaa 100644 Binary files a/Docs/Differences/Differences.pdf and b/Docs/Differences/Differences.pdf differ diff --git a/Docs/Differences/Differences.tex b/Docs/Differences/Differences.tex index cd1fc4d83ef2bc149e5151ef9692becea6f6b939..c49be3b04dca33ba5aaf57a21accb059ec6524a0 100644 --- a/Docs/Differences/Differences.tex +++ b/Docs/Differences/Differences.tex @@ -1,7 +1,7 @@ \documentclass[]{article} %DIF LATEXDIFF DIFFERENCE FILE -%DIF DEL PreviousConfiguration.tex Fri Jun 26 18:57:44 2020 -%DIF ADD ../Configuration.tex Fri Jun 26 18:57:44 2020 +%DIF DEL PreviousConfiguration.tex Tue Jun 2 03:55:18 2020 +%DIF ADD ../Configuration.tex Sun Jun 28 09:37:24 2020 \usepackage{lmodern} \usepackage{amssymb,amsmath} @@ -5205,9 +5205,10 @@ functioning. Feature highlights: \textbf{Failsafe}: \texttt{false}\\ \textbf{Description}: Ensure GOP (Graphics Output Protocol) on console handle. - macOS bootloader requires GOP to be present on console handle, yet the exact - location of GOP is not covered by the UEFI specification. This option will - ensure GOP is installed on console handle if it is present. + macOS bootloader requires GOP \DIFaddbegin \DIFadd{or UGA (for 10.4 EfiBoot) }\DIFaddend to be present on console + handle, yet the exact location of \DIFdelbegin \DIFdel{GOP }\DIFdelend \DIFaddbegin \DIFadd{the graphics protocol }\DIFaddend is not covered by the + UEFI specification. This option will ensure GOP \DIFdelbegin \DIFdel{is installed on console handle if it is present}\DIFdelend \DIFaddbegin \DIFadd{and UGA, if present, are available + on the console handle}\DIFaddend . \emph{Note}: This option will also replace broken GOP protocol on console handle, which may be the case on \texttt{MacPro5,1} with newer GPUs. diff --git a/Docs/Errata/Errata.pdf b/Docs/Errata/Errata.pdf index 56fe9bb8b54790b5aeff7ca5e9cf80363dd35190..eaebd7027278b343bde5e0b9293aeb92ae65ef8a 100644 Binary files a/Docs/Errata/Errata.pdf and b/Docs/Errata/Errata.pdf differ diff --git a/Library/OcConsoleLib/ConsoleGop.c b/Library/OcConsoleLib/ConsoleGop.c index 591c02c1d099454199ff1597332ff01574fb2765..1fab8e91aa3215ffaa40b6cb354b132c0c71d99b 100644 --- a/Library/OcConsoleLib/ConsoleGop.c +++ b/Library/OcConsoleLib/ConsoleGop.c @@ -63,15 +63,30 @@ ConsoleHandleProtocol ( Status = mOriginalHandleProtocol (Handle, Protocol, Interface); - if (Status == EFI_UNSUPPORTED) { - if (CompareGuid (&gEfiGraphicsOutputProtocolGuid, Protocol) - && mConsoleGraphicsOutput != NULL) { + if (Status != EFI_UNSUPPORTED) { + return Status; + } + + if (CompareGuid (&gEfiGraphicsOutputProtocolGuid, Protocol)) { + if (mConsoleGraphicsOutput != NULL) { *Interface = mConsoleGraphicsOutput; - Status = EFI_SUCCESS; + return EFI_SUCCESS; + } + } else if (CompareGuid (&gEfiUgaDrawProtocolGuid, Protocol)) { + // + // EfiBoot from 10.4 can only use UgaDraw protocol. + // + Status = gBS->LocateProtocol ( + &gEfiUgaDrawProtocolGuid, + NULL, + Interface + ); + if (!EFI_ERROR (Status)) { + return EFI_SUCCESS; } } - return Status; + return EFI_UNSUPPORTED; } VOID