Add AppleGVA patch set

This commit is contained in:
Mykola Grymalyuk
2021-10-06 09:44:00 -06:00
parent ae2a015c67
commit ee77f76c3a
4 changed files with 49 additions and 9 deletions

View File

@@ -26,7 +26,7 @@
- Add Legacy GMUX patchsets
- Applicable for dual GPU MacBookPro5,x and demuxed MacBookPro8,x
- Increment Binaries:
- PatcherSupportPkg 0.1.5 release
- PatcherSupportPkg 0.1.6 release
- RestrictEvents 1.0.5 rolling (2430ed0)
- Limit MacBookPro6,2 G State
- Works around crashing when switching GPUs
@@ -37,6 +37,8 @@
- Resolve dGPU output on MacBookPro10,1
- Add Panel ID `9cd6` for iMac11,3
- Resolves Brightness control
- Add AppleGVA patch set for HD3000 machines
- Mainly applicable for iMac12,x and iGPU-only MacBooks
## 0.2.5

View File

@@ -13,8 +13,9 @@ from resources import device_probe
class Constants:
def __init__(self):
# Patcher Versioning
self.patcher_version = "0.3.0" # OpenCore-Legacy-Patcher
self.patcher_support_pkg_version = "0.1.5" # PatcherSupportPkg
self.patcher_support_pkg_version = "0.1.6" # PatcherSupportPkg
self.url_patcher_support_pkg = "https://github.com/dortania/PatcherSupportPkg/releases/download/"
self.nightly_url_patcher_support_pkg = "https://nightly.link/dortania/PatcherSupportPkg/workflows/build/master/"
# OpenCore Versioning
# https://github.com/acidanthera/OpenCorePkg
@@ -144,6 +145,7 @@ class Constants:
self.set_alc_usage = True # Set AppleALC usage
self.dGPU_switch = True # Set Display GPU Switching for Windows
self.force_surplus = False # Force SurPlus patch in newer OSes
self.force_latest_psp = False # Force latest PatcherSupportPkg
# OS Versions
## Based off Major Kernel Version
@@ -189,9 +191,6 @@ class Constants:
self.arch_fermi = "GF100"
self.arch_kepler = "GK100"
# External Files
self.url_patcher_support_pkg = "https://github.com/dortania/PatcherSupportPkg/releases/download/"
self.legacy_accel_support = [
self.mojave,
self.catalina,
@@ -565,6 +564,10 @@ class Constants:
@property
def payload_apple_private_frameworks_path_brightness(self):
return self.payload_apple_private_frameworks_path / Path("Brightness-Control")
@property
def payload_apple_private_frameworks_path_legacy_drm(self):
return self.payload_apple_private_frameworks_path / Path("Legacy-GVA")
# Apple Extensions
# El Capitan Extensions
@@ -658,4 +661,16 @@ class Constants:
"Mac-937CB26E2E02BB01", # MacBookAir7,2
"Mac-35C5E08120C7EEAF", # Macmini7,1
"Mac-7BA5B2D9E42DDD94", # iMacPro1,1
]
sandy_board_id_stock = [
"Mac-94245B3640C91C81", # MacBookPro8,1
"Mac-94245A3940C91C80", # MacBookPro8,2
"Mac-942459F5819B171B", # MacBookPro8,3
"Mac-C08A6BB70A942AC2", # MacBookAir4,1
"Mac-742912EFDBEE19B3", # MacBookAir4,2
"Mac-8ED6AF5B48C039E1", # Macmini5,1
"Mac-7BA5B2794B2CDB12", # Macmini5,3
"Mac-942B5BF58194151B", # iMac12,1
"Mac-942B59F58194171B", # iMac12,2
]

View File

@@ -66,7 +66,7 @@ class generate_defaults():
if utilities.amfi_status() is False:
settings.amfi_status = False
if utilities.get_nvram("gpu-power-prefs", "FA4CE28D-B62F-4C99-9CC3-6815686E30F9"):
if model in ["MacBookPro8,2", "MacBookPro8,3"]:
# Users disabling TS2 most likely have a faulty dGPU
# users can override this in settings
settings.allow_ts2_accel = False

View File

@@ -390,15 +390,30 @@ set million colour before rebooting"""
print("- Installing Sandy Bridge Acceleration Kext patches for Mojave/Catalina")
self.gpu_accel_legacy()
self.add_new_binaries(sys_patch_data.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path)
self.gpu_accel_legacy_sandybridge_board_id()
elif self.constants.detected_os in [self.constants.big_sur, self.constants.monterey]:
print("- Installing Sandy Bridge Acceleration Kext patches for Big Sur/Monterey")
self.delete_old_binaries(sys_patch_data.DeleteNvidiaAccel11)
self.gpu_accel_legacy()
self.add_new_binaries(sys_patch_data.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path)
self.gpu_accel_legacy_sandybridge_board_id()
self.gpu_accel_legacy_gva()
else:
print("- Installing basic Sandy Bridge Framebuffer Kext patches for generic OS")
self.add_new_binaries(sys_patch_data.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path)
self.gpu_accel_legacy_sandybridge_board_id()
def gpu_accel_legacy_sandybridge_board_id(self):
if self.computer.reported_board_id in self.constants.sandy_board_id_stock:
print("- Using stock AppleIntelSNBGraphicsFB")
self.add_new_binaries(sys_patch_data.AddIntelGen2AccelStock, self.constants.legacy_intel_gen2_path)
# Rename kext
utilities.process_status(utilities.elevated(["mv", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB-Clean.kext", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
else:
# Adjust board ID for spoofs
print("- Installing modified AppleIntelSNBGraphicsFB")
self.add_new_binaries(sys_patch_data.AddIntelGen2AccelPatched, self.constants.legacy_intel_gen2_path)
def gpu_framebuffer_ivybridge_master(self):
if self.constants.detected_os == self.constants.monterey:
print("- Installing IvyBridge Acceleration Kext patches for Monterey")
@@ -421,6 +436,10 @@ set million colour before rebooting"""
else:
print("- Installing Kepler Kext patches for generic OS")
self.add_new_binaries(sys_patch_data.AddNvidiaKeplerAccel11, self.constants.legacy_nvidia_kepler_path)
def gpu_accel_legacy_gva(self):
print("- Merging AppleGVA Hardware Accel patches for non-Metal")
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_private_frameworks_path_legacy_drm}/", self.mount_private_frameworks], stdout=subprocess.PIPE)
def gpu_accel_legacy_extended(self):
print("- Merging general legacy Frameworks")
@@ -780,11 +799,15 @@ set million colour before rebooting"""
print("\nCannot patch! Please disable AMFI.")
print("For Hackintoshes, please add amfi_get_out_of_my_way=1 to boot-args")
if self.check_board_id is True and self.computer.reported_board_id not in self.constants.sandy_board_id:
if self.check_board_id is True and (
self.computer.reported_board_id not in self.constants.sandy_board_id and
self.computer.reported_board_id not in self.constants.sandy_board_id_stock
):
print("\nCannot patch! Board ID not supported by AppleIntelSNBGraphicsFB")
print(f"Detected Board ID: {self.computer.reported_board_id}")
print("Please ensure your Board ID is listed below:")
print("\n".join(self.constants.sandy_board_id))
print("\n".join(self.constants.sandy_board_id_stock))
self.bad_board_id = True
if self.dosdude_patched is True: