From 71cf30626416654d6e128cc34b591affb2d76dc4 Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Wed, 3 Jul 2024 12:34:46 -0400 Subject: [PATCH 01/11] Add TeraScaleFixup logic --- opencore_legacy_patcher/constants.py | 9 ++++- opencore_legacy_patcher/datasets/pci_data.py | 23 ++++++++++-- .../detections/device_probe.py | 2 + .../efi_builder/graphics_audio.py | 11 +++++- opencore_legacy_patcher/efi_builder/misc.py | 4 +- .../sys_patch/sys_patch_detect.py | 35 +++++++++++++++--- .../LegacyKeyboardInjector-v1.0.0.zip | Bin .../Jazzzny/TeraScaleFixup-1.0.0-DEBUG.zip | Bin 0 -> 12493 bytes .../Jazzzny/TeraScaleFixup-1.0.0-RELEASE.zip | Bin 0 -> 67401 bytes 9 files changed, 68 insertions(+), 16 deletions(-) rename payloads/Kexts/{Misc => Jazzzny}/LegacyKeyboardInjector-v1.0.0.zip (100%) create mode 100644 payloads/Kexts/Jazzzny/TeraScaleFixup-1.0.0-DEBUG.zip create mode 100644 payloads/Kexts/Jazzzny/TeraScaleFixup-1.0.0-RELEASE.zip diff --git a/opencore_legacy_patcher/constants.py b/opencore_legacy_patcher/constants.py index c4a499a43b..1f65c69133 100644 --- a/opencore_legacy_patcher/constants.py +++ b/opencore_legacy_patcher/constants.py @@ -123,7 +123,8 @@ def __init__(self) -> None: self.kdkless_version: str = "1.0.0" ## Jazzzny - self.legacy_keyboard: str = "1.0.0" # LegacyKeyboardInjector - Jazzzny + self.legacy_keyboard_version: str = "1.0.0" # LegacyKeyboardInjector + self.terascalefixup_version: str = "1.0.0" # TeraScaleFixup # Get resource path self.current_path: Path = Path(__file__).parent.parent.resolve() @@ -593,7 +594,11 @@ def apple_isight_path(self): @property def legacy_keyboard_path(self): - return self.payload_kexts_path / Path(f"Misc/LegacyKeyboardInjector-v{self.legacy_keyboard}.zip") + return self.payload_kexts_path / Path(f"Jazzzny/LegacyKeyboardInjector-v{self.legacy_keyboard}.zip") + + @property + def terascalefixup_path(self): + return self.payload_kexts_path / Path(f"Jazzzny/TeraScaleFixup-v{self.terascalefixup}-{self.kext_variant}.zip") @property def apple_raid_path(self): diff --git a/opencore_legacy_patcher/datasets/pci_data.py b/opencore_legacy_patcher/datasets/pci_data.py index 35f5585adb..4087ea9e92 100644 --- a/opencore_legacy_patcher/datasets/pci_data.py +++ b/opencore_legacy_patcher/datasets/pci_data.py @@ -964,21 +964,36 @@ class amd_ids: 0x9591, # HD 3650 (mobile) 0x9593, # HD 3670 (mobile) 0x9440, # HD 4870 - 0x9442, # HD 4850 + # 0x9442, # HD 4850 - This ID is present in AMDLegacySupport but not anywhere else 0x944A, # HD 4850 (mobile) 0x945A, # HD 4870 (mobile) 0x9490, # HD 4670 0x949E, # FirePro V5700 0x9480, # HD 4650/5165 (mobile) - 0x9540, # HD 4550 + # 0x9540, # HD 4550 - This ID is present in AMDLegacySupport but not anywhere else 0x9541, # Unknown 0x954E, # Unknown - 0x954F, # HD 4350/4550 + # 0x954F, # HD 4350/4550 - This ID is present in AMDLegacySupport but not anywhere else 0x9552, # HD 4330/4350/4550 (mobile) - 0x9553, # HD 4530/4570/545v (mobile) + # 0x9553, # HD 4530/4570/545v (mobile) - This ID is present in AMDLegacySupport but not anywhere else 0x94A0, # HD 4830 ] + # Not natively supported by ATIRadeonX2000, uses https://github.com/Jazzzny/TeraScaleFixup + terascale1_terascalefixup_ids = [ + 0x9498, # HD 4650 + 0x9540, # HD 4550 + 0x954F, # HD 4350/4550 + 0x9553, # HD 4530/4570/545v (mobile) + 0x9442, # HD 4850 + 0x9441, # HD 4870 X2 + 0x9443, # HD 4850 X2 + 0x944C, # HD 4830 + 0x9460, # HD 4890 + 0x9462, # HD 4860 + 0x94B3, # HD 4770 + ] + terascale_2_ids = [ 0x6738, # HD 6870 0x6739, # HD 6850 diff --git a/opencore_legacy_patcher/detections/device_probe.py b/opencore_legacy_patcher/detections/device_probe.py index b17f1b36a4..5884867756 100644 --- a/opencore_legacy_patcher/detections/device_probe.py +++ b/opencore_legacy_patcher/detections/device_probe.py @@ -415,6 +415,8 @@ def detect_arch(self): self.arch = AMD.Archs.Legacy_GCN_9000 elif self.device_id in pci_data.amd_ids.terascale_1_ids: self.arch = AMD.Archs.TeraScale_1 + elif self.device_id in pci_data.amd_ids.terascale1_terascalefixup_ids: + self.arch = AMD.Archs.TeraScale_1 elif self.device_id in pci_data.amd_ids.terascale_2_ids: self.arch = AMD.Archs.TeraScale_2 elif self.device_id in pci_data.amd_ids.polaris_ids: diff --git a/opencore_legacy_patcher/efi_builder/graphics_audio.py b/opencore_legacy_patcher/efi_builder/graphics_audio.py index dce88af682..0320eed2f8 100644 --- a/opencore_legacy_patcher/efi_builder/graphics_audio.py +++ b/opencore_legacy_patcher/efi_builder/graphics_audio.py @@ -20,7 +20,8 @@ model_array, os_data, cpu_data, - video_bios_data + video_bios_data, + pci_data ) @@ -111,7 +112,7 @@ def _graphics_handling(self) -> None: if not support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("WhateverGreen.kext")["Enabled"] is True: support.BuildSupport(self.model, self.constants, self.config).enable_kext("WhateverGreen.kext", self.constants.whatevergreen_version, self.constants.whatevergreen_path) - # Web Driver specific + # Web Driver and TeraScaleFixup if not self.constants.custom_model: for i, device in enumerate(self.computer.gpus): if isinstance(device, device_probe.NVIDIA): @@ -137,6 +138,12 @@ def _graphics_handling(self) -> None: if "nvda_drv" not in self.config["NVRAM"]["Delete"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]: self.config["NVRAM"]["Delete"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"] += ["nvda_drv"] + if isinstance(device, device_probe.AMD): + if device.device_id in pci_data.amd_ids.terascale1_terascalefixup_ids: + logging.info(f"- Enabling TeraScaleFixup for GPU ({i + 1}): {utilities.friendly_hex(device.vendor_id)}:{utilities.friendly_hex(device.device_id)}") + support.BuildSupport(self.model, self.constants, self.config).enable_kext("TeraScaleFixup.kext", self.constants.terascalefixup_version, self.constants.terascalefixup_path) + + def _backlight_path_detection(self) -> None: """ iMac MXM dGPU Backlight DevicePath Detection diff --git a/opencore_legacy_patcher/efi_builder/misc.py b/opencore_legacy_patcher/efi_builder/misc.py index 2334fff497..1d2220cadb 100644 --- a/opencore_legacy_patcher/efi_builder/misc.py +++ b/opencore_legacy_patcher/efi_builder/misc.py @@ -210,7 +210,7 @@ def _topcase_handling(self) -> None: support.BuildSupport(self.model, self.constants, self.config).get_kext_by_bundle_path("AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyEventDriver.kext")["Enabled"] = True if self.computer.internal_keyboard_type == "Legacy": - support.BuildSupport(self.model, self.constants, self.config).enable_kext("LegacyKeyboardInjector.kext", self.constants.legacy_keyboard, self.constants.legacy_keyboard_path) + support.BuildSupport(self.model, self.constants, self.config).enable_kext("LegacyKeyboardInjector.kext", self.constants.legacy_keyboard_version, self.constants.legacy_keyboard_path) if self.computer.trackpad_type == "Legacy": support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleUSBTrackpad.kext", self.constants.apple_trackpad, self.constants.apple_trackpad_path) elif self.computer.trackpad_type == "Modern": @@ -232,7 +232,7 @@ def _topcase_handling(self) -> None: # Two-finger Top Case support for macOS High Sierra+ if self.model == "MacBook5,2": support.BuildSupport(self.model, self.constants, self.config).enable_kext("AppleUSBTrackpad.kext", self.constants.apple_trackpad, self.constants.apple_trackpad_path) # Also requires AppleUSBTopCase.kext - support.BuildSupport(self.model, self.constants, self.config).enable_kext("LegacyKeyboardInjector.kext", self.constants.legacy_keyboard, self.constants.legacy_keyboard_path) # Inject legacy personalities into AppleUSBTCKeyboard and AppleUSBTCKeyEventDriver + support.BuildSupport(self.model, self.constants, self.config).enable_kext("LegacyKeyboardInjector.kext", self.constants.legacy_keyboard_version, self.constants.legacy_keyboard_path) # Inject legacy personalities into AppleUSBTCKeyboard and AppleUSBTCKeyEventDriver def _thunderbolt_handling(self) -> None: diff --git a/opencore_legacy_patcher/sys_patch/sys_patch_detect.py b/opencore_legacy_patcher/sys_patch/sys_patch_detect.py index abdbe43258..32c1f6dcd7 100644 --- a/opencore_legacy_patcher/sys_patch/sys_patch_detect.py +++ b/opencore_legacy_patcher/sys_patch/sys_patch_detect.py @@ -25,7 +25,8 @@ model_array, os_data, sip_data, - smbios_data + smbios_data, + pci_data ) @@ -87,11 +88,12 @@ def __init__(self, model: str, global_constants: constants.Constants, self.legacy_t1_chip = False # Patch Requirements - self.amfi_must_disable = False - self.amfi_shim_bins = False - self.supports_metal = False - self.needs_nv_web_checks = False - self.requires_root_kc = False + self.amfi_must_disable = False + self.amfi_shim_bins = False + self.supports_metal = False + self.needs_nv_web_checks = False + self.requires_root_kc = False + self.needs_terascalefixup = False # Validation Checks self.sip_enabled = False @@ -167,6 +169,8 @@ def _detect_gpus(self): if os_data.os_data.ventura in self.constants.legacy_accel_support: self.amfi_shim_bins = True self.requires_root_kc = True + if gpu.device_id in pci_data.amd_ids.terascale1_terascalefixup_ids: + self.needs_terascalefixup = True elif gpu.arch == device_probe.AMD.Archs.TeraScale_2: if self.os_major > non_metal_os: self.amd_ts2 = True @@ -475,6 +479,16 @@ def _check_os_compat(self) -> bool: return False return True + def _check_terascalefixup(self): + """ + Query whether TeraScaleFixup.kext is loaded + + Returns: + bool: True if loaded, False otherwise + """ + + return utilities.check_kext_loaded("com.jazzzny.terascalefixup") + def _check_kdk(self): """ @@ -669,6 +683,7 @@ def detect_patch_set(self): f"Validation: {'AMFI' if self.constants.host_is_hackintosh is True or self._get_amfi_level_needed() > 2 else 'Library Validation'} is enabled": self.amfi_enabled if self.amfi_must_disable is True else False, "Validation: FileVault is enabled": self.fv_enabled, "Validation: System is dosdude1 patched": self.dosdude_patched, + "Validation: TeraScaleFixup.kext missing": self.missing_terascalefixup if self.needs_terascalefixup is True else False, "Validation: WhateverGreen.kext missing": self.missing_whatever_green if self.nvidia_web is True else False, "Validation: Force OpenGL property missing": self.missing_nv_web_opengl if self.nvidia_web is True else False, "Validation: Force compat property missing": self.missing_nv_compat if self.nvidia_web is True else False, @@ -734,6 +749,9 @@ def verify_patch_allowed(self, print_errors: bool = False): self.missing_nv_compat = not self._check_nv_compat() self.missing_whatever_green = not self._check_whatevergreen() + if self.needs_terascalefixup is True: + self.missing_terascalefixup = not self._check_terascalefixup() + if print_errors is True: if self.sip_enabled is True: logging.info("\nCannot patch! Please disable System Integrity Protection (SIP).") @@ -777,6 +795,11 @@ def verify_patch_allowed(self, print_errors: bool = False): logging.info("\nCannot patch! WhateverGreen.kext missing") logging.info("Please ensure WhateverGreen.kext is installed") + if self.needs_terascalefixup is True: + if self.missing_terascalefixup is True: + logging.info("\nCannot patch! TeraScaleFixup.kext missing") + logging.info("Please ensure TeraScaleFixup.kext is installed") + if (not self.has_network) if (self.requires_root_kc and self.missing_kdk and self.os_major >= os_data.os_data.ventura.value) else False: logging.info("\nCannot patch! Network Connection Required") logging.info("Please ensure you have an active internet connection") diff --git a/payloads/Kexts/Misc/LegacyKeyboardInjector-v1.0.0.zip b/payloads/Kexts/Jazzzny/LegacyKeyboardInjector-v1.0.0.zip similarity index 100% rename from payloads/Kexts/Misc/LegacyKeyboardInjector-v1.0.0.zip rename to payloads/Kexts/Jazzzny/LegacyKeyboardInjector-v1.0.0.zip diff --git a/payloads/Kexts/Jazzzny/TeraScaleFixup-1.0.0-DEBUG.zip b/payloads/Kexts/Jazzzny/TeraScaleFixup-1.0.0-DEBUG.zip new file mode 100644 index 0000000000000000000000000000000000000000..ad571c3bb95beeffa72c57160c3ecc73d1fb8519 GIT binary patch literal 12493 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

Z5hN#7LO&GRgKt=lVjBBwZ=fMAaD~_iapu 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 literal 0 HcmV?d00001 From 29a060b94754958be65e3af612b90cd573344c33 Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Wed, 3 Jul 2024 12:36:45 -0400 Subject: [PATCH 02/11] Fix validation error from rename --- opencore_legacy_patcher/constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencore_legacy_patcher/constants.py b/opencore_legacy_patcher/constants.py index 1f65c69133..cdf3f545c6 100644 --- a/opencore_legacy_patcher/constants.py +++ b/opencore_legacy_patcher/constants.py @@ -594,7 +594,7 @@ def apple_isight_path(self): @property def legacy_keyboard_path(self): - return self.payload_kexts_path / Path(f"Jazzzny/LegacyKeyboardInjector-v{self.legacy_keyboard}.zip") + return self.payload_kexts_path / Path(f"Jazzzny/LegacyKeyboardInjector-v{self.legacy_keyboard_version}.zip") @property def terascalefixup_path(self): From 93452dbb600d02fd125925df2016dcaab7d12340 Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Wed, 3 Jul 2024 12:42:48 -0400 Subject: [PATCH 03/11] Add to Update-Kexts.command --- payloads/Kexts/Update-Kexts.command | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/payloads/Kexts/Update-Kexts.command b/payloads/Kexts/Update-Kexts.command index 48d2d8642f..f9508da289 100755 --- a/payloads/Kexts/Update-Kexts.command +++ b/payloads/Kexts/Update-Kexts.command @@ -64,6 +64,13 @@ KEXT_DICTIONARY = { }, }, + "Jazzzny": { + "TeraScaleFixup": { + "Repository": "https://github.com/Jazzzny/TeraScaleFixup", + "Constants Variable": "self.terascalefixup_version", + }, + }, + "Misc": { "Innie": { "Repository": "https://github.com/cdf/Innie", From 90b8f761dda12a28c49f955e2a8fdf870bc125aa Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Wed, 3 Jul 2024 12:50:07 -0400 Subject: [PATCH 04/11] Add dummy data --- .../datasets/example_data.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/opencore_legacy_patcher/datasets/example_data.py b/opencore_legacy_patcher/datasets/example_data.py index d0a6dea874..bcfcc0fa28 100644 --- a/opencore_legacy_patcher/datasets/example_data.py +++ b/opencore_legacy_patcher/datasets/example_data.py @@ -679,6 +679,30 @@ class MacPro: opencore_version="REL-071-2021-07-02" ) + MacPro41_51__TeraScaleFixup_AMD = device_probe.Computer( + # 4,1 flashed to 5,1, HD 4890, BCM94360CD, WD SN750 NVMe + real_model="MacPro5,1", + real_board_id="Mac-F221BEC8", + reported_model="MacPro5,1", + reported_board_id="Mac-F221BEC8", + gpus=[device_probe.AMD(vendor_id=4098, device_id=37984, class_code=196608, name="GFX0", model="ATI Radeon HD 4890", pci_path="PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)")], + igpu=None, + dgpu=device_probe.AMD(vendor_id=4098, device_id=37984, class_code=196608, name="GFX0", model="ATI Radeon HD 4890", pci_path="PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)"), + storage=[ + device_probe.SATAController(vendor_id=32902, device_id=14882, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)"), + device_probe.NVMeController(vendor_id=5559, device_id=20482, class_code=67586, name="PXS3", model=None, pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x2,0x0)/Pci(0x0,0x0)", aspm=2) + ], + + wifi=device_probe.Broadcom(vendor_id=5348, device_id=17312, class_code=163840, name="PXS4", model=None, pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x4,0x0)/Pci(0x0,0x0)"), + cpu=device_probe.CPU( + name="Intel(R) Xeon(R) CPU X5670 @ 2.93GHz", + flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "PCLMULQDQ", "DTES64", "MON", "DSCPL", "VMX", "SMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1", "SSE4.2", "POPCNT", "AES", "PCID"], + leafs=[], + ), + oclp_version="0.2.5", + opencore_version="REL-071-2021-07-02" + ) + MacPro41_51_Flashed_NVIDIA_WEB_DRIVERS = device_probe.Computer( real_model='MacPro5,1', real_board_id='Mac-F221BEC8', From 13d74f7563d0c76f73ee0c6fd0a274ff90f140c0 Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Wed, 3 Jul 2024 12:50:43 -0400 Subject: [PATCH 05/11] Validate for dummy data --- opencore_legacy_patcher/support/validation.py | 1 + 1 file changed, 1 insertion(+) diff --git a/opencore_legacy_patcher/support/validation.py b/opencore_legacy_patcher/support/validation.py index ead7b08079..1fa8284f04 100644 --- a/opencore_legacy_patcher/support/validation.py +++ b/opencore_legacy_patcher/support/validation.py @@ -60,6 +60,7 @@ def __init__(self, global_constants: constants.Constants, verify_unused_files: b example_data.MacPro.MacPro41_Modern_AMD, example_data.MacPro.MacPro41_51__Flashed_Modern_AMD, example_data.MacPro.MacPro41_51_Flashed_NVIDIA_WEB_DRIVERS, + example_data.MacPro.MacPro41_51__TeraScaleFixup_AMD, ] self.valid_dumps_native = [ From 12e3151623a3da7f34d840dc12c09b16095a5bcc Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Wed, 3 Jul 2024 12:52:13 -0400 Subject: [PATCH 06/11] Fix validation --- opencore_legacy_patcher/constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencore_legacy_patcher/constants.py b/opencore_legacy_patcher/constants.py index cdf3f545c6..856b913420 100644 --- a/opencore_legacy_patcher/constants.py +++ b/opencore_legacy_patcher/constants.py @@ -598,7 +598,7 @@ def legacy_keyboard_path(self): @property def terascalefixup_path(self): - return self.payload_kexts_path / Path(f"Jazzzny/TeraScaleFixup-v{self.terascalefixup}-{self.kext_variant}.zip") + return self.payload_kexts_path / Path(f"Jazzzny/TeraScaleFixup-v{self.terascalefixup_version}-{self.kext_variant}.zip") @property def apple_raid_path(self): From f3cfab9c77c3eb07cc6e86ce24c398d483b27f96 Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Wed, 3 Jul 2024 13:09:23 -0400 Subject: [PATCH 07/11] Update config.plist --- payloads/Config/config.plist | 18 ++++++++++++++++++ ...UG.zip => TeraScaleFixup-v1.0.0-DEBUG.zip} | Bin ....zip => TeraScaleFixup-v1.0.0-RELEASE.zip} | Bin 3 files changed, 18 insertions(+) rename payloads/Kexts/Jazzzny/{TeraScaleFixup-1.0.0-DEBUG.zip => TeraScaleFixup-v1.0.0-DEBUG.zip} (100%) rename payloads/Kexts/Jazzzny/{TeraScaleFixup-1.0.0-RELEASE.zip => TeraScaleFixup-v1.0.0-RELEASE.zip} (100%) diff --git a/payloads/Config/config.plist b/payloads/Config/config.plist index 0058125311..55e3032b54 100644 --- a/payloads/Config/config.plist +++ b/payloads/Config/config.plist @@ -473,6 +473,24 @@ PlistPath Contents/Info.plist + + Arch + x86_64 + Comment + Non-native TeraScale GPU Patching + Enabled + + MaxKernel + + MinKernel + 10.0.0 + BundlePath + TeraScaleFixup.kext + ExecutablePath + Contents/MacOS/TeraScaleFixup + PlistPath + Contents/Info.plist + Arch x86_64 diff --git a/payloads/Kexts/Jazzzny/TeraScaleFixup-1.0.0-DEBUG.zip b/payloads/Kexts/Jazzzny/TeraScaleFixup-v1.0.0-DEBUG.zip similarity index 100% rename from payloads/Kexts/Jazzzny/TeraScaleFixup-1.0.0-DEBUG.zip rename to payloads/Kexts/Jazzzny/TeraScaleFixup-v1.0.0-DEBUG.zip diff --git a/payloads/Kexts/Jazzzny/TeraScaleFixup-1.0.0-RELEASE.zip b/payloads/Kexts/Jazzzny/TeraScaleFixup-v1.0.0-RELEASE.zip similarity index 100% rename from payloads/Kexts/Jazzzny/TeraScaleFixup-1.0.0-RELEASE.zip rename to payloads/Kexts/Jazzzny/TeraScaleFixup-v1.0.0-RELEASE.zip From 2ca96bcd5a9a8b6c0c8e617f91f869368824e5f0 Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Wed, 3 Jul 2024 13:16:42 -0400 Subject: [PATCH 08/11] Update CHANGELOG, README --- CHANGELOG.md | 2 ++ README.md | 1 + 2 files changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0eb6a07b54..bf705f36e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ - Removes Gatekeeper "verifying" prompt on first launch after PKG installation - Note `gktool` is only available on macOS Sonoma and newer - Resolve unpatching crash edge case when host doesn't require patches. +- Add [TeraScaleFixup](https://github.com/Jazzzny/TeraScaleFixup) (Jazzzny) + - Provides support for non-natively supported TeraScale 1 GPUs ## 1.5.0 - Restructure project directories diff --git a/README.md b/README.md index f53dfe3e43..0162f11d27 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,7 @@ To run the project from source, see here: [Build and run from source](./SOURCE.m * Non-Metal Photo Booth Patch for Monterey+ * GUI and Backend Development * Vaulting implementation + * [TeraScaleFixup](https://github.com/Jazzzny/TeraScaleFixup) * Amazing users who've graciously donate hardware: * [JohnD](https://forums.macrumors.com/members/johnd.53633/) - 2013 Mac Pro * [SpiGAndromeda](https://github.com/SpiGAndromeda) - AMD Vega 64 From be71314e299f11d632c32e3bc3c378c6a996ec8c Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Wed, 3 Jul 2024 14:25:38 -0400 Subject: [PATCH 09/11] Update CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bf705f36e8..8a362f9d39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ - Note `gktool` is only available on macOS Sonoma and newer - Resolve unpatching crash edge case when host doesn't require patches. - Add [TeraScaleFixup](https://github.com/Jazzzny/TeraScaleFixup) (Jazzzny) - - Provides support for non-natively supported TeraScale 1 GPUs + - Provides support for non-natively supported AMD TeraScale 1 GPUs ## 1.5.0 - Restructure project directories From fbcbdd213ea067ae40ed377c803cc1cb5f15a3d9 Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Wed, 3 Jul 2024 23:53:40 -0400 Subject: [PATCH 10/11] Comment out for test --- opencore_legacy_patcher/sys_patch/sys_patch_detect.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/opencore_legacy_patcher/sys_patch/sys_patch_detect.py b/opencore_legacy_patcher/sys_patch/sys_patch_detect.py index 32c1f6dcd7..34d5dc7434 100644 --- a/opencore_legacy_patcher/sys_patch/sys_patch_detect.py +++ b/opencore_legacy_patcher/sys_patch/sys_patch_detect.py @@ -683,7 +683,7 @@ def detect_patch_set(self): f"Validation: {'AMFI' if self.constants.host_is_hackintosh is True or self._get_amfi_level_needed() > 2 else 'Library Validation'} is enabled": self.amfi_enabled if self.amfi_must_disable is True else False, "Validation: FileVault is enabled": self.fv_enabled, "Validation: System is dosdude1 patched": self.dosdude_patched, - "Validation: TeraScaleFixup.kext missing": self.missing_terascalefixup if self.needs_terascalefixup is True else False, + #"Validation: TeraScaleFixup.kext missing": self.missing_terascalefixup if self.needs_terascalefixup is True else False, "Validation: WhateverGreen.kext missing": self.missing_whatever_green if self.nvidia_web is True else False, "Validation: Force OpenGL property missing": self.missing_nv_web_opengl if self.nvidia_web is True else False, "Validation: Force compat property missing": self.missing_nv_compat if self.nvidia_web is True else False, @@ -795,10 +795,10 @@ def verify_patch_allowed(self, print_errors: bool = False): logging.info("\nCannot patch! WhateverGreen.kext missing") logging.info("Please ensure WhateverGreen.kext is installed") - if self.needs_terascalefixup is True: - if self.missing_terascalefixup is True: - logging.info("\nCannot patch! TeraScaleFixup.kext missing") - logging.info("Please ensure TeraScaleFixup.kext is installed") + #if self.needs_terascalefixup is True: + # if self.missing_terascalefixup is True: + # logging.info("\nCannot patch! TeraScaleFixup.kext missing") + # logging.info("Please ensure TeraScaleFixup.kext is installed") if (not self.has_network) if (self.requires_root_kc and self.missing_kdk and self.os_major >= os_data.os_data.ventura.value) else False: logging.info("\nCannot patch! Network Connection Required") From 2ff1fce02a1940cdfc7f269813c9be342786c3eb Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Thu, 4 Jul 2024 15:47:23 -0400 Subject: [PATCH 11/11] test without feature --- opencore_legacy_patcher/datasets/sys_patch_dict.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencore_legacy_patcher/datasets/sys_patch_dict.py b/opencore_legacy_patcher/datasets/sys_patch_dict.py index 25bad6182b..280bee5dce 100644 --- a/opencore_legacy_patcher/datasets/sys_patch_dict.py +++ b/opencore_legacy_patcher/datasets/sys_patch_dict.py @@ -791,7 +791,7 @@ def _generate_sys_patch_dict(self): "AMD3800Controller.kext": "10.13.6", "AMD4600Controller.kext": "10.13.6", "AMD4800Controller.kext": "10.13.6", - "ATIRadeonX2000.kext": "10.13.6" if self.os_major < os_data.os_data.ventura else "10.13.6 TS1", + "ATIRadeonX2000.kext": "10.13.6", # if self.os_major < os_data.os_data.ventura else "10.13.6 TS1", "ATIRadeonX2000GA.plugin": "10.13.6", "ATIRadeonX2000GLDriver.bundle": "10.13.6", "ATIRadeonX2000VADriver.bundle": "10.13.6",