What is NVIDIA "forceSW" and why is it slow?

I’m having what seems like a driver-related problem with a GeForce 2 MX 200 running on Windows 98 SE. The GL renderer string contains the text:

GeForce2 MX 100//200/AGP/SSE/forceSW

My guess is that, somehow, this card is not running in hardware transform mode. How did that happen, and how can I fix it (ideally, programmatically, though a user procedure is also OK)?

Just a guess, this might be from the “Force software rasterization” setting in NVEmulate…

Michael

What wimmer said sounds correct, when NV30 emulation is on on my card (gf4) I find that normal operations slow down quite a bit aswell

I’m pretty sure that the machine using this card has never turned on NV30 emulation, so I doubt that’s the reason.

Originally posted by jwatte:
I’m pretty sure that the machine using this card has never turned on NV30 emulation, so I doubt that’s the reason.

Maybe you’re implicitly turning on software rendering via an extension, such as 3D Textures?

The “forceSW” in the renderer can occur under control of the NV30 Emulation tools. I think that the NVEmulate tool will display the state of this setting and turn it off. You can get it at:

http://developer.nvidia.com/view.asp?IO=nv30_emulation

The “force software” is useful for multipass algorithms where only some passes require software rendering.

I think this can also happen if something else in your system configuration is messed up and we are completely unable to initialize for hardware rendering. I haven’t run into that situation myself, and am not sure what could cause it. Hardware conflicts? Missing or bad chipset drivers? Corrupted driver install?

[This message has been edited by pbrown (edited 01-10-2003).]

Thanks for all your suggestions.

I’m pretty sure this machine has not had NV30-emulate turned on. Registry corruption or poor drivers is more likely (this is a Win98se machine) although I would be even happier if I knew what kinds of things to look for.

Btw: this machine was running version 30 drivers, and the problem did not go away when upgrading to version 40, so I doubt it’s a corrupted driver install (unless it’s some previous install whose corruption persisted).

Originally posted by wimmer:
[b]Just a guess, this might be from the “Force software rasterization” setting in NVEmulate…

Michael[/b]

jwatte, you really should try Micheals suggestion. I just tried it out to see what the big deal is. I get

Geforce2 GTS/Geforce2 Pro/AGP/SSE/forceSW

It’s not because of NV30 emulate. It’s because of Force Software Rasterization and man is it ever slow !

Maybe I wasn’t clear. This is not a card in a machine that I have direct access to. However, it is highly unlikely the machine that has this problem has had NV30Emulate installed on it (but you never know).

But, as there is some functionality in the driver to cause that to happen, perhaps a corrupted registry would cause the same thing to happen (this is on Win98SE, so the registry is not quite bulletproof :-).

Originally posted by jwatte:
Btw: this machine was running version 30 drivers,

NV Emulate wasn’t around with v30 drivers was it? Isn’t that a v40 exclusive feature? (Or did it appear in late 30?)

I did a quick search on Google to see if there was anything out there mentioning “ForceSW”. The only relevant thing I found was the following link…
http://www.delphi3d.net/hardware/viewreport.php?report=597

It’s only relevant because it contains ForceSW in the rendering string. Looking through the list of configurations in the Hardware registry, there are two that have ForceSW in their Renderer string.

I just ran the NVEmulate app on my PC and turned “Force Software” on and off and sure enough the “forceSW” appeared and disappeared in my Renderer string.

This setting appears to be controlled by this registry key…

HKEY_LOCAL_MACHINE\SOFTWARE\NVIDIA Corporation\Global\OpenGL\Debug

If the value Renderer is set to 1 (it’s a REG_DWORD) then forceSW is enabled…

Yeah, I ran that same Google query myself with no luck. Hopefully this thread will show up there for the next searcher (although we haven’t exhaustively proven what’s wrong yet).

I’m hoping someone from nVIDIA can grep through the source and figure out what would cause this condition to get set on a “regular” user machine. An authoritative answer would be great :slight_smile:

If not, we may actually have to detect this condition in our installer and tell the user what to try (re-install drivers, re-install Windows, check this registry setting, …). Sort of like the DVA=0 entry in WIN.INI which will force Microsoft Generic OpenGL if present.

I did look at the source code to be sure.

Forcing software rasterization is the main reason. Apparently, you are not hitting that, though I obviously can’t confirm that.

Secondary reason would be the inability to create the necessary resources to do hardware 3D rendering. The rendering will be fully in software. “ForceSW” is probably not the right way to describe this scenario. This would generally occur only in the cases where your system is screwed up (hardware conflicts, bad chipset drivers/systems). There are quite a few different ways things can get screwed up.

My general repetoire here is try different video drivers (e.g., try older drivers from NVIDIA’s or others’ archives), get the latest chipset drivers (a lot of chipsets have problems of one sort or another), check for hardware conflicts, and the sort.