Jump to content
LaptopVideo2Go Forums

Modding 101 - The Basics and Hybrid Graphics


Nautis1100

Recommended Posts

Note: This information is based on the INF for Windows Vista / Windows 7 64bit.

Modding 101 – The Basics

Identifying your graphics hardware and its Hardware ID.

Open Control Panel -> Device Manager.

Double Click “Display Adapters”.

Double Click “NVIDIA Geforce…..” .

Click the “Details Tab”.

For Device Name: Under Property choose “Device Description”. It should be the only thing there.

For Device ID: Under Property choose “Hardware IDs”. It should be the one on the second line.

Note: You can easily copy the information on the details tab by right clicking and choosing copy.

Example

My Device Name: NVIDIA GeForce 9300M GS

My Hardware ID: PCI\VEN_10DE&DEV_06E5&SUBSYS_9025104D

This should be all the information you need to locate your device in the INF.

Breaking down the Hardware ID

PCI\ = Connection Type (PCI Bus)

VEN_ = Vendor ID (10DE = NVIDIA)

DEV_ = Device ID (06E5 = GeForce 9300M GS)

SUBSYS_ = SubSystem ID (9025104D = Specific Sony Vaio Z hardware configuration)

Locating the sections related to your graphics hardware in the Nvidia INF.

It is usually easiest for me when modifying a driver install information file (INF) to start with the strings at the bottom.

Example

[strings]
NVIDIA_DEV.06E5.01 = "NVIDIA GeForce 9300M GS"

We can see in the example this INF supports my graphics device as we have found both its Device ID and its Device Name. Now that we know this particular INF supports my graphics device we can continue.

The next and one of the most critical areas for hardware identification is located near the top under [NVIDIA_SetA_Devices.NTamd64.6.1].

Example

[NVIDIA_SetA_Devices.NTamd64.6.1]
%NVIDIA_DEV.06E5.01% = Section002, PCI\VEN_10DE&DEV_06E5&SUBSYS_9025104D

Breaking down this example

  • %NVIDIA_DEV.06E5.01%
    = links to the [strings] section at the bottom of the INF.

  • Section002
    = Tells the installer to use [section002] for this device.

  • PCI\VEN_10DE&DEV_06E5&SUBSYS_9025104D
    = The Hardware ID of my Vaio Z. This is the part that the INF uses to detect if this driver is appropriate for my system.

One thing to note is that if the SubSystem ID is missing or excluded the installer will use the Device ID to identify the hardware. This means if we shorten it to PCI\VEN_10DE&DEV_06E5 it will install on all NVIDIA GeForce 9300M GS’ with the Device ID of 06E5. This is very useful if you need to create an INF that works on more than just specific systems.

It is important to note that NTamd64.6.1 applies to Windows 7 and NTamd64.6.0 applies to Windows Vista. So the string information under them only applies to the corresponding operating system.

Moving to [section002] we see things like AddReg, CopyFiles, DelReg and RegisterDLLs.

  • AddReg
    = Settings that will be added to the registry when the drivers are installed.

  • DelReg
    = Settings that will be deleted from the registry when the drivers are installed.

  • CopyFiles
    = Files that will be copied when the drivers are installed.

  • DelFiles
    = Files that will be deleted when the drivers are installed.

  • RegisterDLLs
    = These will be the DLLs that will be registered when the drivers are installed.

  • Feature Score
    = Is basically a driver rank for our purposes the most essential information is F6 = Windows Vista and E6 = Windows 7.

The strings after the equal sign are some of the final locations that we need to pay attention to. Nvidia likes to mark specific sections with numbers after the string if there is more than one section required in the INF.

Example

[section002]
…
AddReg = nv_miscBase_addreg__02
…
CopyFiles = nv_sysDrivers_copyfiles
…
RegisterDLLs = nv_common_registerdll__02

In this example we can see the settings under [nv_miscBase_addreg__02] will be added to the registry. The files under [nv_sysDrivers_copyfiles] will be copied to their marked locations. The DLLs under [nv_common_registerdll__02] will be registered.

One of the most important sections to pay attention to here is nv_miscBase_addreg__##. This section is where the majority of the settings that will be used specifically for your graphics hardware are located. There are usually multiple nv_miscBase_addreg__## entries because each is unique to the individual graphics hardware of which a typical INF supports many.

And with that we have the general flow of the install information file when the driver is installed. In my case using the previous examples, the flow to find the settings specific to my graphics hardware is easiest to read as:

[strings] -> [NVIDIA_SetA_Devices.NTamd64.6.1] -> [section002] -> [nv_miscBase_addreg__02]

Now that we have some of the basic understanding of the flow and function of the INF we can move on to some specifics.

Modding 101 - The ins and outs of the Hybrid Graphics driver package (Work in progress - Will Update soon)

Hybrid Graphics Defined (As I see it)

To better understand Hybrid Graphics let me first explain about another technology called Hybrid SLI:

Hybrid SLI is defined by Nvidia as ".. a revolutionary platform innovation that allows you to intelligently scale graphics performance by combining multiple NVIDIA graphics solutions in an SLI-Certified motherboard." It achives this using two subtechnologies called Geforce Boost and Hybrid Power. Geforce Boost as defined by Nvidia ".. turbocharges the performance of NVIDIA discrete GPUs when combined with NVIDIA motherboard GPUs." It utilizes the 3d capabilities of both Nvidia GPUs together for added performance. Hybrid Power (once again as defined by Nvidia) "..unleashes graphics performance when needed and switches to quiet, low-power quiet operation for everyday computing." It does this by basically switching off the discrete Nvidia GPU while continuing to use the motherboard GPU.

Nvidias Hybrid Graphics (aka Switchable Graphics) is a variant of Nvidias Hybrid SLI technology. Like Hybrid SLI it allows the ability to scale graphics performance by combining GPUs. What makes Hybrid Graphics different is that it uses an Intel motherboard GPU in combination with a discrete Nvidia GPU, rather than two or more Nvidia GPUs. Because it does not use two Nvidia GPUs Geforce Boost is disabled and it instead focuses on Hybrid Power. It utilizes Hybrid Power by allowing the exceptional performance of the discrete Nvidia GPU when needed and switching it off and using the Intel GPU when not needed. Most Hybrid Graphics notebooks have a way of manually switching between the Intel and Nvidia GPUs. There is not really a time when both Intel and Nvidia GPUs are utilized its usually either one or the other.

How Do The Drivers Work?

Hybrid Graphics is both a hardware and software technology. Its drivers are packaged together with Intel drivers in a way that allows the Hybrid Graphics technology to function. In order for Hybrid Graphics and GPU switching to work the drivers must be combined. The discrete Nvidia GPU will not work on its own without the Hybrid Graphics drivers while the integrated Intel motherboard GPU will. If you install Intel drivers on their own Hybrid Graphics, Switching, and the Nvidia GPU will not function properly. Part of what makes the Hybrid Graphics driver package unique is that it forces the Nvidia drivers to basically become host since they control switching.

Technically speaking there are no specialized Nvidia or Intel drivers needed for Hybrid Graphics. This does not mean however that that all Nvidia or Intel drivers will work fully with Hybrid Graphics.

How a Hybrid Graphics Driver Is Built

A Hybrid Graphics driver consists of four main parts.

1.) Intel Driver Files

2.) Nvidia Driver Files

3.) Hybrid Graphics INF (Which is a combined Nvidia and Intel INF with a few modifications critical to Hybrid Graphics.)

4.) And two files specific only to Hybrid Graphics:
nvbridge_int.kmd
File (A file unique to Hybrid Graphics. The "_int" portion refers to Intel. While the file sizes may be the same the nvbridge_int.kmd is different than nvbridge.kmd.) and
nvdisp_IH.nvu
(A file unique to Hybrid Graphics found in newer releases. I assume the _IH stands for Intel Hybrid. This file contains the uninstall information for the Hybrid Graphics package.)

The only two files specific to Hybrid Graphics are:

nvbridge_int.kmd

nvdisp_IH.nvu

The INF

The Hybrid Graphics INF is both Nvidia and Intel INFs combined into one with a few critical modifications.

The following has been
added
to the Hybrid Graphics INF versus the standard Nvidia and Intel INFs:
[section###]
AddReg = nv_HelperGUID_AddReg

[nv_HelperGUID_AddReg]
HKLM, "System\CurrentControlSet\Services\NVLDDMKM", NVIDIAHelperGUID, %REG_SZ%, {9A516B97-E7C1-451B-9165-C5035994A3F5}
HKLM, "System\CurrentControlSet\Services\NVLDDMKM", SecondaryHelperGUID, %REG_SZ%, {6C4BE3D5-831A-42ED-AA62-2AEB34C8CBA4}

[iCNT0]
AddReg = nv_Hybrid_AddReg

[nv_Hybrid_AddReg]
HKR,, "DefaultHybridMode",, 1		; Default is EnergySaver

The following has been
changed
in the Hybrid Graphics INF versus the standard Nvidia and Intel INFs:
[nv_commonBase_addreg__##]
HKR,,UserModeDriverGUID,%REG_SZ%,"{5F507F20-AEB0-4C37-A10C-FFBDF3269C76}"

[CoInst.AddReg]
;HKR,, CoInstallers32, %REG_MULTI_SZ%, "igfxCoIn_v####.dll, CoDeviceInstall"

[CoInst.CopyFiles]
;igfxCoIn_v####.dll,igxpco64.dll,,0x00000010

[igfx_SoftwareCommonSettings]
HKR,, UserModeDriverGUID,%REG_SZ%,"{5F507F20-AEB0-4C37-A10C-FFBDF3269C76}"

These are of course the major INF differences which are easily overlooked but critical to Hybrid Graphics functionality. There are other INF changes corresponding with the Hybrid Graphics specific files mentioned above. There are also other changes that are more along the lines of traditional INF driver differences.

See the INF comparisons or basic breakdown below for other differences.

Modding 101 - Hybrid Graphics - Separates (Work in progress - Will Update soon)

This is something AFAIK that only I have done so far and is somewhat experimental. Since we have learned in the previous section how Hybrid Graphics works and how the install information file (INF) is laid out, we can use that knowledge to do something entirely new. In this section I will explain how to keep the Intel and Nvidia drivers separate and modify the INF of each to provide proper Hybrid Graphics support. Yes you read that correctly you can modify and install the Intel and Nvidia drivers separately, it just takes a knowledge and a little finesse. The ultimate benefit to doing things this way is probably the fact that you will not need to put windows into test mode or sign the drivers to get them to work since each driver will be using its existing certificate.

Link to comment
Share on other sites

  • 1 month later...
  • 2 months later...
Guest anytimer

Modding 101 - Hybrid Graphics - Separates (Work in progress - Will Update soon)

This is something AFAIK that only I have done so far and is somewhat experimental. Since we have learned in the previous section how Hybrid Graphics works and how the install information file (INF) is laid out, we can use that knowledge to do something entirely new. In this section I will explain how to keep the Intel and Nvidia drivers separate and modify the INF of each to provide proper Hybrid Graphics support. Yes you read that correctly you can modify and install the Intel and Nvidia drivers separately, it just takes a knowledge and a little finesse. The ultimate benefit to doing things this way is probably the fact that you will not need to put windows into test mode or sign the drivers to get them to work since each driver will be using its existing certificate.

Any update/ progress report/ expected due date? Most impressed by your efforts. Keep it up.

Link to comment
Share on other sites

  • 1 year later...

Nautis -- I realise that you are probably busy, but could you please provide us with some more info about the updates on this modding guide? It'd be very helpful.

Link to comment
Share on other sites

×
×
  • Create New...