### Initialize Audio Output Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/applegfxhda.md Example of how to initialize audio output using the AppleGFXHDA controller. This function should be called after the necessary setup is complete. ```cpp void initializeAudioOutput() { auto& gfxhda = iVega::AppleGFXHDA::singleton(); gfxhda.processKext(patcher, kextId, slide, size); // Audio output is now enabled on GPU displays } ``` -------------------------------- ### Initialize Framebuffer Example Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x6000fb.md Example demonstrating how to initialize the framebuffer using the X6000FB singleton instance. ```cpp void initializeFramebuffer() { auto& x6000fb = iVega::X6000FB::singleton(); x6000fb.processKext(patcher, kextId, slide, size); } ``` -------------------------------- ### Initialize HWLibs Usage Example Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Example demonstrating how to initialize hardware libraries by obtaining the singleton instance and processing the kernel extension. ```cpp void initializeHWLibs() { auto& hwlibs = iVega::X5000HWLibs::singleton(); hwlibs.processKext(patcher, kextId, slide, size); } ``` -------------------------------- ### Get GPU Branding Name List Example (Renoir) Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x6000fb.md Example usage of retrieving the GPU branding name list for the Renoir variant. ```cpp auto* brandingTable = getGpuBrandingNameListRenoir(fbDevice); // brandingTable contains entries like "Radeon Vega 10" with device IDs ``` -------------------------------- ### Backlight::init Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/backlight.md Starts the backlight subsystem by registering a notification handler to install backlight patches when an Apple backlight service loads. This should be called during plugin initialization. ```APIDOC ## Backlight::init ### Description Starts the backlight subsystem. This registers a notification handler to detect when an Apple backlight service loads, allowing the backlight patches to be installed when the system is ready. Call this during plugin initialization. ### Method `void Backlight::init()` ### Returns `void` ### Example ```cpp Backlight::singleton().init(); ``` ``` -------------------------------- ### Example: Process Patcher Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/driver-injector.md Example of how to call the processPatcher method to register kernel patches for driver injection. ```cpp DriverInjector::singleton().processPatcher(patcher); ``` -------------------------------- ### Example Debug Log Output Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/configuration.md This is an example of the verbose debug logging output that can be generated when the -NRedDebug boot argument is enabled. ```text NRed: |-----------------------------------------------------------------| NRed: | Copyright 2022-2025 ChefKiss. | NRed: | If you've paid for this, you've been scammed. Ask for a refund! | NRed: | Do not support tonymacx86. Support us, we truly care. | NRed: | Change the world for the better. | NRed: |-----------------------------------------------------------------| ``` -------------------------------- ### Initialize Acceleration Driver Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x5000.md Example of how to initialize the acceleration driver by obtaining the X5000 singleton and processing the kext. ```cpp void initializeAccelerationDriver() { auto& x5000 = iVega::X5000::singleton(); x5000.processKext(patcher, kextId, size); } ``` -------------------------------- ### Initialize Backlight Subsystem Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/backlight.md Starts the backlight subsystem. Registers a notification handler to detect when an Apple backlight service loads, allowing backlight patches to be installed when the system is ready. Call this during plugin initialization. ```cpp void Backlight::init() ``` ```cpp Backlight::singleton().init(); ``` -------------------------------- ### Get Backlight Singleton Instance Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/backlight.md Returns a reference to the global Backlight manager. Call this to access backlight functionality. ```cpp static Backlight& Backlight::singleton() ``` -------------------------------- ### Function Wrapping Pattern Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/README.md A common pattern for patching functions involves creating a wrapper that performs pre-processing, calls the original function with modified parameters, post-processes the result, and returns it. This example shows how to set up and install such a wrapper. ```cpp static void* originalFunction = nullptr; void* wrappedFunction(void* param) { // Pre-processing setupVegaStuff(); // Call original with modified params void* result = originalFunction(modifiedParam); // Post-processing cleanupVegaStuff(); return result; } // During patching: originalFunction = patcher.solve(...); // Find original patcher.routeFunction(originalFunction, wrappedFunction); // Install patch ``` -------------------------------- ### NRed::init Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/nred.md Primary initialization entry point. Registers callbacks with Lilu to intercept loading of system kexts. Initializes backlight subsystem and installs kernel patcher callbacks. This is called automatically by the plugin configuration at boot time. ```APIDOC ## NRed::init ### Description Primary initialization entry point. Registers callbacks with Lilu (a kernel patching framework) to intercept loading of system kexts (AMDRadeonX6000Framebuffer, AMDRadeonX5000HWLibs, AMDRadeonX5000, AppleGFXHDA, AGDP). Initializes backlight subsystem and installs kernel patcher callbacks. This is called automatically by the plugin configuration at boot time. ### Method `void init()` ### Parameters This method takes no parameters. ### Returns `void` ### Example ```cpp // Called from Plugin.cpp via PluginConfiguration NRed::singleton().init(); ``` ``` -------------------------------- ### Wrap Setup and Initialize HW Capabilities Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x5000.md Wrapped hardware capability initialization. Gathers capability information from the GPU (shader engines, compute units, display support) and stores in object fields. ```cpp static void X5000::wrapSetupAndInitializeHWCapabilities(void* self) ``` -------------------------------- ### iVega::X6000FB API Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/MANIFEST.txt Documentation for the iVega::X6000FB component, including VRAM initialization, interrupt setup, GPU branding, and diagnostics functions. ```APIDOC ## iVega::X6000FB API Reference ### Description This section details the functions available for interacting with the iVega X6000FB graphics controller. It covers initialization, hardware setup, and diagnostic capabilities. ### Functions - **VRAM Initialization**: Functions for initializing the Video RAM. - **Interrupt and Hardware Setup**: Functions for configuring interrupts and hardware. - **GPU Branding Name Lists**: Functions to retrieve GPU branding information. - **Triage and Diagnostics**: Functions for system triage and diagnostic checks. ### Internal Details - **Internal function pointers** - **Function pointer types** ``` -------------------------------- ### Kext Load Processing Example Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/debug-enabler.md Demonstrates how the DebugEnabler is automatically invoked during kext processing using lilu.onKextLoadForce. This snippet shows the registration of a kext load callback. ```cpp // In NRed::init() lilu.onKextLoadForce(nullptr, 0, [](void* const, KernelPatcher& patcher, const size_t id, const mach_vm_address_t slide, const size_t size) { DebugEnabler::singleton().processKext(patcher, id, slide, size); // ... other processing }, nullptr); ``` -------------------------------- ### Link Creation Wrapper Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/backlight.md Wrapped display link creation. Patches the DC link creation process to install backlight handling on newly created links. ```cpp static void* Backlight::wrapLinkCreate(void* data) ``` -------------------------------- ### Process GC Firmware Entries Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Processes Graphics Core firmware initialization entries. Called during GC subsystem setup. ```APIDOC ## Process GC Firmware Entries ### Description Processes Graphics Core firmware initialization entries. Called during GC subsystem setup. ### Method `X5000HWLibs::processGCFWEntries(void* instance, void* initData)` ### Parameters #### Instance Parameters - **instance** (void*) - Required - GC subsystem instance - **initData** (void*) - Required - Initialization data ### Returns `void` ``` -------------------------------- ### Get Singleton Instance Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x6000fb.md Returns the global framebuffer driver patch manager. This is the entry point for accessing and managing the X6000FB singleton instance. ```cpp static X6000FB& X6000FB::singleton() ``` -------------------------------- ### NRed::hwLateInit Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/nred.md Performs late-stage hardware initialization including PCI memory mapping, VBIOS retrieval and setup, register memory mapping, framebuffer offset calculation, and GPU revision detection. Must be called after early hardware enumeration is complete. ```APIDOC ## NRed::hwLateInit ### Description Performs late-stage hardware initialization including PCI memory mapping, VBIOS retrieval and setup, register memory mapping, framebuffer offset calculation, and GPU revision detection. Determines GPU attributes (Picasso, Raven2, Renoir, etc.) based on device and enumeration revision values. Must be called after early hardware enumeration is complete. ### Method `void hwLateInit()` ### Parameters This method takes no parameters. ### Returns `void` ``` -------------------------------- ### SMU 1.2 Specific Initialization Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md SMU 1.2-specific initialization for Renoir generation. Waits for firmware load before proceeding with power and hardware setup. ```APIDOC ## smu12WaitForFwLoaded / smu12PowerUpConfig / smu12InternalHwInit ### Description SMU 1.2-specific initialization for Renoir generation. Waits for firmware load before proceeding with power and hardware setup. ### Function Signature `static CAILResult X5000HWLibs::smu12WaitForFwLoaded()` `static CAILResult X5000HWLibs::smu12PowerUpConfig()` `static CAILResult X5000HWLibs::smu12InternalHwInit(void* instance)` ``` -------------------------------- ### DebugEnabler::wrapInitWithPciInfo Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/debug-enabler.md Wrapped driver initialization function. Called during driver probe/initialization, this patched function ensures debug logging is enabled for GPU support setup. ```APIDOC ## DebugEnabler::wrapInitWithPciInfo ### Description Wrapped driver initialization. Called during driver probe/initialization to set up GPU support. Patched to enable debug logging during init. ### Parameters #### Path Parameters - **self** (void*) - Required - Driver instance being initialized - **pciDevice** (void*) - Required - IOPCIDevice object ### Returns `bool` — True if initialization successful ``` -------------------------------- ### Wrap Get IP Firmware Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Retrieves firmware for a specific IP block by name. Patched to support Vega iGPU firmware loading. Returns true if firmware is found and loaded. ```cpp static bool X5000HWLibs::wrapGetIpFw(void* self, UInt32 ipVersion, const char* name, void* out) ``` -------------------------------- ### SMU 1.2 Specific Initialization Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Performs SMU 1.2-specific initialization for Renoir generation. Waits for firmware load before proceeding with power and hardware setup. ```cpp static CAILResult X5000HWLibs::smu12WaitForFwLoaded() ``` ```cpp static CAILResult X5000HWLibs::smu12PowerUpConfig() ``` ```cpp static CAILResult X5000HWLibs::smu12InternalHwInit(void* instance) ``` -------------------------------- ### Process GC Firmware Entries Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Processes Graphics Core firmware initialization entries. This function is called during the GC subsystem setup phase. Ensure the instance and initData are correctly prepared before calling. ```cpp static void X5000HWLibs::processGCFWEntries(void* instance, void* initData) ``` -------------------------------- ### XML IOKit Personality Example Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/driver-injector.md Defines device matching criteria for IOKit personalities using an XML-encoded dictionary. This format is used to specify properties for matching devices. ```xml IOClass AMDRadeonX6000Framebuffer IOMatchCategory IOFramebuffer IOProviderClass IOPCIDevice IOPCIClassMatch 0x03800000~0xffffff00 IOPCIDevice 0x15d8 ``` -------------------------------- ### Get GPU Branding Name Lists for Vega Variants Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x6000fb.md Returns GPU branding name tables for different Vega variants (Raven, Picasso, Renoir). These tables provide human-readable GPU names. ```cpp static const AmdAsicBrandingTableEntry* X6000FB::getGpuBrandingNameListRaven(const void* self) ``` ```cpp static const AmdAsicBrandingTableEntry* X6000FB::getGpuBrandingNameListPicasso(const void* self) ``` ```cpp static const AmdAsicBrandingTableEntry* X6000FB::getGpuBrandingNameListRenoir(const void* self) ``` -------------------------------- ### Process Kext for Backlight Patches Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/backlight.md Processes a specific kext to install backlight patches. Called by NRed when relevant kexts are loaded. The patcher scans the kext for function patterns and patches them to implement backlight control. ```cpp void Backlight::processKext(KernelPatcher& patcher, size_t id, mach_vm_address_t slide, size_t size) ``` ```cpp Backlight::singleton().processKext(patcher, kextId, slide, kextSize); ``` -------------------------------- ### Backlight::processKext Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/backlight.md Processes a specific kernel extension (kext) to install backlight patches. This method is called by NRed when relevant kexts are loaded, scanning and patching functions to enable backlight control. ```APIDOC ## Backlight::processKext ### Description Processes a specific kext to install backlight patches. Called by NRed when relevant kexts (AppleBacklight, AppleMCCSControl, AGDP, etc.) are loaded. The patcher scans the kext for function patterns and patches them to implement backlight control. ### Method `void Backlight::processKext(KernelPatcher& patcher, size_t id, mach_vm_address_t slide, size_t size)` ### Parameters #### Path Parameters - **patcher** (`KernelPatcher&`) - Required - Kernel patcher instance - **id** (`size_t`) - Required - Kext ID assigned by patcher - **slide** (`mach_vm_address_t`) - Required - Kernel relocation slide/KASLR offset - **size** (`size_t`) - Required - Kext size in memory ### Returns `void` ### Example ```cpp Backlight::singleton().processKext(patcher, kextId, kextSize); ``` ``` -------------------------------- ### X5000HWLibs::X5000HWLibs Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Initializes the X5000HWLibs instance, setting up necessary placeholders for hardware interaction. ```APIDOC ## X5000HWLibs::X5000HWLibs ### Description Initializes the X5000HWLibs instance with ObjectField and function pointer placeholders. ### Method `X5000HWLibs::X5000HWLibs()` ``` -------------------------------- ### Initialize X5000HWLibs Instance Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Initializes the X5000HWLibs instance. It sets up ObjectField and function pointer placeholders. ```cpp X5000HWLibs::X5000HWLibs() ``` -------------------------------- ### Get Framebuffer Offset Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/nred.md Returns the VRAM framebuffer offset read from GC_BASE_0 + MC_VM_FB_OFFSET during `hwLateInit()`. ```APIDOC ## NRed::getFbOffset ### Description Returns the VRAM framebuffer offset read from GC_BASE_0 + MC_VM_FB_OFFSET during `hwLateInit()`. ### Method const ### Response #### Success Response - **UInt64** - Framebuffer memory offset ``` -------------------------------- ### Get Device Revision Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/nred.md Returns the device revision extracted from NBIO_BASE_2 + RCC_DEV0_EPF0_STRAP0 register during `hwLateInit()`. ```APIDOC ## NRed::getDevRevision ### Description Returns the device revision extracted from NBIO_BASE_2 + RCC_DEV0_EPF0_STRAP0 register during `hwLateInit()`. ### Method const ### Response #### Success Response - **UInt16** - Device revision from NBIO straps ``` -------------------------------- ### Get PCI Revision Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/nred.md Returns the PCI revision field from the GPU's configuration space. ```APIDOC ## NRed::getPciRevision ### Description Returns the PCI revision field from the GPU's configuration space. ### Method const ### Response #### Success Response - **UInt8** - PCI revision ID from config space ``` -------------------------------- ### NootedRed Initialization and Control Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/README.md The plugin loads automatically at boot and initialization is handled via a PluginConfiguration callback. Users can control its behavior using boot arguments. ```cpp // Plugin loads automatically at boot // Initialization happens via PluginConfiguration callback // Users can control via boot arguments: -NRedOff, -NRedDebug, -NRedBeta ``` -------------------------------- ### Get Framebuffer Offset Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/nred.md Returns the VRAM framebuffer offset read from GC_BASE_0 + MC_VM_FB_OFFSET during hwLateInit(). ```cpp auto NRed::getFbOffset() const ``` -------------------------------- ### Get Device Revision Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/nred.md Returns the device revision extracted from the NBIO_BASE_2 + RCC_DEV0_EPF0_STRAP0 register during hwLateInit(). ```cpp auto NRed::getDevRevision() const ``` -------------------------------- ### X5000HWLibs::wrapPopulateFirmwareDirectory Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md A wrapper function to handle the population of the firmware directory, cataloging available GPU firmware files. ```APIDOC ## X5000HWLibs::wrapPopulateFirmwareDirectory ### Description Wrapped firmware directory population. Discovers and catalogs available GPU firmware files for use by other driver subsystems. ### Method `static void X5000HWLibs::wrapPopulateFirmwareDirectory(void* self)` ### Parameters #### Path Parameters - **self** (void*) - Required - Hardware library instance ``` -------------------------------- ### Get PCI Revision Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/nred.md Returns the PCI revision field from the GPU's configuration space. ```cpp auto NRed::getPciRevision() const ``` -------------------------------- ### Enable Beta Features Boot Argument Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/configuration.md Use the -NRedBeta boot argument to activate experimental features in NootedRed. These features are not recommended for production use and are intended for testing. ```bash -NRedBeta ``` -------------------------------- ### SMU Get UCode Constants Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Retrieves SMU microcode constants that define hardware capabilities and limits. ```APIDOC ## smuGetUCodeConsts ### Description Retrieves SMU microcode constants that define hardware capabilities and limits. ### Function Signature `static CAILResult X5000HWLibs::smuGetUCodeConsts(void* instance, AMDSMUUCodeConstants* consts)` ### Parameters #### Path Parameters - **instance** (void*) - Required - SMU instance - **consts** (AMDSMUUCodeConstants*) - Required - Pointer to receive microcode constants ### Returns `CAILResult` - Retrieval result ``` -------------------------------- ### Get Device ID Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/nred.md Returns the PCI device ID of the iGPU, read from the GPU's configuration space. ```APIDOC ## NRed::getDeviceID ### Description Returns the PCI device ID read from the GPU's configuration space. ### Method const ### Response #### Success Response - **UInt16** - PCI device ID of the iGPU ``` -------------------------------- ### Dummy IOReturn Success Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x6000fb.md Stub that returns success. Used to replace functionality not needed on Vega iGPUs. ```APIDOC ## Dummy IOReturn Success ### Description Stub that returns success. Used to replace functionality not needed on Vega iGPUs. ### Method static IOReturn ### Endpoint X6000FB::dummyIOReturnSuccess ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Parameters None ### Request Example ```cpp IOReturn result = X6000FB::dummyIOReturnSuccess(); // result will be kIOReturnSuccess ``` ### Response #### Success Response - **IOReturn** - kIOReturnSuccess ### Response Example ```cpp // Returns kIOReturnSuccess ``` ``` -------------------------------- ### Get Device ID Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/nred.md Returns the PCI device ID of the iGPU, read from the GPU's configuration space. ```cpp auto NRed::getDeviceID() const ``` -------------------------------- ### Initialize SMU Function Pointers Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Sets up SMU function pointers appropriate for the detected IP version. Determines which SMU-specific implementations to use. ```APIDOC ## Initialize SMU Function Pointers ### Description Sets up SMU function pointers appropriate for the detected IP version. Determines which SMU-specific implementations to use. ### Method `X5000HWLibs::wrapSmuInitFunctionPointerList(void* instance, SWIPIPVersion ipVersion)` ### Parameters #### Instance Parameters - **instance** (void*) - Required - SMU instance - **ipVersion** (SWIPIPVersion) - Required - SMU IP version ### Returns `CAILResult` — Initialization result ``` -------------------------------- ### Handle CAILResult Errors in C++ Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/errors.md Example of how to check the result of a CAIL operation and handle specific errors like timeouts. ```cpp auto result = NRed::singleton().sendMsgToSmc(msg); if (result != kCAILResultOK) { DBGLOG("smu", "SMU message failed with result %d", result); if (result == kCAILResultTimeOut) { // Handle timeout specifically } } ``` -------------------------------- ### Get Enumeration Revision Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/nred.md Returns the enumeration revision determined during hardware initialization based on device and PCI revision values. ```APIDOC ## NRed::getEnumRevision ### Description Returns the enumeration revision determined during hardware initialization based on device and PCI revision values. ### Method const ### Response #### Success Response - **UInt16** - Enumeration revision value ``` -------------------------------- ### Get Enumeration Revision Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/nred.md Returns the enumeration revision determined during hardware initialization based on device and PCI revision values. ```cpp auto NRed::getEnumRevision() const ``` -------------------------------- ### Set GC Firmware Entry Info Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Sets up GC firmware entry information for the specified IP version. Patched to handle Vega-specific initialization. ```APIDOC ## Set GC Firmware Entry Info ### Description Sets up GC firmware entry information for the specified IP version. Patched to handle Vega-specific initialization. ### Method `X5000HWLibs::wrapGcSetFwEntryInfo(void* instance, SWIPIPVersion ipVersion, void* initData)` ### Parameters #### Instance Parameters - **instance** (void*) - Required - GC instance - **ipVersion** (SWIPIPVersion) - Required - IP version enumeration - **initData** (void*) - Required - GC initialization data ### Returns `CAILResult` — Configuration result ``` -------------------------------- ### Initialize SMU Function Pointers Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Sets up SMU function pointers appropriate for the detected IP version. This function determines which SMU-specific implementations to use. Provide the correct instance and IP version. ```cpp static CAILResult X5000HWLibs::wrapSmuInitFunctionPointerList(void* instance, SWIPIPVersion ipVersion) ``` -------------------------------- ### Get Attributes Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/nred.md Returns a reference to the internal attributes object which tracks GPU model variants (Picasso, Raven2, Renoir, RenoirE, GreenSardine). ```APIDOC ## NRed::getAttributes ### Description Returns a reference to the internal attributes object which tracks GPU model variants (Picasso, Raven2, Renoir, RenoirE, GreenSardine). ### Method const ### Response #### Success Response - **Attributes&** - Reference to attributes bitfield ``` -------------------------------- ### Load PSP SOS Firmware for Vega 10 Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Loads the Secure OS firmware into the PSP for Vega 10 (Picasso/Raven) generation GPUs. Returns kCAILResultOK on success. ```cpp static CAILResult X5000HWLibs::pspBootloaderLoadSos10(void* instance) ``` -------------------------------- ### X5000::wrapSetupAndInitializeHWCapabilities Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x5000.md Wrapped hardware capability initialization. This function gathers capability information from the GPU, including shader engines, compute units, and display support, and stores it in object fields. ```APIDOC ## X5000::wrapSetupAndInitializeHWCapabilities ### Description Wrapped hardware capability initialization. Gathers capability information from the GPU (shader engines, compute units, display support) and stores in object fields. ### Method `static void X5000::wrapSetupAndInitializeHWCapabilities(void* self)` ### Parameters #### Path Parameters - **self** (void*) - Required - AMDRadeonX5000 device instance ``` -------------------------------- ### Initialize X5000 Instance Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x5000.md Initializes the X5000 instance with ObjectField and function pointer placeholders. Constructor is called implicitly when accessing the singleton. ```cpp X5000::X5000() ``` -------------------------------- ### Set GC Firmware Entry Info Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Sets up GC firmware entry information for the specified IP version. This function is patched to handle Vega-specific initialization. Provide the correct instance, IP version, and initialization data. ```cpp static CAILResult X5000HWLibs::wrapGcSetFwEntryInfo(void* instance, SWIPIPVersion ipVersion, void* initData) ``` -------------------------------- ### Get Attributes Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/nred.md Returns a reference to the internal attributes object, which tracks GPU model variants like Picasso, Raven2, Renoir, RenoirE, and GreenSardine. ```cpp auto& NRed::getAttributes() const ``` -------------------------------- ### Get Triage Hardware Data (Renoir) Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x6000fb.md Collects diagnostic hardware data for Renoir generation GPUs. This variant uses Renoir-specific register definitions. ```cpp static IOReturn X6000FB::getTriageHardwareDataRN(void* const self, const UInt32 fbIndex, void* const triageData) ``` -------------------------------- ### Wrap Populate Firmware Directory Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Wrapped function for populating the firmware directory. It discovers and catalogs available GPU firmware files for other driver subsystems. ```cpp static void X5000HWLibs::wrapPopulateFirmwareDirectory(void* self) ``` -------------------------------- ### Driver Injector Initialization Pattern Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/driver-injector.md Shows how the Driver Injector is initialized early in the plugin startup process using lilu.onPatcherLoadForce. This ensures personalities are injected before other kexts are loaded. ```cpp // In NRed::init() lilu.onPatcherLoadForce( [](void* const, KernelPatcher& patcher) { iVega::DriverInjector::singleton().processPatcher(patcher); // ... other processing }, nullptr); ``` -------------------------------- ### AppleBacklight Display Load Notification Callback Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/backlight.md Callback invoked when AppleBacklight service loads. Installs display-level patches to intercept backlight control operations. ```cpp static bool Backlight::OnAppleBacklightDisplayLoad(void* target, void* refCon, IOService* newService, IONotifier* notifier) ``` -------------------------------- ### X5000HWLibs::wrapGetIpFw Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Retrieves firmware for a specific IP block, supporting Vega iGPU firmware loading. ```APIDOC ## X5000HWLibs::wrapGetIpFw ### Description Retrieves firmware for a specific IP block (Graphics Core, Display Controller, etc.) by name. Patched to support Vega iGPU firmware loading. ### Method `static bool X5000HWLibs::wrapGetIpFw(void* self, UInt32 ipVersion, const char* name, void* out)` ### Parameters #### Path Parameters - **self** (void*) - Required - Hardware library instance - **ipVersion** (UInt32) - Required - IP block version (e.g., GC 9.0 = 0x9) - **name** (const char*) - Required - Firmware file name to retrieve - **out** (void*) - Required - Pointer to receive firmware object ### Returns `bool` - True if firmware found and loaded ``` -------------------------------- ### DCE Panel Control Hardware Init Wrapper Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/backlight.md Wrapped panel control hardware initialization. Replaces original DCE panel control init to prepare panel for AMD backlight control. ```cpp static UInt32 Backlight::wrapDcePanelCntlHwInit(void* panelCntl) ``` -------------------------------- ### Access X5000 Singleton Instance Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x5000.md Returns the global X5000 patch manager. Access this to interact with acceleration driver patches. ```cpp static X5000& X5000::singleton() ``` -------------------------------- ### Get DMCU Firmware Constants Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Retrieves display controller firmware constants for DCN 1.0 and DCN 2.1. These control display timing and backlight operations. ```APIDOC ## Get DMCU Firmware Constants ### Description Retrieves display controller firmware constants for DCN 1.0 and DCN 2.1. These control display timing and backlight operations. ### Methods - `X5000HWLibs::getDcn1FwConstants(void* instance, DMCUFirmwareInfo* fwData)` - `X5000HWLibs::getDcn21FwConstants(void* instance, DMCUFirmwareInfo* fwData)` ### Parameters #### Instance Parameters - **instance** (void*) - Required - DMCU instance - **fwData** (DMCUFirmwareInfo*) - Required - Pointer to receive firmware constants ### Returns `bool` ``` -------------------------------- ### Get Triage Hardware Data (Renoir) Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x6000fb.md Collects diagnostic hardware data for Renoir generation GPUs. Similar to Raven variant but with Renoir-specific register definitions. ```APIDOC ## Get Triage Hardware Data (Renoir) ### Description Collects diagnostic hardware data for Renoir generation GPUs. Similar to Raven variant but with Renoir-specific register definitions. ### Method static IOReturn ### Endpoint X6000FB::getTriageHardwareDataRN ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Parameters - **self** (void* const) - Required - Framebuffer device instance - **fbIndex** (const UInt32) - Required - Framebuffer/display index - **triageData** (void* const) - Required - Pointer to receive triage data ### Request Example ```cpp void* fbDevice = /* ... */; UInt32 displayIndex = 0; void* dataBuffer = malloc(sizeof(TriageDataType)); // Allocate buffer for triage data IOReturn status = X6000FB::getTriageHardwareDataRN(fbDevice, displayIndex, dataBuffer); if (status == kIOReturnSuccess) { // Process triage data in dataBuffer } free(dataBuffer); ``` ### Response #### Success Response (kIOReturnSuccess) - **IOReturn** - kIOReturnSuccess on success ### Response Example ```cpp // status will be kIOReturnSuccess if data collection was successful ``` ``` -------------------------------- ### Initialize SDMA Function Pointers Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Initializes function pointers for SDMA (System DMA) engine operations based on firmware version. Patched to support Vega SDMA firmware. ```APIDOC ## Initialize SDMA Function Pointers ### Description Initializes function pointers for SDMA (System DMA) engine operations based on firmware version. Patched to support Vega SDMA firmware. ### Method `X5000HWLibs::wrapSdmaInitFunctionPointerList(void* instance, UInt32 verMajor, UInt32 verMinor, UInt32 verPatch)` ### Parameters #### Instance Parameters - **instance** (void*) - Required - SDMA instance - **verMajor** (UInt32) - Required - Firmware major version - **verMinor** (UInt32) - Required - Firmware minor version - **verPatch** (UInt32) - Required - Firmware patch version ### Returns `CAILResult` — Initialization result ``` -------------------------------- ### Wrap GPU Driver Initialization with PCI Info Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/debug-enabler.md Wrapped driver initialization. Called during driver probe/initialization to set up GPU support. Patched to enable debug logging during init. ```cpp static bool DebugEnabler::wrapInitWithPciInfo(void* self, void* pciDevice) ``` -------------------------------- ### Initialize NRed Plugin Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/nred.md Primary initialization entry point for the NRed plugin. Registers callbacks with Lilu and initializes the backlight subsystem. This is called automatically by the plugin configuration at boot time. ```cpp // Called from Plugin.cpp via PluginConfiguration NRed::singleton().init(); ``` -------------------------------- ### Get NRed Singleton Instance Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/nred.md Access the global NootedRed module instance using the singleton pattern. Call this to access NRed functionality from anywhere in the kernel extension. ```cpp auto& nred = NRed::singleton(); nred.init(); ``` -------------------------------- ### Apple Panel Display Setter Wrapper Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/backlight.md Wrapped Apple panel display configuration. Patches the panel's display setter to install AMD-specific backlight initialization. ```cpp static bool Backlight::wrapApplePanelSetDisplay(IOService* self, IODisplay* display) ``` -------------------------------- ### SMU Internal Software Init Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Performs software-level SMU initialization including loading power tables and configuring clocks. Two versions are available for different SMU generations. ```APIDOC ## smuInternalSwInit / smuInternalSwInitOld ### Description Performs software-level SMU initialization including loading power tables and configuring clocks. Two versions for different SMU generations. ### Function Signature `static CAILResult X5000HWLibs::smuInternalSwInit(void* instance, void* input, AMDSMUSWInitOutput* output)` `static CAILResult X5000HWLibs::smuInternalSwInitOld(void* instance, void* input, AMDSMUSWInitOutput* output)` ### Parameters #### Path Parameters - **instance** (void*) - Required - SMU instance - **input** (void*) - Required - Initialization input structure - **output** (AMDSMUSWInitOutput*) - Required - Pointer to receive initialization output ### Returns `CAILResult` - Initialization result ``` -------------------------------- ### Get Triage Hardware Data (Raven/Picasso) Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x6000fb.md Collects diagnostic hardware data for Raven/Picasso generation GPUs. Gathers register dumps and hardware state information for crash reporting. ```cpp static IOReturn X6000FB::getTriageHardwareDataRV(void* const self, const UInt32 fbIndex, void* const triageData) ``` -------------------------------- ### Backlight::singleton Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/backlight.md Returns a reference to the global Backlight manager. This is the primary method to access backlight functionality. ```APIDOC ## Backlight::singleton ### Description Returns a reference to the global Backlight manager. Call this to access backlight functionality. ### Method `static Backlight& Backlight::singleton()` ### Returns `Backlight&` — The unique Backlight singleton instance ``` -------------------------------- ### Get Enumerated GPU Revision Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x6000fb.md Retrieves the GPU's enumeration revision ID determined during hardware initialization. This is used to select GPU-variant-specific code paths within the framebuffer driver. ```cpp static UInt16 X6000FB::getEnumeratedRevision() ``` -------------------------------- ### DebugEnabler::processKext Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/debug-enabler.md Processes a kext to install debug logging patches. This method dispatches to specialized processing based on kext type and forces output from various logging and assertion functions. ```APIDOC ## DebugEnabler::processKext ### Description Processes a kext to install debug logging patches. Dispatches to specialized processing methods based on kext type. Patches various logging and assertion functions to force output regardless of debug mode. ### Parameters #### Path Parameters - **patcher** (KernelPatcher&) - Required - Kernel patcher instance - **id** (size_t) - Required - Kext ID assigned by patcher - **slide** (mach_vm_address_t) - Required - Kernel relocation slide/KASLR offset - **size** (size_t) - Required - Kext size in memory ### Returns `void` ### Example ```cpp DebugEnabler::singleton().processKext(patcher, kextId, slide, kextSize); ``` ``` -------------------------------- ### Get Triage Hardware Data (Raven) Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x6000fb.md Collects diagnostic hardware data for Raven/Picasso generation GPUs. Used for crash reporting and troubleshooting. Gathers register dumps and hardware state information. ```APIDOC ## Get Triage Hardware Data (Raven) ### Description Collects diagnostic hardware data for Raven/Picasso generation GPUs. Used for crash reporting and troubleshooting. Gathers register dumps and hardware state information. ### Method static IOReturn ### Endpoint X6000FB::getTriageHardwareDataRV ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Parameters - **self** (void*) - Required - Framebuffer device instance - **fbIndex** (const UInt32) - Required - Framebuffer/display index - **triageData** (void*) - Required - Pointer to receive triage data ### Request Example ```cpp void* fbDevice = /* ... */; UInt32 displayIndex = 0; void* dataBuffer = malloc(sizeof(TriageDataType)); // Allocate buffer for triage data IOReturn status = X6000FB::getTriageHardwareDataRV(fbDevice, displayIndex, dataBuffer); if (status == kIOReturnSuccess) { // Process triage data in dataBuffer } free(dataBuffer); ``` ### Response #### Success Response (kIOReturnSuccess) - **IOReturn** - kIOReturnSuccess on success ### Response Example ```cpp // status will be kIOReturnSuccess if data collection was successful ``` ``` -------------------------------- ### X5000HWLibs::singleton Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Provides access to the global singleton instance of the X5000HWLibs class, which manages hardware library patching for Vega iGPUs. ```APIDOC ## X5000HWLibs::singleton ### Description Returns the global hardware libraries patch manager instance. ### Method `static X5000HWLibs& X5000HWLibs::singleton()` ### Returns `X5000HWLibs&` - The unique X5000HWLibs singleton instance. ``` -------------------------------- ### DebugEnabler::processX5000HWLibs Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/debug-enabler.md Patches AMDRadeonX5000HWLibs.kext to enable debug output, focusing on firmware loading and hardware initialization logging. ```APIDOC ## DebugEnabler::processX5000HWLibs ### Description Patches AMDRadeonX5000HWLibs.kext to enable debug output. Patches firmware loading and hardware initialization logging. ### Returns `void` ``` -------------------------------- ### X5000::processKext Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x5000.md Scans and patches the AMDRadeonX5000 acceleration driver kext. It finds function entry points and patches them to fix GPU capability detection, memory addressing, and acceleration channel setup. ```APIDOC ## X5000::processKext ### Description Scans and patches the AMDRadeonX5000 acceleration driver kext. Finds function entry points, patches them to fix GPU capability detection, memory addressing, and acceleration channel setup. ### Method `void X5000::processKext(KernelPatcher& patcher, size_t id, mach_vm_address_t slide, size_t size)` ### Parameters #### Path Parameters - **patcher** (KernelPatcher&) - Required - Kernel patcher instance - **id** (size_t) - Required - Kext ID assigned by patcher - **slide** (mach_vm_address_t) - Required - Kernel relocation slide/KASLR offset - **size** (size_t) - Required - Kext size in memory ### Returns `void` ### Request Example ```cpp X5000::singleton().processKext(patcher, kextId, slide, kextSize); ``` ``` -------------------------------- ### Process AMDRadeonX5000HWLibs Kext Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/debug-enabler.md Patches AMDRadeonX5000HWLibs.kext to enable debug output. Patches firmware loading and hardware initialization logging. ```cpp void DebugEnabler::processX5000HWLibs(KernelPatcher& patcher, size_t id, mach_vm_address_t slide, size_t size) ``` -------------------------------- ### SMU 1.0 Specific Initialization Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md SMU 1.0-specific power-up and hardware initialization for Picasso/Raven generation. ```APIDOC ## smu10PowerUpConfig / smu10InternalHwInit ### Description SMU 1.0-specific power-up and hardware initialization for Picasso/Raven generation. ### Function Signature `static CAILResult X5000HWLibs::smu10PowerUpConfig()` `static CAILResult X5000HWLibs::smu10InternalHwInit(void* instance)` ``` -------------------------------- ### Metaclass Pointers for Engine Instantiation Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x5000.md Stores pointers to dynamically discovered metaclasses for PM4 and SDMA engines, used for creating engine instances. ```cpp OSMetaClass* pm4EngineMC; OSMetaClass* sdmaEngineMC; ``` -------------------------------- ### Get GC Firmware Constants Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Retrieves GC firmware constants for different IP versions (9.1, 9.2, 9.3). These constants define shader engine counts, memory configuration, and other core properties. ```APIDOC ## Get GC Firmware Constants ### Description Retrieves GC firmware constants for different IP versions (9.1, 9.2, 9.3). These constants define shader engine counts, memory configuration, and other core properties. ### Methods - `X5000HWLibs::gc91GetFwConstants(void* instance, GCFirmwareInfo* fwData)` - `X5000HWLibs::gc92GetFwConstants(void* instance, GCFirmwareInfo* fwData)` - `X5000HWLibs::gc93GetFwConstants(void* instance, GCFirmwareInfo* fwData)` ### Parameters #### Instance Parameters - **instance** (void*) - Required - GC subsystem instance - **fwData** (GCFirmwareInfo*) - Required - Pointer to receive firmware constants ### Returns `void` ``` -------------------------------- ### Get Numeric Property Wrappers Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/debug-enabler.md Wrapped device property getters that patch property access to enable debug logging. Two overload variants are provided to handle different AMD driver versions. ```APIDOC ## DebugEnabler::wrapGetNumericProperty ### Description Wrapped device property getter that patches property access to enable debug logging. Handles property retrieval and provides the value via a pointer. ### Signature `static bool wrapGetNumericProperty(void* self, const char* name, UInt32* value)` ### Parameters - **self** (void*) - Required - Device/driver instance - **name** (const char*) - Required - Property name to retrieve - **value** (UInt32*) - Optional - Pointer to receive property value ### Returns `bool` - Indicates success or failure of the operation. ``` ```APIDOC ## DebugEnabler::wrapGetNumericProperty1 ### Description Wrapped device property getter that patches property access to enable debug logging. Returns the property value directly. ### Signature `static UInt32 wrapGetNumericProperty1(void* self, const char* name)` ### Parameters - **self** (void*) - Required - Device/driver instance - **name** (const char*) - Required - Property name to retrieve ### Returns `UInt32` - The value of the requested property. ``` -------------------------------- ### X6000FB::wrapIH40IVRingInitHardware Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-x6000fb.md Wrapped interrupt handler hardware initialization for IH 4.0, setting up the command ring for GPU interrupts. ```APIDOC ## X6000FB::wrapIH40IVRingInitHardware ### Description Wrapped interrupt handler hardware initialization. Sets up the IH 4.0 interrupt handler's command ring for processing GPU interrupts. Patched to work with Vega hardware. ### Method `static bool X6000FB::wrapIH40IVRingInitHardware(void* ctx, void* param2)` ### Parameters #### Path Parameters - **ctx** (void*) - Required - Interrupt handler context - **param2** (void*) - Required - Additional initialization parameter ### Returns `bool` — True if initialization successful ``` -------------------------------- ### X5000HWLibs::processKext Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Scans and patches the AMDRadeonX5000HWLibs kext to support Vega iGPU specific functionalities like firmware loading and SMU configuration. ```APIDOC ## X5000HWLibs::processKext ### Description Scans and patches the AMDRadeonX5000HWLibs kext. Locates firmware loading, SMU management, and hardware block initialization functions, patching them to support Vega iGPUs. ### Method `void X5000HWLibs::processKext(KernelPatcher& patcher, size_t id, mach_vm_address_t slide, size_t size)` ### Parameters #### Path Parameters - **patcher** (KernelPatcher&) - Required - Kernel patcher instance - **id** (size_t) - Required - Kext ID assigned by patcher - **slide** (mach_vm_address_t) - Required - Kernel relocation slide/KASLR offset - **size** (size_t) - Required - Kext size in memory ### Returns `void` ``` -------------------------------- ### Get DMCU Firmware Constants Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/ivega-hwlibs.md Retrieves display controller firmware constants for DCN 1.0 and DCN 2.1. These constants control display timing and backlight operations. Use this to configure display-related hardware parameters. ```cpp static bool X5000HWLibs::getDcn1FwConstants(void* instance, DMCUFirmwareInfo* fwData) static bool X5000HWLibs::getDcn21FwConstants(void* instance, DMCUFirmwareInfo* fwData) ``` -------------------------------- ### Enable Debug Logging Boot Argument Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/configuration.md Add the -NRedDebug boot argument to force debug logging in AMD drivers. This enables verbose output in system logs, useful for diagnosing issues. ```bash -NRedDebug ``` -------------------------------- ### AppleGFXHDA::processKext Source: https://github.com/chefkissinc/nootedred/blob/master/_autodocs/api-reference/applegfxhda.md Scans and patches the AppleGFXHDA kext to enable audio output on Vega iGPU displays. Patches device detection, audio function group creation, and codec widget configuration. ```APIDOC ## AppleGFXHDA::processKext ### Description Scans and patches the AppleGFXHDA kext to enable audio output on Vega iGPU displays. Patches device detection, audio function group creation, and codec widget configuration. ### Method `void AppleGFXHDA::processKext(KernelPatcher& patcher, size_t id, mach_vm_address_t slide, size_t size)` ### Parameters #### Path Parameters - **patcher** (KernelPatcher&) - Required - Kernel patcher instance - **id** (size_t) - Required - Kext ID assigned by patcher - **slide** (mach_vm_address_t) - Required - Kernel relocation slide/KASLR offset - **size** (size_t) - Required - Kext size in memory ### Returns `void` ### Example ```cpp AppleGFXHDA::singleton().processKext(patcher, kextId, slide, kextSize); ``` ```