diff --git a/CHANGELOG.md b/CHANGELOG.md
index 05805e942..c874843bf 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -33,6 +33,8 @@
- Fixed full screen animation
- Fixed split screen
- Improved menubar blur
+- Add Nvidia Kepler GOP Driver injection
+ - Primarily for GPUs lacking GOPs and can't have a newer VBIOS flashed
- Increment Binaries:
- OpenCorePkg 0.8.8 - release
- PatcherSupportPkg 0.8.0 - release
diff --git a/payloads/Config/config.plist b/payloads/Config/config.plist
index ff0ede776..2cb5d5964 100644
--- a/payloads/Config/config.plist
+++ b/payloads/Config/config.plist
@@ -2539,6 +2539,18 @@
LoadEarly
+
+ Comment
+
+ Path
+ NVGOP_GK.efi
+ Enabled
+
+ Arguments
+
+ LoadEarly
+
+
Comment
diff --git a/payloads/Drivers/NVGOP_GK.efi b/payloads/Drivers/NVGOP_GK.efi
new file mode 100644
index 000000000..f853b30a7
Binary files /dev/null and b/payloads/Drivers/NVGOP_GK.efi differ
diff --git a/resources/build/graphics_audio.py b/resources/build/graphics_audio.py
index a5582ed89..2f5c0d96e 100644
--- a/resources/build/graphics_audio.py
+++ b/resources/build/graphics_audio.py
@@ -282,11 +282,18 @@ class build_graphics_audio:
self.config["UEFI"]["Quirks"]["ReloadOptionRoms"] = True
# AMD GOP VBIOS injection for AMD GCN 1-4 GPUs
- if self.constants.gop_injection is True:
+ if self.constants.amd_gop_injection is True:
print("- Adding AMDGOP.efi")
shutil.copy(self.constants.amd_gop_driver_path, self.constants.drivers_path)
support.build_support(self.model, self.constants, self.config).get_efi_binary_by_path("AMDGOP.efi", "UEFI", "Drivers")["Enabled"] = True
+ # Nvidia Kepler GOP VBIOS injection
+ if self.constants.nvidia_kepler_gop_injection is True:
+ print("- Adding NVGOP_GK.efi")
+ shutil.copy(self.constants.nvidia_kepler_gop_driver_path, self.constants.drivers_path)
+ support.build_support(self.model, self.constants, self.config).get_efi_binary_by_path("NVGOP_GK.efi", "UEFI", "Drivers")["Enabled"] = True
+
+
def spoof_handling(self):
if self.constants.serial_settings == "None":
return
diff --git a/resources/constants.py b/resources/constants.py
index 520342e6d..d589070f5 100644
--- a/resources/constants.py
+++ b/resources/constants.py
@@ -181,7 +181,8 @@ class Constants:
self.allow_ts2_accel = True # Set TeraScale 2 Acceleration support
self.force_nv_web = False # Force Nvidia Web Drivers on Tesla and Kepler
self.force_output_support = False # Force Output support for Mac Pros with PC VBIOS
- self.gop_injection = False # Set GOP Injection support
+ self.amd_gop_injection = False # Set GOP Injection support
+ self.nvidia_kepler_gop_injection = False # Set Kepler GOP Injection support
## Miscellaneous
self.disallow_cpufriend = False # Disable CPUFriend
@@ -258,6 +259,10 @@ class Constants:
def amd_gop_driver_path(self):
return self.payload_path / Path("Drivers/AMDGOP.efi")
+ @property
+ def nvidia_kepler_gop_driver_path(self):
+ return self.payload_path / Path("Drivers/NVGOP_GK.efi")
+
@property
def xhci_driver_path(self):
return self.payload_path / Path("Drivers/XhciDxe.efi")
diff --git a/resources/gui/gui_main.py b/resources/gui/gui_main.py
index f3a842280..45b19cc17 100644
--- a/resources/gui/gui_main.py
+++ b/resources/gui/gui_main.py
@@ -2581,23 +2581,33 @@ class wx_python_gui:
self.timeout_spinner.Centre(wx.HORIZONTAL)
# AMD GOP Injection
- self.set_gop_injection = wx.CheckBox(self.frame_modal, label="AMD GOP Injection")
- self.set_gop_injection.SetPosition(wx.Point(
+ self.set_amd_gop_injection = wx.CheckBox(self.frame_modal, label="AMD GOP Injection")
+ self.set_amd_gop_injection.SetPosition(wx.Point(
30,
self.timeout_spinner.GetPosition().y + self.timeout_spinner.GetSize().height + 5))
- self.set_gop_injection.SetValue(self.constants.gop_injection)
- self.set_gop_injection.Bind(wx.EVT_CHECKBOX, self.gop_injection_checkbox_click)
+ self.set_amd_gop_injection.SetValue(self.constants.amd_gop_injection)
+ self.set_amd_gop_injection.Bind(wx.EVT_CHECKBOX, self.amd_gop_injection_checkbox_click)
models = ["iMac10,1", "iMac11,1", "iMac11,2", "iMac11,3", "iMac12,1", "iMac12,2", "MacPro3,1", "MacPro4,1", "MacPro5,1", "Xserve2,1", "Xserve3,1"]
if (not self.constants.custom_model and self.computer.real_model not in models) or (self.constants.custom_model and self.constants.custom_model not in models):
- self.set_gop_injection.Disable()
+ self.set_amd_gop_injection.Disable()
+
+ # Nvidia Kepler GOP injection
+ self.set_nvidia_kepler_gop_injection = wx.CheckBox(self.frame_modal, label="Nvidia Kepler GOP Injection")
+ self.set_nvidia_kepler_gop_injection.SetPosition(wx.Point(
+ self.set_amd_gop_injection.GetPosition().x,
+ self.set_amd_gop_injection.GetPosition().y + self.set_amd_gop_injection.GetSize().height))
+ self.set_nvidia_kepler_gop_injection.SetValue(self.constants.nvidia_kepler_gop_injection)
+ self.set_nvidia_kepler_gop_injection.Bind(wx.EVT_CHECKBOX, self.nvidia_kepler_gop_injection_checkbox_click)
+ if (not self.constants.custom_model and self.computer.real_model not in models) or (self.constants.custom_model and self.constants.custom_model not in models):
+ self.set_nvidia_kepler_gop_injection.Disable()
# Disable Thunderbolt
self.disable_thunderbolt_checkbox = wx.CheckBox(self.frame_modal, label="Disable Thunderbolt")
self.disable_thunderbolt_checkbox.SetValue(self.constants.disable_tb)
self.disable_thunderbolt_checkbox.Bind(wx.EVT_CHECKBOX, self.disable_tb_click)
self.disable_thunderbolt_checkbox.SetPosition(wx.Point(
- self.set_gop_injection.GetPosition().x,
- self.set_gop_injection.GetPosition().y + self.set_gop_injection.GetSize().height))
+ self.set_nvidia_kepler_gop_injection.GetPosition().x,
+ self.set_nvidia_kepler_gop_injection.GetPosition().y + self.set_nvidia_kepler_gop_injection.GetSize().height))
self.disable_thunderbolt_checkbox.SetToolTip(wx.ToolTip("Disables Thunderbolt support on MacBookPro11,x\nMainly applicable for systems that cannot boot with Thunderbolt enabled"))
if not self.constants.custom_model and not self.computer.real_model.startswith("MacBookPro11"):
self.disable_thunderbolt_checkbox.Disable()
@@ -2846,13 +2856,21 @@ class wx_python_gui:
print("Content Caching Disabled")
self.constants.set_content_caching = False
- def gop_injection_checkbox_click(self, event=None):
- if self.set_gop_injection.GetValue():
- print("GOP Injection Enabled")
- self.constants.gop_injection = True
+ def amd_gop_injection_checkbox_click(self, event=None):
+ if self.set_amd_gop_injection.GetValue():
+ print("AMD GOP Injection Enabled")
+ self.constants.amd_gop_injection = True
else:
- print("GOP Injection Disabled")
- self.constants.gop_injection = False
+ print("AMD GOP Injection Disabled")
+ self.constants.amd_gop_injection = False
+
+ def nvidia_kepler_gop_injection_checkbox_click(self, event=None):
+ if self.set_nvidia_kepler_gop_injection.GetValue():
+ print("Nvidia Kepler GOP Injection Enabled")
+ self.constants.nvidia_kepler_gop_injection = True
+ else:
+ print("Nvidia Kepler GOP Injection Disabled")
+ self.constants.nvidia_kepler_gop_injection = False
def disable_tb_click(self, event=None):
if self.disable_thunderbolt_checkbox.GetValue():