whack, i saw this in the rivatuner faq. i wonder if we can apply this. fyi, it's pretty long. i'll email the guy and see if he's got any ideas.
Q: Can you explain me NV40 softmodding internals?
A: NV40 graphics processor's internal configuration is rather flexible and amount of active pixel and vertex units can be easily controlled by special GPU units configuration register. State of each pixel and vertex unit is mapped to the corresponding bit in the configuration register, logical 1 in this bit enables mapped unit, logical 0 - disables unit and prevents graphics processor from using it. This technique allows creating 16x1,6vp / 12x1,5vp / 8x1,4vp boards based on NV40 graphics processor core. So any NV40 graphics processor can be easily reprogrammed to use 1-4 pixel units (or 4-16 pixel pipelines) and 1-6 vertex units via masking the corresponding bits in the configuration register. However, GPU manufacturing process cannot give 100% manufacturing yields and the chips often have some faulty units due to manufacturing process non-ideality. To accommodate this fact, graphics processor's units quality testing is performed after graphics processor manufacturing, and faulty / instable units are marked with so called hardware units mask, which is defined by strapping resistors located on GPU package. Hardware units mask effectively locks such pixel and vertex units at hardware level, making a bit of the configuration register hardwired to 0 as soon as the corresponding bit in mask is set. The mask forces the chip to ignore any attempts to write 1 to masked bit of the configuration register, making unit activation physically impossible for BIOS and third party software tools trying to program configuration register. Happily, hardwired mask itself is stored in a register, which doesn't affect GPU functionality. It only allows software to see which units are bad, but doesn't actually strap anything. The real mask, affecting configuration register bits' programmability is stored in different register, which is simply initialized by BIOS with value stored in hardwired register. So it is possible to reprogram it, allowing graphics processor to activate all units, even if they are hardware masked.
During POST VGA BIOS protects masked units from enabling using hardwired value. Then it enables some or all non-hardware masked units. Some vendors also tend to lock units with so called software units mask, i.e. VGA BIOS simply doesn't enable a unit even if it is not hardware masked. This mainly applies to GeForce 6800 boards having only one hardware masked pixel / vertex units. To fit in specs, one pixel / vertex unit on the boards with such chips is soft-masked in VGA BIOS.
RivaTuner provides two modes of unlocking pixel / vertex units on NV40 GPU based boards. The first one is the safest - you may enable only software masked units, disabled by display adapter's vendor in VGA BIOS due to some reason (mostly, to fit graphics processor in specs). The percentage of the boards, locked with software units masks is rather low and approximately equal to 5% according to our statistics. However, modding success rate for such boards is almost equal to 100% because locked units have successfully passed hardware quality testing and are locked due to marketing reasons only.
Second mode is more risky, because it allows you to force the GPU to ignore hardware mask, and activate unit even if it is marked as bad. However, statistics shows that GPU manufacturers also use hardware masking to fit some processors in specs, so you may also try your luck and attempt to activate hardware masked units. Just remember, that you do it at your own risk. Enabling hardware masked units, which have not passed hardware quality testing, may cause unpredictable results including permanent hardware damages.
Q: How can I see if my GeForce 6800 is softmoddable or not? Does the moddability depend on display adapter manufacturer?
A: No, it doesn't depend on brand. The only factor defining softmoddability success is a quality of pixel / vertex units of your GPU. Also, the chances greatly depend on software units mask, which may exist in your VGA BIOS. You may easily see if your display adapter has software units mask in VGA BIOS using RivaTuner's graphics subsystem diagnostic report module and looking at "SW units mask" line in "NVIDIA VGA BIOS information" report category. If you'll find there something different from "none" (e.g. pixel 0001b, vertex 000000b) - it means that graphics adapter's manufacturer tried to lock some graphics processor's pixel / vertex units in software. In this case, you have very high chances for successful softmod.
Otherwise VGA BIOS doesn't disable any units at software level, your graphics processor's configuration is defined by amount of hardware masked units end everything depends on their quality. If the units are locked due to physical damages - you won't be able to enable them without seeing side effects like rendering artifacts / system instability / etc.
Q: What will happen if I'll try to unlock bad pixel / vertex units? Will I see rendering artifacts?
A: It depends on 'Allow enabling masked units' option state. If it is disabled, graphics processor's logic simply will not allow you to enable damaged units. Otherwise you do may see rendering artifacts or experience system instability.
Q: I'm beginner and I never used RivaTuner before, but I'd like to try NV40 softmodding feature. Can you provide me small "how to" guide?
A: Yes. But I still strictly recommend you to read context help for all RivaTuner's options you'll be using instead of following provided guide blindly. To mod NV40 perform the following steps:
1. Run RivaTuner and look at the main tab. You'll see your current graphic processors configuration and amount of active pixel / vertex units in device status string, for example: NV40 (A1,12x1,5vp).
2. Click "Customize" button located at the right of device status string to activate device customization toolbar.
3. Click "Graphics subsystem diagnostic report" button in device customization toolbar to activate RivaTuner's diagnostic module.
4. Scroll down "Report categories" list and tick "NVIDIA VGA BIOS information" report category.
5. Click "Capture report" button in the "Report preview" window to refresh report.
6. Scroll down "Report preview" window and find "NVIDIA VGA BIOS information" manually or simply double click "NVIDIA VGA BIOS information" category name in the "Report categories" list to automatically navigate to "NVIDIA VGA BIOS information" in the "Report preview".
7. Look at line displaying "SW units mask". If you see "none" there, it means that VGA BIOS allow activating all non-hardware masked GPU pixel / vertex units, so your configuration is determined by hardware. In this case, I strictly recommend you to forget about softmodding if you are beginner and if you don't understand what do you do exactly. Power users may proceed and try to activate hardware masked units. If you see something different there (for example, pixel 0001b, vertex 000000b) - you have high chances to unlock software locked units.
8. Click "Low-level system settings" button in device customization toolbar to activate "Low-level system tweaks" panel.
9. Select "NVStrap driver" tab.
10. Press "Install" button if you never installed the driver before. If you already have it installed after the previous version of RivaTuner, ensure that you have followed RivaTuner's warning and updated driver when RivaTuner offered you to do it. If you have mistakenly ignored the warning, simply press "Reinstall" button to update the driver manually.
11. If you are a power user, if you have read the previous questions carefully and understand what does the "Allow enabling masked units" option do, and, the most important, if you understand what side effects can it cause - enable this option. Otherwise proceed with enabling software masked units only.
12. Select "Custom" in the "Active pixel/vertex units configuration" list to activate the "Customize" button, then click it to activate "Custom graphics processor configuration" dialog.
13. Tick all disabled pixel and vertex units and click "OK".
14. Reboot system when prompted.
16. Start RivaTuner and look again at your current graphics processor configuration and amount of active pixel / vertex units in device status string. If you see no changes there - the units you tried to unlock are hardware masked and you have not enabled "Allow enabling hardware masked units" option. Otherwise, if you see desired configuration, - proceed with system stability testing to ensure that unlocked units are really fully functional.
Important note for users / display adapter sellers / reviewers testing many NV4x based boards in succession: If you're experimenting with NV40 softmodding, please ensure that you've uninstalled NVStrap or set "Active pixel/vertex pipelines" to "determined by VGA BIOS" before replacing an adapter with new one. Otherwise you'll see the pixel / vertex units configuration set by NVStrap instead of hardware default configuration. If you forgot to do it before installing new adapter - simply uninstall NVStrap or click "Reset to default" button in the "Custom graphics processor configuration" dialog then reboot the PC to see hardware default configuration for new display adapter.
Q: I have 6800 NU and right after installation RivaTuner displayed 12x1,5vp configuration on the main tab. In the NVStrap tab I saw that I have pixel unit 1 and vertex unit 3 disabled, so I ticked them and restarted PC. After reboot I still see 12x1,5vp on the main tab, however NVStrap tab shows 16x1,6vp configuration. What's going on?
A: NVStrap's status bar (displayed in the upper part of Custom graphics processor configuration panel) shows you default, current and target configurations. 16x1,6vp configuration you see is the target configuration, i.e. configuration you've asked the NVStrap to set after the next reboot. The value you should look at is the current configuration, showing which pixel and vertex units are actually currently enabled. Both context help and FAQ clearly state that the units can be hardware masked, so current and target configurations can be different due to your attempts to activate hardware masked units. So if you see differences in target and current configurations after reboot and see "disabled" state near the unit you tried to enable - it is protected by hardware mask. In this case you may either try to enable it using "Allow enabling hardware masked units" or forget about softmodding, if you don't want to risk with enabling a unit, which can be potentially damaged.
Q: RivaTuner really shows changes in graphics processor's configuration on the main tab after using NVStrap, but I'd like to verify it with some other tool too. What software would you recommend?
A: First, I strictly don't recommend to use any other currently available diagnostic tool to detect an amount of active pixel / vertex units on NV40 family because all of them use hardwired info indexed by chip model only and don't reflect actual graphics processor's configuration. Info about correct pixel / vertex units detection way will be passed to Everest creators ASAP so you'll be able to use it to verify changes in future with this tool, but now I'd recommend you to use fillrate and vertex processing speed limited benchmarks. 3DMark2003 / Multitexturing fillrate test is changed drastically as soon as you alter amount of active pixel units, 3DMark2003/Vertex shader test is sensitive to vertex processing speed reflects changes as soon as you alter amount of active vertex units.
Q: I know about "SW units mask" info allowing us to tell quickly if the board have chances for softmodding or not, but I simply cannot force RivaTuner to display VGA BIOS information. Due to some reason it displays "Cannot dump NVIDIA VGA BIOS information" in diagnostic report. What's wrong?
A: It seems like you tried to play with NVStrap's or RivaTuner's internal PCI DeviceID override function, either flashed VGA BIOS, whose PCIR DeviceID doesn't match with your display adapter's one. When dumping VGA BIOS RivaTuner uses some emergency measures and doesn't display dump of VGA BIOS if the board's current PCI DeviceID doesn't match with PCI DeviceID stored in PCIR header in BIOS. To get it working, either reset all PCI DeviceID related changes you've made in RivaTuner or load RivaTuner.rtd database and set DisablePCIRCheck to 1 to disable PCIR checking emergency measure.
Q: I see "pixel 0001b, vertex 0000b" in "SW units mask" so my display adapter surely has software units mask, however NVStrap doesn't have any effect and I still cannot unlock additional units. What's wrong?
A: "SW units mask" info allows you to see if your display adapter is 100% not moddable without enabling hardware masked units, but it doesn't allow you to see if it is 100% moddable without using this option. This magic line doesn't give you any warranties, it just tells you that display adapter manufacturer tried to lock some units in software so they can be potentially unlockable. However, these units can be locked hardware masked too.
Q: I've successfully unlocked 16 pixel pipelines on my GeForce 6800 and I don't see rendering artifacts in any games, however after unlocking that I'm experiencing problems with overclocking. Both RivaTuner and the driver's control panel refuse to increase core clock even by 1MHz. Can you fix this bug?
A: There is definitively nothing to fix, and I have to disappoint you: your mod is not successful. When you change the clocks, internal clock frequency stress testing is performed by the driver, and if you cannot increase the clocks even by 1MHz it can only mean that pixel / vertex units you have unlocked are not able to work properly even at default clocks. Some online tutorials advise you to disable stress testing with "DisableClockTest" registry entry, however I strictly don't recommend you to do it. Remember, that even if you don't see visual problems in your games after softmodding, the driver detected problems in their functionality during stress test. So I don't recommend you to fool yourself and hide the problem behind disabled stress testing. You can try to boost core voltage to make the problem disappear, but remember that this operation is extremely risky and can permanently damage your hardware.
Q: I've unlocked 16 pixel pipelines on my GeForce 6800, however I see rendering artifacts? How can I get rid of them? Can voltage mod help me?
A: Unfortunately, the chances to get rid of them almost equal to zero. Rendering artifacts is an indicator of physically damaged unit.
Q: I've successfully unlocked hardware masked pixel / vertex pipelines and I don't experience any problems with system stability and rendering artifacts. I'm using Linux so I'd like to finalize NVStrap's pipeline configuration via VGA BIOS mod. Is it possible.?
A: Yes, RivaTuner's distributive includes NV40BIOSHwUnitsMaskEliminator patch script, allowing you to unlock desired hardware masked units at VGA BIOS level. If you have the NVStrap driver installed, the script will ask you which units are you about to enable so you'll be able to change any VGA BIOS image to activate either all or currently enabled pixel / vertex units only. Otherwise you'll be only able to unlock all the masked units simultaneously. Please use this script with extreme caution and install it only after testing enabled units and ensuring that all of them are 100% working.