From 358505363370de4be46abfacadf3d62e29fa5893 Mon Sep 17 00:00:00 2001 From: Mykola Grymalyuk Date: Mon, 2 Sep 2024 11:11:43 -0600 Subject: [PATCH] patchsets: Publish subclass for GPUs --- .../sys_patch/patchsets/detect.py | 2 +- .../sys_patch/patchsets/hardware/base.py | 17 +++++++++++++++++ .../hardware/graphics/amd_legacy_gcn.py | 9 ++++++++- .../patchsets/hardware/graphics/amd_polaris.py | 11 +++++++++-- .../hardware/graphics/amd_terascale_1.py | 11 +++++++++-- .../hardware/graphics/amd_terascale_2.py | 9 ++++++++- .../patchsets/hardware/graphics/amd_vega.py | 9 ++++++++- .../hardware/graphics/intel_broadwell.py | 9 ++++++++- .../hardware/graphics/intel_haswell.py | 9 ++++++++- .../hardware/graphics/intel_iron_lake.py | 11 +++++++++-- .../hardware/graphics/intel_ivy_bridge.py | 9 ++++++++- .../hardware/graphics/intel_sandy_bridge.py | 11 +++++++++-- .../hardware/graphics/intel_skylake.py | 11 +++++++++-- .../hardware/graphics/nvidia_kepler.py | 9 ++++++++- .../patchsets/hardware/graphics/nvidia_tesla.py | 11 +++++++++-- .../hardware/graphics/nvidia_webdriver.py | 9 ++++++++- 16 files changed, 136 insertions(+), 21 deletions(-) diff --git a/opencore_legacy_patcher/sys_patch/patchsets/detect.py b/opencore_legacy_patcher/sys_patch/patchsets/detect.py index 9dcdc102f..96b70e96b 100644 --- a/opencore_legacy_patcher/sys_patch/patchsets/detect.py +++ b/opencore_legacy_patcher/sys_patch/patchsets/detect.py @@ -295,7 +295,7 @@ class HardwarePatchsetDetection: """ Check if Kernel Debug Kit is present """ - return kdk_handler.KernelDebugKitObject(self._constants, self._os_build, self._os_version).kdk_already_installed + return kdk_handler.KernelDebugKitObject(self._constants, self._os_build, self._os_version, passive=True).kdk_already_installed def _is_cached_metallib_support_pkg_present(self) -> bool: diff --git a/opencore_legacy_patcher/sys_patch/patchsets/hardware/base.py b/opencore_legacy_patcher/sys_patch/patchsets/hardware/base.py index c1c35a843..c6aa50cf1 100644 --- a/opencore_legacy_patcher/sys_patch/patchsets/hardware/base.py +++ b/opencore_legacy_patcher/sys_patch/patchsets/hardware/base.py @@ -24,6 +24,16 @@ class HardwareVariant(StrEnum): MISCELLANEOUS: str = "Miscellaneous" +class HardwareVariantGraphicsSubclass(StrEnum): + """ + Graphics hardware variant subclass + """ + NON_METAL_GRAPHICS: str = "Non-Metal Graphics" + METAL_3802_GRAPHICS: str = "Metal 3802 Graphics" + METAL_31001_GRAPHICS: str = "Metal 31001 Graphics" + NOT_APPLICABLE: str = "N/A" + + class BaseHardware(BasePatchset): def __init__(self, xnu_major, xnu_minor, os_build, global_constants: Constants) -> None: @@ -65,6 +75,13 @@ class BaseHardware(BasePatchset): raise NotImplementedError + def hardware_variant_graphics_subclass(self) -> HardwareVariantGraphicsSubclass: + """ + What subclass of graphics + """ + return HardwareVariantGraphicsSubclass.NOT_APPLICABLE + + def required_amfi_level(self) -> AmfiConfigDetectLevel: """ What level of AMFI configuration is required for this patch set diff --git a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_legacy_gcn.py b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_legacy_gcn.py index 67d62a307..ab7bebbb4 100644 --- a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_legacy_gcn.py +++ b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_legacy_gcn.py @@ -2,7 +2,7 @@ amd_legacy_gcn.py: AMD Legacy GCN detection """ -from ..base import BaseHardware, HardwareVariant +from ..base import BaseHardware, HardwareVariant, HardwareVariantGraphicsSubclass from ...base import PatchType @@ -56,6 +56,13 @@ class AMDLegacyGCN(BaseHardware): return HardwareVariant.GRAPHICS + def hardware_variant_graphics_subclass(self) -> HardwareVariantGraphicsSubclass: + """ + Type of hardware variant subclass + """ + return HardwareVariantGraphicsSubclass.METAL_31001_GRAPHICS + + def requires_kernel_debug_kit(self) -> bool: """ Apple no longer provides standalone kexts in the base OS diff --git a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_polaris.py b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_polaris.py index 6eadbb6bd..c8a091f02 100644 --- a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_polaris.py +++ b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_polaris.py @@ -4,7 +4,7 @@ amd_polaris.py: AMD Polaris detection from .amd_legacy_gcn import AMDLegacyGCN -from ..base import BaseHardware, HardwareVariant +from ..base import BaseHardware, HardwareVariant, HardwareVariantGraphicsSubclass from ...base import PatchType @@ -56,6 +56,13 @@ class AMDPolaris(BaseHardware): return HardwareVariant.GRAPHICS + def hardware_variant_graphics_subclass(self) -> HardwareVariantGraphicsSubclass: + """ + Type of hardware variant subclass + """ + return HardwareVariantGraphicsSubclass.METAL_31001_GRAPHICS + + def requires_kernel_debug_kit(self) -> bool: """ Apple no longer provides standalone kexts in the base OS @@ -116,7 +123,7 @@ class AMDPolaris(BaseHardware): """ if self.native_os() is True: return {} - + # Minimal amount of patches required for 2017 Polaris if self._computer.real_model in ["MacBookPro14,3"]: return self._model_specific_patches() diff --git a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_terascale_1.py b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_terascale_1.py index 391047946..88377a624 100644 --- a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_terascale_1.py +++ b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_terascale_1.py @@ -2,7 +2,7 @@ amd_terascale_1.py: AMD TeraScale 1 detection """ -from ..base import BaseHardware, HardwareVariant +from ..base import BaseHardware, HardwareVariant, HardwareVariantGraphicsSubclass from ...base import PatchType @@ -54,6 +54,13 @@ class AMDTeraScale1(BaseHardware): return HardwareVariant.GRAPHICS + def hardware_variant_graphics_subclass(self) -> HardwareVariantGraphicsSubclass: + """ + Type of hardware variant subclass + """ + return HardwareVariantGraphicsSubclass.NON_METAL_GRAPHICS + + def requires_kernel_debug_kit(self) -> bool: """ Apple no longer provides standalone kexts in the base OS @@ -90,7 +97,7 @@ class AMDTeraScale1(BaseHardware): """ if self.native_os() is True: return {} - + if self._xnu_major not in self._constants.legacy_accel_support: return { **AMDTeraScale(self._xnu_major, self._xnu_minor, self._os_build).patches(), diff --git a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_terascale_2.py b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_terascale_2.py index e4828942a..31ae8474d 100644 --- a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_terascale_2.py +++ b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_terascale_2.py @@ -2,7 +2,7 @@ amd_terascale_2.py: AMD TeraScale 2 detection """ -from ..base import BaseHardware, HardwareVariant +from ..base import BaseHardware, HardwareVariant, HardwareVariantGraphicsSubclass from ...base import PatchType @@ -55,6 +55,13 @@ class AMDTeraScale2(BaseHardware): return HardwareVariant.GRAPHICS + def hardware_variant_graphics_subclass(self) -> HardwareVariantGraphicsSubclass: + """ + Type of hardware variant subclass + """ + return HardwareVariantGraphicsSubclass.NON_METAL_GRAPHICS + + def requires_kernel_debug_kit(self) -> bool: """ Apple no longer provides standalone kexts in the base OS diff --git a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_vega.py b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_vega.py index 143b3c1ba..51c8bee35 100644 --- a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_vega.py +++ b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/amd_vega.py @@ -2,7 +2,7 @@ amd_vega.py: AMD Vega detection """ -from ..base import BaseHardware, HardwareVariant +from ..base import BaseHardware, HardwareVariant, HardwareVariantGraphicsSubclass from ...base import PatchType @@ -54,6 +54,13 @@ class AMDVega(BaseHardware): return HardwareVariant.GRAPHICS + def hardware_variant_graphics_subclass(self) -> HardwareVariantGraphicsSubclass: + """ + Type of hardware variant subclass + """ + return HardwareVariantGraphicsSubclass.METAL_31001_GRAPHICS + + def requires_kernel_debug_kit(self) -> bool: """ Apple no longer provides standalone kexts in the base OS diff --git a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_broadwell.py b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_broadwell.py index a0eb20970..4f973a7b3 100644 --- a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_broadwell.py +++ b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_broadwell.py @@ -2,7 +2,7 @@ intel_broadwell.py: Intel Broadwell detection """ -from ..base import BaseHardware, HardwareVariant +from ..base import BaseHardware, HardwareVariant, HardwareVariantGraphicsSubclass from ...base import PatchType @@ -45,6 +45,13 @@ class IntelBroadwell(BaseHardware): return HardwareVariant.GRAPHICS + def hardware_variant_graphics_subclass(self) -> HardwareVariantGraphicsSubclass: + """ + Type of hardware variant subclass + """ + return HardwareVariantGraphicsSubclass.METAL_31001_GRAPHICS + + def native_os(self) -> bool: """ Dropped support with macOS 13, Ventura diff --git a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_haswell.py b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_haswell.py index 633bdfb27..36b0668de 100644 --- a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_haswell.py +++ b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_haswell.py @@ -2,7 +2,7 @@ intel_haswell.py: Intel Haswell detection """ -from ..base import BaseHardware, HardwareVariant +from ..base import BaseHardware, HardwareVariant, HardwareVariantGraphicsSubclass from ...base import PatchType @@ -54,6 +54,13 @@ class IntelHaswell(BaseHardware): return HardwareVariant.GRAPHICS + def hardware_variant_graphics_subclass(self) -> HardwareVariantGraphicsSubclass: + """ + Type of hardware variant subclass + """ + return HardwareVariantGraphicsSubclass.METAL_3802_GRAPHICS + + def requires_metallib_support_pkg(self) -> bool: """ New compiler format introduced in macOS 15, Sequoia diff --git a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_iron_lake.py b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_iron_lake.py index 0c4822751..f6e4934b7 100644 --- a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_iron_lake.py +++ b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_iron_lake.py @@ -2,7 +2,7 @@ intel_iron_lake.py: Intel Iron Lake detection """ -from ..base import BaseHardware, HardwareVariant +from ..base import BaseHardware, HardwareVariant, HardwareVariantGraphicsSubclass from ...base import PatchType @@ -53,6 +53,13 @@ class IntelIronLake(BaseHardware): return HardwareVariant.GRAPHICS + def hardware_variant_graphics_subclass(self) -> HardwareVariantGraphicsSubclass: + """ + Type of hardware variant subclass + """ + return HardwareVariantGraphicsSubclass.NON_METAL_GRAPHICS + + def requires_kernel_debug_kit(self) -> bool: """ Apple no longer provides standalone kexts in the base OS @@ -88,7 +95,7 @@ class IntelIronLake(BaseHardware): if self._xnu_major not in self._constants.legacy_accel_support: return {**self._model_specific_patches()} - + return { **NonMetal(self._xnu_major, self._xnu_minor, self._os_build).patches(), **MontereyWebKit(self._xnu_major, self._xnu_minor, self._os_build).patches(), diff --git a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_ivy_bridge.py b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_ivy_bridge.py index a73259782..b4dbe51a4 100644 --- a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_ivy_bridge.py +++ b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_ivy_bridge.py @@ -2,7 +2,7 @@ intel_ivy_bridge.py: Intel Ivy Bridge detection """ -from ..base import BaseHardware, HardwareVariant +from ..base import BaseHardware, HardwareVariant, HardwareVariantGraphicsSubclass from ...base import PatchType @@ -56,6 +56,13 @@ class IntelIvyBridge(BaseHardware): return HardwareVariant.GRAPHICS + def hardware_variant_graphics_subclass(self) -> HardwareVariantGraphicsSubclass: + """ + Type of hardware variant subclass + """ + return HardwareVariantGraphicsSubclass.METAL_3802_GRAPHICS + + def requires_metallib_support_pkg(self) -> bool: """ New compiler format introduced in macOS 15, Sequoia diff --git a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_sandy_bridge.py b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_sandy_bridge.py index 9ffc132ae..0ea020a49 100644 --- a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_sandy_bridge.py +++ b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_sandy_bridge.py @@ -2,7 +2,7 @@ intel_sandy_bridge.py: Intel Sandy Bridge detection """ -from ..base import BaseHardware, HardwareVariant +from ..base import BaseHardware, HardwareVariant, HardwareVariantGraphicsSubclass from ...base import PatchType @@ -54,6 +54,13 @@ class IntelSandyBridge(BaseHardware): return HardwareVariant.GRAPHICS + def hardware_variant_graphics_subclass(self) -> HardwareVariantGraphicsSubclass: + """ + Type of hardware variant subclass + """ + return HardwareVariantGraphicsSubclass.NON_METAL_GRAPHICS + + def requires_kernel_debug_kit(self) -> bool: """ Requires replacing a number of kexts in the BootKC @@ -92,7 +99,7 @@ class IntelSandyBridge(BaseHardware): if self._xnu_major not in self._constants.legacy_accel_support: return {**self._model_specific_patches()} - + return { **NonMetal(self._xnu_major, self._xnu_minor, self._os_build).patches(), **HighSierraGVA(self._xnu_major, self._xnu_minor, self._os_build).patches(), diff --git a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_skylake.py b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_skylake.py index d3add5649..22e24f3d1 100644 --- a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_skylake.py +++ b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/intel_skylake.py @@ -2,7 +2,7 @@ intel_skylake.py: Intel Skylake detection """ -from ..base import BaseHardware, HardwareVariant +from ..base import BaseHardware, HardwareVariant, HardwareVariantGraphicsSubclass from ...base import PatchType @@ -52,6 +52,13 @@ class IntelSkylake(BaseHardware): return HardwareVariant.GRAPHICS + def hardware_variant_graphics_subclass(self) -> HardwareVariantGraphicsSubclass: + """ + Type of hardware variant subclass + """ + return HardwareVariantGraphicsSubclass.METAL_31001_GRAPHICS + + def _model_specific_patches(self) -> dict: """ Model specific patches @@ -79,7 +86,7 @@ class IntelSkylake(BaseHardware): """ if self.native_os() is True: return {} - + return { **MontereyOpenCL(self._xnu_major, self._xnu_minor, self._constants.detected_os_version).patches(), **self._model_specific_patches(), diff --git a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/nvidia_kepler.py b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/nvidia_kepler.py index 20be457c1..319652560 100644 --- a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/nvidia_kepler.py +++ b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/nvidia_kepler.py @@ -2,7 +2,7 @@ nvidia_kepler.py: Nvidia Kepler detection """ -from ..base import BaseHardware, HardwareVariant +from ..base import BaseHardware, HardwareVariant, HardwareVariantGraphicsSubclass from ...base import PatchType @@ -65,6 +65,13 @@ class NvidiaKepler(BaseHardware): return HardwareVariant.GRAPHICS + def hardware_variant_graphics_subclass(self) -> HardwareVariantGraphicsSubclass: + """ + Type of hardware variant subclass + """ + return HardwareVariantGraphicsSubclass.METAL_3802_GRAPHICS + + def requires_metallib_support_pkg(self) -> bool: """ New compiler format introduced in macOS 15, Sequoia diff --git a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/nvidia_tesla.py b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/nvidia_tesla.py index 17d046587..d43ba3f0d 100644 --- a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/nvidia_tesla.py +++ b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/nvidia_tesla.py @@ -2,7 +2,7 @@ nvidia_tesla.py: Nvidia Tesla detection """ -from ..base import BaseHardware, HardwareVariant +from ..base import BaseHardware, HardwareVariant, HardwareVariantGraphicsSubclass from ...base import PatchType @@ -53,6 +53,13 @@ class NvidiaTesla(BaseHardware): return HardwareVariant.GRAPHICS + def hardware_variant_graphics_subclass(self) -> HardwareVariantGraphicsSubclass: + """ + Type of hardware variant subclass + """ + return HardwareVariantGraphicsSubclass.NON_METAL_GRAPHICS + + def requires_kernel_debug_kit(self) -> bool: """ Apple no longer provides standalone kexts in the base OS @@ -88,7 +95,7 @@ class NvidiaTesla(BaseHardware): """ if self.native_os() is True: return {} - + if self._xnu_major not in self._constants.legacy_accel_support: return {**self._model_specific_patches()} diff --git a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/nvidia_webdriver.py b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/nvidia_webdriver.py index 09cfa91b5..45cbc5025 100644 --- a/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/nvidia_webdriver.py +++ b/opencore_legacy_patcher/sys_patch/patchsets/hardware/graphics/nvidia_webdriver.py @@ -2,7 +2,7 @@ nvidia_webdriver.py: Nvidia Web Driver detection """ -from ..base import BaseHardware, HardwareVariant +from ..base import BaseHardware, HardwareVariant, HardwareVariantGraphicsSubclass from ...base import PatchType @@ -59,6 +59,13 @@ class NvidiaWebDriver(BaseHardware): return HardwareVariant.GRAPHICS + def hardware_variant_graphics_subclass(self) -> HardwareVariantGraphicsSubclass: + """ + Type of hardware variant subclass + """ + return HardwareVariantGraphicsSubclass.NON_METAL_GRAPHICS + + def requires_kernel_debug_kit(self) -> bool: """ Apple no longer provides standalone kexts in the base OS