Add Legacy GCN iMac patches

Co-authored-by @Ausdauersportler
This commit is contained in:
Mykola Grymalyuk
2021-10-12 13:20:02 -06:00
parent 82fe98a93c
commit f26e494450
4 changed files with 148 additions and 58 deletions

View File

@@ -45,6 +45,8 @@
- Implement software demux patch set for 2011 15/17" MacBook Pros - Implement software demux patch set for 2011 15/17" MacBook Pros
- Alternative to hardware demux - Alternative to hardware demux
- Adds [AMDGPUWakeHandler](https://github.com/blackgate/AMDGPUWakeHandler) - 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 ## 0.2.5

View File

@@ -515,59 +515,128 @@ class nvidia_ids:
class amd_ids: class amd_ids:
legacy_gcn_ids = [ legacy_gcn_ids = [
# AMDRadeonX4000 # AMDRadeonX4000
# AMDBonaireGraphicsAccelerator # AMDBonaireGraphicsAccelerator - AMD8000Controller
0x6640, 0x6640, # M6100
0x6641, 0x6641, # HD 8930M
0x6646, 0x6646, # R9 M280X / W6170M
0x6647, 0x6647, # R9 M270X/M280X
0x6650, 0x6650, # Unknown
0x6651, 0x6651, # Unknown
0x665C, 0x665C, # HD 7790/8770 / R7 360 / R9 260/360
0x665D, 0x665D, # R7 200
# AMDFijiGraphicsAccelerator # AMDFijiGraphicsAccelerator - AMD9000Controller
0x7300, 0x7300, # R9 FURY / NANO
0x730F, 0x730F, # Unknown
# AMDHawaiiGraphicsAccelerator # AMDHawaiiGraphicsAccelerator - AMD8000Controller
0x67B0, 0x67B0, # R9 290X/390X
# AMDPitcairnGraphicsAccelerator # AMDPitcairnGraphicsAccelerator - AMD7000Controller
0x6800, 0x6800, # HD 7970M
0x6801, 0x6801, # HD 8970M
0x6806, 0x6806, # Unknown
0x6808, 0x6808, # W7000
0x6810, 0x6810, # R7 370 / R9 270X/370X
0x6818, 0x6818, # HD 7870
0x6819, 0x6819, # HD 7850 / R7 265 / R9 270 1024SP
# AMDTahitiGraphicsAccelerator # AMDTahitiGraphicsAccelerator - AMD7000Controller
0x6790, 0x6790, # Unknown
0x6798, 0x6798, # HD 7970/8970 OEM / R9 280X / D700
0x679A, 0x679A, # HD 7950/8950 OEM / R9 280
0x679E, 0x679E, # HD 7870 XT
0x6780, 0x6780, # W9000
# AMDTongaGraphicsAccelerator # AMDTongaGraphicsAccelerator - AMD9000Controller
0x6920, 0x6920, # R9 M395/ M395X
0x6921, 0x6921, # R9 M295X / M390X
0x6930, 0x6930, # Unknown
0x6938, 0x6938, # R9 380X / R9 M295X
0x6939, 0x6939, # R9 285/380
# AMDVerdeGraphicsAccelerator # AMDVerdeGraphicsAccelerator - AMD7000Controller
0x6820, 0x6820, # HD 8890M / R9 M275X/M375X / M5100
0x6821, 0x6821, # HD 8870M / R9 M270X/M370X
0x6823, 0x6823, # HD 8850M / R9 M265X
0x6825, 0x6825, # HD 7870M
0x6827, 0x6827, # HD 7850M/8850M
0x682B, 0x682B, # HD 8830M / R7 250 / R7 M465X
0x682D, 0x682D, # M4000
0x682F, 0x682F, # HD 7730M
0x6835, 0x6835, # R9 255
0x6839, 0x6839, # Unknown
0x683B, 0x683B, # Unknown
0x683D, 0x683D, # HD 7770/8760 / R7 250X
0x683F, 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 = [ polaris_ids = [
# GCN v4
# AMDRadeonX4000 # AMDRadeonX4000
# AMDBaffinGraphicsAccelerator # AMDBaffinGraphicsAccelerator - AMD9500Controller
0x67E0, 0x67E0,
0x67E3, 0x67E3,
0x67E8, 0x67E8,
@@ -577,7 +646,7 @@ class amd_ids:
0x67E1, 0x67E1,
0x67E7, 0x67E7,
0x67E9, 0x67E9,
# AMDEllesmereGraphicsAccelerator # AMDEllesmereGraphicsAccelerator - AMD9500Controller
0x67C0, 0x67C0,
0x67C1, 0x67C1,
0x67C2, 0x67C2,
@@ -593,8 +662,9 @@ class amd_ids:
] ]
vega_ids = [ vega_ids = [
# GCN v5
# AMDRadeonX5000 # AMDRadeonX5000
# AMDVega10GraphicsAccelerator # AMDVega10GraphicsAccelerator - AMD10000Controller
0x6860, 0x6860,
0x6861, 0x6861,
0x6862, 0x6862,
@@ -610,13 +680,13 @@ class amd_ids:
0x686E, 0x686E,
0x686F, 0x686F,
0x687F, 0x687F,
# AMDVega12GraphicsAccelerator # AMDVega12GraphicsAccelerator - AMD10000Controller
0x69A0, 0x69A0,
0x69A1, 0x69A1,
0x69A2, 0x69A2,
0x69A3, 0x69A3,
0x69AF, 0x69AF,
# AMDVega20GraphicsAccelerator # AMDVega20GraphicsAccelerator - AMD10000Controller
0x66A0, 0x66A0,
0x66A1, 0x66A1,
0x66A2, 0x66A2,
@@ -636,7 +706,7 @@ class amd_ids:
0x731B, 0x731B,
0x731F, 0x731F,
# AMDNavi12GraphicsAccelerator # AMDNavi12GraphicsAccelerator
0x7360, 0x7360, # 5600M
# AMDNavi14GraphicsAccelerator # AMDNavi14GraphicsAccelerator
0x7340, 0x7340,
0x7341, 0x7341,

View File

@@ -521,6 +521,16 @@ class BuildOpenCore:
elif self.model == "iMac10,1": elif self.model == "iMac10,1":
if self.get_kext_by_bundle_path("AAAMouSSE.kext")["Enabled"] is False: 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) 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 # Check GPU Vendor
if self.constants.metal_build is True: 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: 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)}") 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 [ 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.Polaris,
device_probe.AMD.Archs.Vega, device_probe.AMD.Archs.Vega,
device_probe.AMD.Archs.Navi, device_probe.AMD.Archs.Navi,

View File

@@ -185,9 +185,11 @@ class AMD(GPU):
class Archs(enum.Enum): class Archs(enum.Enum):
# pylint: disable=invalid-name # pylint: disable=invalid-name
Legacy_GCN = "Legacy GCN"
TeraScale_1 = "TeraScale 1" TeraScale_1 = "TeraScale 1"
TeraScale_2 = "TeraScale 2" TeraScale_2 = "TeraScale 2"
Legacy_GCN_7000 = "Legacy GCN v1"
Legacy_GCN_8000 = "Legacy GCN v2"
Legacy_GCN_9000 = "Legacy GCN v3"
Polaris = "Polaris" Polaris = "Polaris"
Vega = "Vega" Vega = "Vega"
Navi = "Navi" Navi = "Navi"
@@ -196,8 +198,12 @@ class AMD(GPU):
arch: Archs = field(init=False) arch: Archs = field(init=False)
def detect_arch(self): def detect_arch(self):
if self.device_id in pci_data.amd_ids.legacy_gcn_ids: if self.device_id in pci_data.amd_ids.gcn_7000_ids:
self.arch = AMD.Archs.Legacy_GCN 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: elif self.device_id in pci_data.amd_ids.terascale_1_ids:
self.arch = AMD.Archs.TeraScale_1 self.arch = AMD.Archs.TeraScale_1
elif self.device_id in pci_data.amd_ids.terascale_2_ids: elif self.device_id in pci_data.amd_ids.terascale_2_ids: