diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f9b867cb..2963b8735 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Add support for Universal 2 distribution (x86_64 and ARM64) - Drops Rosetta requirement on Apple Silicon Macs - Note building from source will require Python 3.11 or newer and up-to-date Python modules +- Resolve dGPU support for MacBookPro14,3 in macOS Sonoma - Increment Binaries: - OpenCorePkg 0.9.3 - release - Lilu 1.6.6 - release @@ -17,7 +18,7 @@ - CPUFriend 1.2.7 - release - BlueToolFixup 2.6.8 - rolling (2305aaa) - CryptexFixup 1.0.2 - release - - PatcherSupportPkg 1.2.6 - release + - PatcherSupportPkg 1.3.0 - release - Build Server Changes: - Upgrade Python backend to 3.11.5 - Upgrade Python modules: diff --git a/data/sys_patch_dict.py b/data/sys_patch_dict.py index aa3fdb381..54454e6cc 100644 --- a/data/sys_patch_dict.py +++ b/data/sys_patch_dict.py @@ -782,6 +782,40 @@ class SystemPatchDictionary(): }, }, }, + + # For MacBookPro14,3 (and other AMD dGPUs that no longer function in Sonoma) + # iMac18,2/3 still function with the generic framebuffer, however if issues arise + # we'll downgrade them as well. + "AMD Legacy GCN v2": { + "Display Name": "Graphics: AMD Legacy GCN (2017)", + "OS Support": { + "Minimum OS Support": { + "OS Major": os_data.os_data.sonoma, + "OS Minor": 0 + }, + "Maximum OS Support": { + "OS Major": os_data.os_data.max_os, + "OS Minor": 99 + }, + }, + "Install": { + "/System/Library/Extensions": { + "AMD9500Controller.kext": "13.5.2", + "AMD10000Controller.kext": "13.5.2", + "AMDRadeonX4000.kext": "13.5.2", + "AMDRadeonX4000HWServices.kext": "13.5.2", + "AMDFramebuffer.kext": "13.5.2", + "AMDSupport.kext": "13.5.2", + + "AMDRadeonVADriver.bundle": "13.5.2", + "AMDRadeonVADriver2.bundle": "13.5.2", + "AMDRadeonX4000GLDriver.bundle": "13.5.2", + "AMDMTLBronzeDriver.bundle": "13.5.2", + "AMDShared.bundle": "13.5.2", + }, + }, + }, + # Used only for AMD Polaris with host lacking AVX2.0 # Note missing framebuffers are not restored (ex. 'ATY,Berbice') "AMD Legacy Polaris": { diff --git a/resources/constants.py b/resources/constants.py index 033ce3bff..e6fda315e 100644 --- a/resources/constants.py +++ b/resources/constants.py @@ -14,7 +14,7 @@ class Constants: def __init__(self) -> None: # Patcher Versioning self.patcher_version: str = "0.6.9" # OpenCore-Legacy-Patcher - self.patcher_support_pkg_version: str = "1.2.9" # PatcherSupportPkg + self.patcher_support_pkg_version: str = "1.3.0" # PatcherSupportPkg self.copyright_date: str = "Copyright © 2020-2023 Dortania" self.patcher_name: str = "OpenCore Legacy Patcher" diff --git a/resources/sys_patch/sys_patch_detect.py b/resources/sys_patch/sys_patch_detect.py index e442bbd8e..87df614a1 100644 --- a/resources/sys_patch/sys_patch_detect.py +++ b/resources/sys_patch/sys_patch_detect.py @@ -40,6 +40,7 @@ class DetectRootPatch: self.broadwell_gpu = False self.skylake_gpu = False self.legacy_gcn = False + self.legacy_gcn_v2 = False self.legacy_polaris = False self.legacy_vega = False @@ -158,12 +159,20 @@ class DetectRootPatch: # full compatibility (namely power states, etc) # Reference: https://github.com/dortania/bugtracker/issues/292 # TODO: Probe framebuffer families further - if self.model != "MacBookPro13,3": + # Sonoma note: MacBookPro14,3 has the same issue... + # iMac18,2/3 is partially affected, however currently it seems the generic framebuffer + # is sufficient. Only MacBookPro14,3 needs this for dGPU handling + if self.model not in ["MacBookPro13,3", "MacBookPro14,3"]: if "AVX2" in self.constants.computer.cpu.leafs: continue self.legacy_polaris = True else: - self.legacy_gcn = True + if self.model == "MacBookPro13,3": + self.legacy_gcn = True + elif self.model == "MacBookPro14,3": + if self.constants.detected_os < os_data.os_data.sonoma: + continue + self.legacy_gcn_v2 = True else: self.legacy_gcn = True self.supports_metal = True @@ -233,7 +242,7 @@ class DetectRootPatch: self.sandy_gpu = False self.legacy_keyboard_backlight = False - if self.legacy_gcn is True: + if self.legacy_gcn is True or self.legacy_gcn_v2 is True: # We can only support one or the other due to the nature of relying # on portions of the native AMD stack for Polaris and Vega # Thus we'll prioritize legacy GCN due to being the internal card @@ -294,6 +303,7 @@ class DetectRootPatch: self.iron_gpu = False self.sandy_gpu = False self.legacy_gcn = False + self.legacy_gcn_v2 = False self.legacy_polaris = False self.legacy_vega = False self.brightness_legacy = False @@ -589,6 +599,7 @@ class DetectRootPatch: "Graphics: AMD TeraScale 1": self.amd_ts1, "Graphics: AMD TeraScale 2": self.amd_ts2, "Graphics: AMD Legacy GCN": self.legacy_gcn, + "Graphics: AMD Legacy GCN (2017)": self.legacy_gcn_v2, "Graphics: AMD Legacy Polaris": self.legacy_polaris, "Graphics: AMD Legacy Vega": self.legacy_vega, "Graphics: Intel Ironlake": self.iron_gpu, diff --git a/resources/sys_patch/sys_patch_generate.py b/resources/sys_patch/sys_patch_generate.py index 881af177b..e97418c09 100644 --- a/resources/sys_patch/sys_patch_generate.py +++ b/resources/sys_patch/sys_patch_generate.py @@ -139,6 +139,8 @@ class GenerateRootPatchSets: required_patches.update({"Revert GVA Downgrade": all_hardware_patchset["Graphics"]["Revert GVA Downgrade"]}) if "AVX2" not in self.constants.computer.cpu.leafs: required_patches.update({"AMD OpenCL": all_hardware_patchset["Graphics"]["AMD OpenCL"]}) + if self.hardware_details["Graphics: AMD Legacy GCN (2017)"] is True: + required_patches.update({"AMD Legacy GCN v2": all_hardware_patchset["Graphics"]["AMD Legacy GCN v2"]}) if self.hardware_details["Graphics: AMD Legacy Vega"] is True: required_patches.update({"Monterey GVA": all_hardware_patchset["Graphics"]["Monterey GVA"]})