From f26e49445045c97384672256de6d602457c30a96 Mon Sep 17 00:00:00 2001 From: Mykola Grymalyuk Date: Tue, 12 Oct 2021 13:20:02 -0600 Subject: [PATCH] Add Legacy GCN iMac patches Co-authored-by @Ausdauersportler --- CHANGELOG.md | 2 + data/pci_data.py | 178 ++++++++++++++++++++++++++------------ resources/build.py | 14 ++- resources/device_probe.py | 12 ++- 4 files changed, 148 insertions(+), 58 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c4879af5f..651e615a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,8 @@ - Implement software demux patch set for 2011 15/17" MacBook Pros - Alternative to hardware demux - Adds [AMDGPUWakeHandler](https://github.com/blackgate/AMDGPUWakeHandler) +- Add Legacy GCN support for iMac11,x and iMac12,x with upgraded GPUs + - Note: iMac12,x with legacy GCN will fail to wake ## 0.2.5 diff --git a/data/pci_data.py b/data/pci_data.py index 62a2504dd..a65db7fa3 100644 --- a/data/pci_data.py +++ b/data/pci_data.py @@ -515,59 +515,128 @@ class nvidia_ids: class amd_ids: legacy_gcn_ids = [ # AMDRadeonX4000 - # AMDBonaireGraphicsAccelerator - 0x6640, - 0x6641, - 0x6646, - 0x6647, - 0x6650, - 0x6651, - 0x665C, - 0x665D, - # AMDFijiGraphicsAccelerator - 0x7300, - 0x730F, - # AMDHawaiiGraphicsAccelerator - 0x67B0, - # AMDPitcairnGraphicsAccelerator - 0x6800, - 0x6801, - 0x6806, - 0x6808, - 0x6810, - 0x6818, - 0x6819, - # AMDTahitiGraphicsAccelerator - 0x6790, - 0x6798, - 0x679A, - 0x679E, - 0x6780, - # AMDTongaGraphicsAccelerator - 0x6920, - 0x6921, - 0x6930, - 0x6938, - 0x6939, - # AMDVerdeGraphicsAccelerator - 0x6820, - 0x6821, - 0x6823, - 0x6825, - 0x6827, - 0x682B, - 0x682D, - 0x682F, - 0x6835, - 0x6839, - 0x683B, - 0x683D, - 0x683F, + # AMDBonaireGraphicsAccelerator - AMD8000Controller + 0x6640, # M6100 + 0x6641, # HD 8930M + 0x6646, # R9 M280X / W6170M + 0x6647, # R9 M270X/M280X + 0x6650, # Unknown + 0x6651, # Unknown + 0x665C, # HD 7790/8770 / R7 360 / R9 260/360 + 0x665D, # R7 200 + # AMDFijiGraphicsAccelerator - AMD9000Controller + 0x7300, # R9 FURY / NANO + 0x730F, # Unknown + # AMDHawaiiGraphicsAccelerator - AMD8000Controller + 0x67B0, # R9 290X/390X + # AMDPitcairnGraphicsAccelerator - AMD7000Controller + 0x6800, # HD 7970M + 0x6801, # HD 8970M + 0x6806, # Unknown + 0x6808, # W7000 + 0x6810, # R7 370 / R9 270X/370X + 0x6818, # HD 7870 + 0x6819, # HD 7850 / R7 265 / R9 270 1024SP + # AMDTahitiGraphicsAccelerator - AMD7000Controller + 0x6790, # Unknown + 0x6798, # HD 7970/8970 OEM / R9 280X / D700 + 0x679A, # HD 7950/8950 OEM / R9 280 + 0x679E, # HD 7870 XT + 0x6780, # W9000 + # AMDTongaGraphicsAccelerator - AMD9000Controller + 0x6920, # R9 M395/ M395X + 0x6921, # R9 M295X / M390X + 0x6930, # Unknown + 0x6938, # R9 380X / R9 M295X + 0x6939, # R9 285/380 + # AMDVerdeGraphicsAccelerator - AMD7000Controller + 0x6820, # HD 8890M / R9 M275X/M375X / M5100 + 0x6821, # HD 8870M / R9 M270X/M370X + 0x6823, # HD 8850M / R9 M265X + 0x6825, # HD 7870M + 0x6827, # HD 7850M/8850M + 0x682B, # HD 8830M / R7 250 / R7 M465X + 0x682D, # M4000 + 0x682F, # HD 7730M + 0x6835, # R9 255 + 0x6839, # Unknown + 0x683B, # Unknown + 0x683D, # HD 7770/8760 / R7 250X + 0x683F, # HD 7750/8740 / R7 250E + ] + + gcn_7000_ids = [ + # GCN v1 + # AMDPitcairnGraphicsAccelerator - AMD7000Controller + 0x6800, # HD 7970M + 0x6801, # HD 8970M + 0x6806, # Unknown + 0x6808, # W7000 + 0x6810, # R7 370 / R9 270X/370X + 0x6818, # HD 7870 + 0x6819, # HD 7850 / R7 265 / R9 270 1024SP + # AMDPitcairnGraphicsAccelerator - AMD7000Controller + 0x6800, # HD 7970M + 0x6801, # HD 8970M + 0x6806, # Unknown + 0x6808, # W7000 + 0x6810, # R7 370 / R9 270X/370X + 0x6818, # HD 7870 + 0x6819, # HD 7850 / R7 265 / R9 270 1024SP + # AMDTahitiGraphicsAccelerator - AMD7000Controller + 0x6790, # Unknown + 0x6798, # HD 7970/8970 OEM / R9 280X / D700 + 0x679A, # HD 7950/8950 OEM / R9 280 + 0x679E, # HD 7870 XT + 0x6780, # W9000 + # AMDVerdeGraphicsAccelerator - AMD7000Controller + 0x6820, # HD 8890M / R9 M275X/M375X / M5100 + 0x6821, # HD 8870M / R9 M270X/M370X + 0x6823, # HD 8850M / R9 M265X + 0x6825, # HD 7870M + 0x6827, # HD 7850M/8850M + 0x682B, # HD 8830M / R7 250 / R7 M465X + 0x682D, # M4000 + 0x682F, # HD 7730M + 0x6835, # R9 255 + 0x6839, # Unknown + 0x683B, # Unknown + 0x683D, # HD 7770/8760 / R7 250X + 0x683F, # HD 7750/8740 / R7 250E + ] + + gcn_8000_ids = [ + # GCN v2 + # AMDBonaireGraphicsAccelerator - AMD8000Controller + 0x6640, # M6100 + 0x6641, # HD 8930M + 0x6646, # R9 M280X / W6170M + 0x6647, # R9 M270X/M280X + 0x6650, # Unknown + 0x6651, # Unknown + 0x665C, # HD 7790/8770 / R7 360 / R9 260/360 + 0x665D, # R7 200 + # AMDHawaiiGraphicsAccelerator - AMD8000Controller + 0x67B0, # R9 290X/390X + ] + + gcn_9000_ids = [ + # GCN v3 + # AMDFijiGraphicsAccelerator - AMD9000Controller + 0x7300, # R9 FURY / NANO + 0x730F, # Unknown + # AMDTongaGraphicsAccelerator - AMD9000Controller + 0x6920, # R9 M395/ M395X + 0x6921, # R9 M295X / M390X + 0x6930, # Unknown + 0x6938, # R9 380X / R9 M295X + 0x6939, # R9 285/380 ] polaris_ids = [ + # GCN v4 # AMDRadeonX4000 - # AMDBaffinGraphicsAccelerator + # AMDBaffinGraphicsAccelerator - AMD9500Controller 0x67E0, 0x67E3, 0x67E8, @@ -577,7 +646,7 @@ class amd_ids: 0x67E1, 0x67E7, 0x67E9, - # AMDEllesmereGraphicsAccelerator + # AMDEllesmereGraphicsAccelerator - AMD9500Controller 0x67C0, 0x67C1, 0x67C2, @@ -593,8 +662,9 @@ class amd_ids: ] vega_ids = [ + # GCN v5 # AMDRadeonX5000 - # AMDVega10GraphicsAccelerator + # AMDVega10GraphicsAccelerator - AMD10000Controller 0x6860, 0x6861, 0x6862, @@ -610,13 +680,13 @@ class amd_ids: 0x686E, 0x686F, 0x687F, - # AMDVega12GraphicsAccelerator + # AMDVega12GraphicsAccelerator - AMD10000Controller 0x69A0, 0x69A1, 0x69A2, 0x69A3, 0x69AF, - # AMDVega20GraphicsAccelerator + # AMDVega20GraphicsAccelerator - AMD10000Controller 0x66A0, 0x66A1, 0x66A2, @@ -636,7 +706,7 @@ class amd_ids: 0x731B, 0x731F, # AMDNavi12GraphicsAccelerator - 0x7360, + 0x7360, # 5600M # AMDNavi14GraphicsAccelerator 0x7340, 0x7341, diff --git a/resources/build.py b/resources/build.py index 35aa55993..8b5037bd4 100644 --- a/resources/build.py +++ b/resources/build.py @@ -521,6 +521,16 @@ class BuildOpenCore: elif self.model == "iMac10,1": if self.get_kext_by_bundle_path("AAAMouSSE.kext")["Enabled"] is False: self.enable_kext("AAAMouSSE.kext", self.constants.mousse_version, self.constants.mousse_path) + if self.computer and self.computer.dgpu: + if self.computer.dgpu.arch == device_probe.AMD.Archs.Legacy_GCN_7000: + # Add Power Gate Patches + self.config["DeviceProperties"]["Add"][backlight_path] += { + "rebuild-device-tree": 1, + "CAIL,CAIL_DisableDrmdmaPowerGating": 1, + "CAIL,CAIL_DisableGfxCGPowerGating": 1, + "CAIL,CAIL_DisableUVDPowerGating": 1, + "CAIL,CAIL_DisableVCEPowerGating": 1, + } # Check GPU Vendor if self.constants.metal_build is True: @@ -535,7 +545,9 @@ class BuildOpenCore: elif not self.constants.custom_model and self.model in model_array.LegacyGPU and self.computer.dgpu: print(f"- Detected dGPU: {utilities.friendly_hex(self.computer.dgpu.vendor_id)}:{utilities.friendly_hex(self.computer.dgpu.device_id)}") if self.computer.dgpu.arch in [ - device_probe.AMD.Archs.Legacy_GCN, + device_probe.AMD.Archs.Legacy_GCN_7000, + device_probe.AMD.Archs.Legacy_GCN_8000, + device_probe.AMD.Archs.Legacy_GCN_9000, device_probe.AMD.Archs.Polaris, device_probe.AMD.Archs.Vega, device_probe.AMD.Archs.Navi, diff --git a/resources/device_probe.py b/resources/device_probe.py index a360392d0..059d999b3 100644 --- a/resources/device_probe.py +++ b/resources/device_probe.py @@ -185,9 +185,11 @@ class AMD(GPU): class Archs(enum.Enum): # pylint: disable=invalid-name - Legacy_GCN = "Legacy GCN" TeraScale_1 = "TeraScale 1" TeraScale_2 = "TeraScale 2" + Legacy_GCN_7000 = "Legacy GCN v1" + Legacy_GCN_8000 = "Legacy GCN v2" + Legacy_GCN_9000 = "Legacy GCN v3" Polaris = "Polaris" Vega = "Vega" Navi = "Navi" @@ -196,8 +198,12 @@ class AMD(GPU): arch: Archs = field(init=False) def detect_arch(self): - if self.device_id in pci_data.amd_ids.legacy_gcn_ids: - self.arch = AMD.Archs.Legacy_GCN + if self.device_id in pci_data.amd_ids.gcn_7000_ids: + self.arch = AMD.Archs.Legacy_GCN_7000 + elif self.device_id in pci_data.amd_ids.gcn_8000_ids: + self.arch = AMD.Archs.Legacy_GCN_8000 + elif self.device_id in pci_data.amd_ids.gcn_9000_ids: + 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.terascale_2_ids: