From 08731521adbc43598e43d280acbe4f1a473de71a Mon Sep 17 00:00:00 2001
From: Mykola Grymalyuk <48863253+khronokernel@users.noreply.github.com>
Date: Tue, 2 Mar 2021 07:30:59 -0700
Subject: [PATCH] Add Backlight patches for modded Nvidia GPUs
---
CHANGELOG.md | 2 ++
OpenCore-Patcher.command | 2 --
Resources/Constants.py | 5 +++++
Resources/build.py | 20 ++++++++++++------
payloads/Config/v0.6.7/config.plist | 18 ++++++++++++++++
.../Kexts/Misc/AppleBacklightFixup-v1.0.0.zip | Bin 0 -> 9206 bytes
6 files changed, 38 insertions(+), 9 deletions(-)
create mode 100644 payloads/Kexts/Misc/AppleBacklightFixup-v1.0.0.zip
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c9c56758b..749421f82 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,8 @@
# OpenCore Legacy Patcher changelog
## 0.0.12
+- Convert OpenCore-Patcher binary to OpenCore-Patcher.app
+- Add Backlight patches for modded Nvidia GPUs in iMac10,x-12,x
## 0.0.11
- Re-add OpenCore GUI
diff --git a/OpenCore-Patcher.command b/OpenCore-Patcher.command
index 0de49110d..f7c6e6392 100755
--- a/OpenCore-Patcher.command
+++ b/OpenCore-Patcher.command
@@ -6,8 +6,6 @@ import subprocess, sys, time
from Resources import build, ModelArray, Constants, utilities
-PATCHER_VERSION = "0.0.11"
-
class OpenCoreLegacyPatcher():
def __init__(self):
diff --git a/Resources/Constants.py b/Resources/Constants.py
index 1b8657cbd..970a61042 100644
--- a/Resources/Constants.py
+++ b/Resources/Constants.py
@@ -25,6 +25,7 @@ class Constants:
self.voodoohda_version = "296"
self.restrictevents_version = "1.0.0"
self.piixata_version = "1.0.0"
+ self.backlight_version = "1.0.0"
# Get resource path
self.current_path = Path(__file__).parent.parent.resolve()
@@ -32,6 +33,8 @@ class Constants:
self.custom_model: str = None
self.custom_mxm_gpu: str = None
+ self.current_gpuv: str = None
+ self.current_gpud: str = None
# Payload Location
# OpenCore
@property
@@ -78,6 +81,8 @@ class Constants:
def voodoohda_path(self): return self.payload_kexts_path / Path(f"Audio/VoodooHDA-v{self.voodoohda_version}.zip")
@property
def piixata_path(self): return self.payload_kexts_path / Path(f"Misc/AppleIntelPIIXATA-v{self.piixata_version}.zip")
+ @property
+ def backlight_path(self): return self.payload_kexts_path / Path(f"Misc/AppleBacklightFixup-v{self.backlight_version}.zip")
# Build Location
@property
diff --git a/Resources/build.py b/Resources/build.py
index 005b3afec..b4a3a0c0f 100644
--- a/Resources/build.py
+++ b/Resources/build.py
@@ -153,19 +153,21 @@ class BuildOpenCore:
# Check GPU Vendor
if self.constants.custom_model == "None":
current_gpu: str = subprocess.run("system_profiler SPDisplaysDataType".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
- current_gpuv = [line.strip().split(": ", 1)[1] for line in current_gpu.split("\n") if line.strip().startswith(("Vendor"))][0]
- current_gpud = [line.strip().split(": ", 1)[1] for line in current_gpu.split("\n") if line.strip().startswith(("Device ID"))][0]
- print(f"- Detected GPU: {current_gpuv} {current_gpud}")
- if (current_gpuv == "AMD (0x1002)") & (current_gpud in ModelArray.AMDMXMGPUs):
+ self.constants.current_gpuv = [line.strip().split(": ", 1)[1] for line in current_gpu.split("\n") if line.strip().startswith(("Vendor"))][0]
+ self.constants.current_gpud = [line.strip().split(": ", 1)[1] for line in current_gpu.split("\n") if line.strip().startswith(("Device ID"))][0]
+ print(f"- Detected GPU: {self.constants.current_gpuv} {self.constants.current_gpud}")
+ if (self.constants.current_gpuv == "AMD (0x1002)") & (self.constants.current_gpud in ModelArray.AMDMXMGPUs):
self.constants.custom_mxm_gpu = True
print("- Adding AMD DRM patches")
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " shikigva=80 unfairgva=1"
- elif (current_gpuv == "NVIDIA (0x10de)") & (current_gpud in ModelArray.NVIDIAMXMGPUs):
+ elif (self.constants.current_gpuv == "NVIDIA (0x10de)") & (self.constants.current_gpud in ModelArray.NVIDIAMXMGPUs):
self.constants.custom_mxm_gpu = True
print("- Adding Brightness Control patches")
if self.model in ["iMac11,1", "iMac11,2", "iMac11,3"]:
backlight_path = "PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)"
self.config["DeviceProperties"]["Add"][backlight_path] = {"@0,backlight-control": binascii.unhexlify("01000000"), "@0,built-in": binascii.unhexlify("01000000")}
+ shutil.copy(self.constants.backlight_path, self.constants.kexts_path)
+ self.get_kext_by_bundle_path("AppleBacklightFixup.kext")["Enabled"] = True
elif self.model in ["iMac12,1", "iMac12,2"]:
backlight_path = "PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"
self.config["DeviceProperties"]["Add"][backlight_path] = {"@0,backlight-control": binascii.unhexlify("01000000"), "@0,built-in": binascii.unhexlify("01000000")}
@@ -200,7 +202,12 @@ class BuildOpenCore:
spoofed_model = "Macmini7,1"
spoofed_board = "Mac-35C5E08120C7EEAF"
elif self.model in ModelArray.iMac151:
- if self.constants.custom_mxm_gpu == True:
+ # Check for upgraded GPUs on iMacs
+ if (self.constants.current_gpuv == "AMD (0x1002)") & (self.constants.current_gpud in ModelArray.AMDMXMGPUs) & (self.constants.custom_model == "None"):
+ print("- Spoofing to iMacPro1,1")
+ spoofed_model = "iMacPro1,1"
+ spoofed_board = "Mac-7BA5B2D9E42DDD94"
+ elif (self.constants.current_gpuv == "NVIDIA (0x10de)") & (self.constants.current_gpud in ModelArray.NVIDIAMXMGPUs) & (self.constants.custom_model == "None"):
print("- Spoofing to iMacPro1,1")
spoofed_model = "iMacPro1,1"
spoofed_board = "Mac-7BA5B2D9E42DDD94"
@@ -244,7 +251,6 @@ class BuildOpenCore:
smbios_mod = True
# USB Map
- usb_map_path = Path(self.constants.current_path) / Path(f"payloads/Kexts/Maps/Universal/Info.plist")
self.new_map_ls = Path(self.constants.map_contents_folder) / Path(f"Info.plist")
self.map_config = plistlib.load(Path(self.new_map_ls).open("rb"))
diff --git a/payloads/Config/v0.6.7/config.plist b/payloads/Config/v0.6.7/config.plist
index a3a0b8f17..c258642fc 100644
--- a/payloads/Config/v0.6.7/config.plist
+++ b/payloads/Config/v0.6.7/config.plist
@@ -494,6 +494,24 @@
PlistPath
Contents/Info.plist
+
+ Arch
+ x86_64
+ Comment
+ AppleBacklightFixup - Modded Nvidia GPUs
+ Enabled
+
+ MaxKernel
+
+ MinKernel
+
+ BundlePath
+ AppleBacklightFixup.kext
+ ExecutablePath
+ Contents/MacOS/AppleBacklightFixup
+ PlistPath
+ Contents/Info.plist
+
Arch
x86_64
diff --git a/payloads/Kexts/Misc/AppleBacklightFixup-v1.0.0.zip b/payloads/Kexts/Misc/AppleBacklightFixup-v1.0.0.zip
new file mode 100644
index 0000000000000000000000000000000000000000..f72624bd4b12cb1853b4191bdafcc41134bb2d33
GIT binary patch
literal 9206
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
literal 0
HcmV?d00001