From a35384e0b1dd1617374bee1d76d5200172fcddec Mon Sep 17 00:00:00 2001 From: Mykola Grymalyuk <48863253+khronokernel@users.noreply.github.com> Date: Sat, 20 Mar 2021 15:57:52 -0600 Subject: [PATCH] SysPatch.py: Fix AMD linking --- Resources/ModelArray.py | 17 +++++++----- Resources/SysPatch.py | 25 +++++++++--------- .../IOSurface.kext/Contents/Info.plist | 0 .../IOSurface.kext/Contents/MacOS/IOSurface | Bin .../Contents/_CodeSignature/CodeResources | 0 .../IOSurface.kext/Contents/version.plist | 0 6 files changed, 23 insertions(+), 19 deletions(-) rename payloads/Apple/Extensions/{misc-kexts => legacy-nvidia}/IOSurface.kext/Contents/Info.plist (100%) rename payloads/Apple/Extensions/{misc-kexts => legacy-nvidia}/IOSurface.kext/Contents/MacOS/IOSurface (100%) rename payloads/Apple/Extensions/{misc-kexts => legacy-nvidia}/IOSurface.kext/Contents/_CodeSignature/CodeResources (100%) rename payloads/Apple/Extensions/{misc-kexts => legacy-nvidia}/IOSurface.kext/Contents/version.plist (100%) diff --git a/Resources/ModelArray.py b/Resources/ModelArray.py index 0a413777d..be807128f 100644 --- a/Resources/ModelArray.py +++ b/Resources/ModelArray.py @@ -889,7 +889,7 @@ NoRootPatch11 = [ "Xserve3,1", ] -DeleteAccel11 = [ +DeleteNvidiaAccel11 = [ "AMDRadeonX4000.kext", "AMDRadeonX4000HWServices.kext", "AMDRadeonX5000.kext", @@ -914,12 +914,14 @@ DeleteAccel11 = [ "GeForce.kext", "IOAcceleratorFamily2.kext", "IOGPUFamily.kext", - "IOSurface.kext", - # May need to delete for AMD GPU acceleration - #"AMD8000Controller.kext" # AMDSupport Dependancy - #"AMD9000Controller.kext" # AMDSupport Dependancy - #"AMD9500Controller.kext" # IOAccelertor Dependancy - #"AMD10000Controller.kext" # AMDSupport Dependancy +] + +DeleteAMDAccel11 = [ + "AMD7000Controller.kext", # AMDSupport Dependancy + "AMD8000Controller.kext", # AMDSupport Dependancy + "AMD9000Controller.kext", # AMDSupport Dependancy + "AMD9500Controller.kext", # AMDSupport Dependancy + "AMD10000Controller.kext", # AMDSupport Dependancy ] AddNvidiaAccel11 = [ @@ -929,6 +931,7 @@ AddNvidiaAccel11 = [ "GeForceTeslaVADriver.bundle", "NVDANV50HalTesla.kext", "NVDAResmanTesla.kext", + "IOSurface.kext", ] AddAMDAccel11 = [ diff --git a/Resources/SysPatch.py b/Resources/SysPatch.py index 09385135c..77ef4d41d 100644 --- a/Resources/SysPatch.py +++ b/Resources/SysPatch.py @@ -64,8 +64,8 @@ class PatchSysVolume: else: print("- Could not find root volume") - def delete_old_binaries(self): - for delete_current_kext in ModelArray.DeleteAccel11: + def delete_old_binaries(self, vendor_patch): + for delete_current_kext in vendor_patch: delete_path = Path(self.mount_extensions) / Path(delete_current_kext) if Path(delete_path).exists(): print(f"- Deleting {delete_current_kext}") @@ -87,36 +87,37 @@ class PatchSysVolume: def gpu_accel_patches_11(self): print("- Deleting unsupported Binaries") - self.delete_old_binaries() + print("- Adding supported Binaries for GPU Accleration") # TODO: Add proper hardware checks # Due to MUX-based laptops and headless iGPUs, it's difficult to determine what GPU is present # Fix would be to parse IOReg for both IGPU and GFX0 if self.model in ModelArray.LegacyGPUNvidia: - print("- Adding legacy Nvidia Kexts and Bundles") + print("- Merging legacy Nvidia Kexts and Bundles") + self.delete_old_binaries(ModelArray.DeleteNvidiaAccel11) self.add_new_binaries(ModelArray.AddNvidiaAccel11, self.constants.legacy_nvidia_path) elif self.model in ModelArray.LegacyGPUAMD: - print("- Adding legacy AMD Kexts and Bundles") + print("- Merging legacy AMD Kexts and Bundles") + self.delete_old_binaries(ModelArray.DeleteAMDAccel11) self.add_new_binaries(ModelArray.AddAMDAccel11, self.constants.legacy_amd_path) if self.model in ModelArray.LegacyGPUIntelGen1: - print("- Adding legacy Intel 1st Gen Kexts and Bundles") + print("- Merging legacy Intel 1st Gen Kexts and Bundles") self.add_new_binaries(ModelArray.AddIntelGen1Accel, self.constants.legacy_intel_gen1_path) elif self.model in ModelArray.LegacyGPUIntelGen2: - print("- Adding legacy Intel 2nd Gen Kexts and Bundles") + print("- Merging legacy Intel 2nd Gen Kexts and Bundles") self.add_new_binaries(ModelArray.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path) # iMac10,1 came in both AMD and Nvidia GPU models, so we must do hardware detection if self.model == "iMac10,1": if self.constants.current_gpuv == "AMD (0x1002)": - print("- Adding legacy AMD Kexts and Bundles") + print("- Merging legacy AMD Kexts and Bundles") + self.delete_old_binaries(ModelArray.DeleteAMDAccel11) self.add_new_binaries(ModelArray.AddAMDAccel11, self.constants.legacy_amd_path) else: - print("- Adding legacy Nvidia Kexts and Bundles") + print("- Merging legacy Nvidia Kexts and Bundles") + self.delete_old_binaries(ModelArray.DeleteNvidiaAccel11) self.add_new_binaries(ModelArray.AddNvidiaAccel11, self.constants.legacy_nvidia_path) - print("- Adding Catalina's IOSurface.kext") - subprocess.run(f"sudo cp -R {self.constants.iosurface_path} {self.mount_extensions}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode() - # Frameworks print("- Merging legacy Frameworks") subprocess.run(f"sudo ditto {self.constants.payload_apple_frameworks_path} {self.mount_frameworks}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode() diff --git a/payloads/Apple/Extensions/misc-kexts/IOSurface.kext/Contents/Info.plist b/payloads/Apple/Extensions/legacy-nvidia/IOSurface.kext/Contents/Info.plist similarity index 100% rename from payloads/Apple/Extensions/misc-kexts/IOSurface.kext/Contents/Info.plist rename to payloads/Apple/Extensions/legacy-nvidia/IOSurface.kext/Contents/Info.plist diff --git a/payloads/Apple/Extensions/misc-kexts/IOSurface.kext/Contents/MacOS/IOSurface b/payloads/Apple/Extensions/legacy-nvidia/IOSurface.kext/Contents/MacOS/IOSurface similarity index 100% rename from payloads/Apple/Extensions/misc-kexts/IOSurface.kext/Contents/MacOS/IOSurface rename to payloads/Apple/Extensions/legacy-nvidia/IOSurface.kext/Contents/MacOS/IOSurface diff --git a/payloads/Apple/Extensions/misc-kexts/IOSurface.kext/Contents/_CodeSignature/CodeResources b/payloads/Apple/Extensions/legacy-nvidia/IOSurface.kext/Contents/_CodeSignature/CodeResources similarity index 100% rename from payloads/Apple/Extensions/misc-kexts/IOSurface.kext/Contents/_CodeSignature/CodeResources rename to payloads/Apple/Extensions/legacy-nvidia/IOSurface.kext/Contents/_CodeSignature/CodeResources diff --git a/payloads/Apple/Extensions/misc-kexts/IOSurface.kext/Contents/version.plist b/payloads/Apple/Extensions/legacy-nvidia/IOSurface.kext/Contents/version.plist similarity index 100% rename from payloads/Apple/Extensions/misc-kexts/IOSurface.kext/Contents/version.plist rename to payloads/Apple/Extensions/legacy-nvidia/IOSurface.kext/Contents/version.plist