[RELz] [Beta] New Vegas Stutter Remover

Post » Sat May 28, 2011 7:18 pm

My first attempt at an NVSE-based Stutter Remover is up on the nexus ( http://www.newvegasnexus.com/downloads/file.php?id=34832 ), named WIP1. This version is distinct from the previous version (preliminary_6c) in that it requires NVSE and (hopefully) works on unmodified installs of New Vegas (ie not requiring decryption or breaking the steam-based features).

It's totally untested at this time, and has relatively minimal features. If it seems to work right I'll try to port over a few extra improvements sometime from the Oblivion and Fallout equivalents.

Currently this is on a different version numbering scheme than Oblivion / Fallout Stutter Remover... once basic New Vegas & NVSE support seem to be stable I'll start labelling the releases with the common version numbering scheme.
User avatar
Brooks Hardison
 
Posts: 3410
Joined: Fri Sep 07, 2007 3:14 am

Post » Sat May 28, 2011 3:37 pm

This might seem like a dumb question, but considering the file description on the nexus page doesn't seem to address the NVSE version... does this just get installed on top of preliminary_6c?
User avatar
JeSsy ArEllano
 
Posts: 3369
Joined: Fri Oct 20, 2006 10:51 am

Post » Sat May 28, 2011 1:51 pm

:celebration:
User avatar
katsomaya Sanchez
 
Posts: 3368
Joined: Tue Jun 13, 2006 5:03 am

Post » Sat May 28, 2011 7:44 pm

Well, I installed it to the normal NVSE/plugins folder and it generated the ini on the first run but when I ran NV it didn't appear to be working. FPS management didn't cap the framerate and I still had the Gamebyro stutter.

Here is what was in sr_New_Vegas_Stutter_Remover.log

initialize0() running in thread f24
initialize1() running in thread f24
New Vegas version 1.1.1.271 (update 2)
console interface not found
initialize2() running in thread f24
Critical Sections mode 3 (staggered prioritization)
timeBeginPeriod: 0 -> 1

User avatar
HARDHEAD
 
Posts: 3499
Joined: Sun Aug 19, 2007 5:49 am

Post » Sat May 28, 2011 2:00 pm

After some initial testing (basically just running around Freeside), I can say that I still notice a bit of micro stutter, but it is lessened to some degree. And I do have bFix64Hertz set to 1.

I really don't know if that means that it's working, or if my game just wants to be less prone to stutter today.

I can't wait until you get the other features up and running though.
User avatar
Jacob Phillips
 
Posts: 3430
Joined: Tue Aug 14, 2007 9:46 am

Post » Sat May 28, 2011 6:10 pm

A couple problems I noted:
1. It seems to be detecting my game version as "1.1.1.271 (update2)" although Im running 1.2.0.285 (the latest).
2. Im also getting a crash on exit, which could possibly be related.

Anyways, Ive used this for oblivion and fallout3, and Im glad to see it being worked on for NV :).
User avatar
Stephanie I
 
Posts: 3357
Joined: Thu Apr 05, 2007 3:28 pm

Post » Sat May 28, 2011 2:25 pm

It sounds like it's detecting the wrong version, and therefore none of its hooks work. The only possible improvement available without any hooks is the timeBeginPeriod() call, and that won't do much if anything.
But... I don't think it's my bug. I think NVSE is reporting the wrong version. Not sure what to do atm, talking to NVSE devs atm, will post back later.
User avatar
Harry-James Payne
 
Posts: 3464
Joined: Wed May 09, 2007 6:58 am

Post » Sat May 28, 2011 11:48 pm

New NVSE version, may fix the issue:
http://nvse.silverlock.org/beta/nvse_1_beta5.zip

To use the dll in WIP1.zip, put it in Data/NVSE/plugins and then launch New Vegas according to the NVSE directions.
User avatar
JeSsy ArEllano
 
Posts: 3369
Joined: Fri Oct 20, 2006 10:51 am

Post » Sun May 29, 2011 2:00 am

After updating NVSE from beta 4 to 5, I can confirm that it works now. I'm experiencing no stutter.

Once again, thank you. I can't wait to see the other features of it come into play, especially Heap Replacement and Critical Sections (if CS isn't implemented already).
User avatar
D LOpez
 
Posts: 3434
Joined: Sat Aug 25, 2007 12:30 pm

Post » Sat May 28, 2011 11:54 pm

Ah, that works great. Thanks again Skyranger. :foodndrink:
User avatar
Alada Vaginah
 
Posts: 3368
Joined: Sun Jun 25, 2006 8:31 pm

Post » Sun May 29, 2011 2:10 am

Thanks a bunch Skyranger, you've improved my game, as always. Hope you get the other features up and running soon.
User avatar
james reed
 
Posts: 3371
Joined: Tue Sep 18, 2007 12:18 am

Post » Sat May 28, 2011 12:48 pm

I'd just like to thank the NVSE devs here, as they got out a new NVSE release fixing the issue effecting WIP 1 very shortly after I notified them of the issue.
User avatar
Mélida Brunet
 
Posts: 3440
Joined: Thu Mar 29, 2007 2:45 am

Post » Sat May 28, 2011 11:01 pm

For some reason, I don't see any effect of the stutter remover.
That is, according to FRAPS the FPS are stuck at 60, instead of 30 as in the ini.
I'm running the beta5 of NVSE and put the stutter remover .dll into the indicated directory.
It did also create a ini there, so I guess it got initialized.

Also, here's the output of the log file:
initialize0() running in thread fd0initialize1() running in thread fd0New Vegas version 1.2.0.285 (update 3)console interface not foundinitialize2() running in thread fd0Critical Sections mode 3 (staggered prioritization)timeBeginPeriod: 0 -> 1Improved_GetTickCount seems to be workingthead 0264 assigned PT 05024470, serial# 1thead 0C4C assigned PT 050244A8, serial# 2thead 0FD0 assigned PT 050244E0, serial# 3thead 12A4 assigned PT 05024518, serial# 4thead 1258 assigned PT 05024550, serial# 5thead 0D5C assigned PT 05024588, serial# 6timeEndPeriod: 1 -> 0


Only reason I can think of is that I'm running a slightly modified exe - no crack, only to enable gore and get NVSE working, I'm unfortunately stuck with a no-gore version here...
User avatar
Chrissie Pillinger
 
Posts: 3464
Joined: Fri Jun 16, 2006 3:26 am

Post » Sat May 28, 2011 1:28 pm

El Zoido:
My guess is that it is working, just not helping enough to really notice.
The FPS management code does not work on F:NV yet. Only the 64 Hertz Fix and the Critical Sections stuff works on F:NV at this time.
The 64 Hertz Fix helps pretty much everyone, but it's subtle enough that some people don't notice. I didn't notice the effect on Oblivion, though I did on Fallout 3.
The Critical Sections stuff... I have no actual data on how FalloutNV behaves at runtime so the configuration used is very general. Plus, this version uses a a variation that preliminary reports suggest may not be working as well as well as I had hoped.
edit: You may also have sources of stutter besides the usual ones due to mods, drivers, or whatever, that this might not be able to help.
User avatar
kasia
 
Posts: 3427
Joined: Sun Jun 18, 2006 10:46 pm

Post » Sun May 29, 2011 2:17 am

The FPS management code does not work on F:NV yet.


Ok, so thats the reason then!
Actually it was the main reason I wanted to use SR, as it makes my PC (or mostly graphics card) run much quieter ;)
Well, guess I have to wait a bit longer.

Thanks for your great work by the way, really appreciated it on FO3!
User avatar
Emily Graham
 
Posts: 3447
Joined: Sat Jul 22, 2006 11:34 am

Post » Sat May 28, 2011 3:02 pm

Hey could someone post or send me some NVSR log files with critical section profiling and messages enabled? For either a long game session or a short session that includes some major source of stuttering?

Whenever I get around to doing the next version I'm going to need some data to figure out what the default critical section overrides should be.
User avatar
Nienna garcia
 
Posts: 3407
Joined: Wed Apr 25, 2007 3:23 am

Post » Sat May 28, 2011 6:02 pm

Here's a log http://sharebee.com/ef1b6786
User avatar
adam holden
 
Posts: 3339
Joined: Tue Jun 19, 2007 9:34 pm

Post » Sun May 29, 2011 2:57 am

Thanks, that's a nice looking log file. I'll post an alternate SR .ini file here based upon that soon, hopefully it will improve things noticeably.

That appears to be a log for a 2 hour game session with significant levels of CS-related visible stutter.

There's a pair of CSes causing problems that appear to correspond to the Renderer+0x180 and Renderer+0x080 CSes from Oblivion & Fallout3. If F:NV is similar to Oblivion & FO3 then one or both of these CSes can be simply suppressed without causing much or any instability for most people, reducing stutter. These were involved in a *massive* stutter about half an hour in to the game, in which 3 seconds passed with at most a single frame getting drawn.

There's an *extremely* contended CS, causing a little stutter and probably some non-stuttery FPS losses as well. It probably needs to stay in Mode 3. Maybe tweaking its spincount on it could help a little.

There's 2 (or more?) closely related CSes causing a bit of stutter. They were completely (or almost completely?) inactive for the first 8 minutes of that game session... possibly only active in exteriors or interiors or something.

And one last thing stands out... the game was continually creating new threads for the whole game session. Not quickly, but fast enough that the Stutter Remover itself would probably have caused a crash if the game session had gone on for 4 or 5 hours instead of just 2.

Based upon that, the recommended .ini file for F:NV 1.2.0.285 is now:
Spoiler
Master = {	_comment = Only a few things work in New Vegas so far:	_comment = A: bFix64Hertz	_comment = B: bHookCriticalSections (and everything in CriticalSections, and overrides for critical sections)	_comment = C: and basics like iSchedulingResolution, bFlushLog, etc	bManageFPS = 0	bHookCriticalSections = 1	bHookHashtables = 0	bReplaceHeap = 0	bLogToConsole = 0	bFix64Hertz = 1	bFlushLog = 1	iSchedulingResolution = 1	bExtraProfiling = 0	bExperimentalStuff = 0	iMainHookPoint = 1}CriticalSections = {	_comment = CS stuff helps both Oblivion and Fallout significantly	_comment = most of the benefit comes from the Renderer+0x180 suppression (see overrides below)	_comment = modes: 1=vanilla, 2=fair, 3=stuttering, 5=suppressed, 6=prioritize-main-thread, 7=deprioritize-main-thread	bEnableProfiling = 0	bEnableMessages = 0	bUseOverrides = 1	iDefaultMode = 2	iDefaultSpin = 1000	iStaggerLevel = 4}OverrideList = {	CriticalSection = {		CallerAddress = 0xA5D129		comment = Renderer+0x180 (F:NV version 1.2.0.285)		comment = rare contention, massive delays during contention		comment = probably a major source of stutter		comment = based upon Oblivions behavior, suppressing this may not cause any instability		comment = recommendation: Mode 5 (suppress)		comment = if instability results then try Mode 2 instead		Mode = 5	}	CriticalSection = {		CallerAddress = 0xA5D117		comment = Renderer+0x080 (F:NV version 1.2.0.285)		comment = high contention, significant delays during contention		comment = probably a moderate source of stutter		comment = based upon Oblivions behavior, suppressing this may cause just a tiny bit of instability, or instability for only some computers		comment = recommendation: Mode 2 for stability, Mode 5 for performance		Mode = 2	}	CriticalSection = {		ObjectAddress = 0x11EAFC8		comment = unknown CS (F:NV version 1.2.0.285)		comment = massive contention, but very short delays during contention		comment = probably produces a little stutter and causes a loss of FPS		comment = recommendation: Mode 3, may also want to tweak Spin up or down?		Mode = 3		Spin = 1000	}	CriticalSection = {		CallerAddress = 0x6805A1		comment = multiple unknown CSes (F:NV version 1.2.0.285)		comment = medium contention		comment = these CSes add up to some stutter		comment = CS objects are at 0x11D5160 & 0x11CD884, possibly others as well		comment = possibly only active in some regions?  interiors/exteriors?		comment = recommendation: maybe Mode 2 or 3 or 6 ?		Mode = 2	}	CriticalSection = {		ObjectAddress = 0x53090C0		comment = unknown CS (F:NV version 1.2.0.285)		comment = medium-low contention		comment = recommendation: Mode 3		Mode = 3	}}

The changes are:
1. I removed some sections relating to things that aren't implemented on the F:NV version of Stutter Remover yet, just to make this shorter.
2. I changed the default critical section mode from 3 to 2. Reports from Oblivion suggest that 2 may be better for the default mode.
3. I added CS overrides based up that log file.
User avatar
alicia hillier
 
Posts: 3387
Joined: Tue Feb 06, 2007 2:57 am

Post » Sat May 28, 2011 11:38 pm

Glad to be of help. I've updated my ini to match yours (but with messages and profiling enabled) and I'll give ya another log next time I play.
User avatar
Rebecca Clare Smith
 
Posts: 3508
Joined: Fri Aug 04, 2006 4:13 pm

Post » Sat May 28, 2011 4:28 pm

I changed my ini to your new preset and enabled profiling, will send a log when i have a longer game-session again, but the next 4 weeks there is lots of work for me to do, so i won't have that much spare time to play FNV.
User avatar
Sakura Haruno
 
Posts: 3446
Joined: Sat Aug 26, 2006 7:23 pm

Post » Sat May 28, 2011 3:46 pm

Here's one from me as well.

http://sharebee.com/32def51d
User avatar
Veronica Flores
 
Posts: 3308
Joined: Mon Sep 11, 2006 5:26 pm

Post » Sat May 28, 2011 12:48 pm

Here's a log file, generated after a long session with some significant stutter.

http://sharebee.com/c8911f91

It's based on your latest INI, with CriticalSections profiling and messages turned on.
User avatar
Tiffany Castillo
 
Posts: 3429
Joined: Mon Oct 22, 2007 7:09 am

Post » Sat May 28, 2011 6:44 pm

Thanks, that's about all the logs I need at the moment (at least for version 1.2.0.285... if anyone wants CS overrides for another version I'll need a log for each version supported, though short logs should suffice for adapting the overrides to other versions). I'll post again in a bit after I finish looking over the logs.
User avatar
Phoenix Draven
 
Posts: 3443
Joined: Thu Jun 29, 2006 3:50 am

Post » Sat May 28, 2011 11:21 am

Here's one from me as well.

http://sharebee.com/32def51d

50 minute log file, version 1.2.0.285, very similar to Space Oden's log. Basically the same critical sections causing basically the same problems. Similar amounts of overall stutter, but no outright pauses this time. Thread creation was even faster over time, like 60% faster maybe. Also a generally greater rate of overall CS blocking, maybe 80% higher. But the ratios of activity between CSes is overall very similar to 1st log.

Here's a log file, generated after a long session with some significant stutter.

http://sharebee.com/c8911f91

It's based on your latest INI, with CriticalSections profiling and messages turned on.

Very different. Version 1.2.0.285, using the new .ini file, it seems to have recognized most or all of the critical sections and applied the overrides without problems. The log is 2.5 hours long, so I guess there must not have been any stability issues caused by the new .ini. On a dual-core. Did the new .ini reduce stutter noticeably?

A CS @ 0xE000A98 as identified as a major source of blocking... but it seems that 99% of that blocking did not involve the main thread, so probably wasn't visible, and 99% occurred in a single 20 second period about 50 minutes in to the game session. Dunno wtf to make of that.

A CS @ 0x11CD884 (which is part of a group of closely related CSes) caused a little stutter in the previous logs, but in yours it caused an outright pause - five and a half seconds without even a single frame going by, about half an hour in to the game. Plus I think like 2 small stutters. But that was about it for the whole 2.5 hour game session. It's already on mode 2, which is what looks likely to be best for that. Dunno what else to do about that, except maybe look through the disassembly of the function using it to see what is going on there.

The massively active CS mostly just caused slower FPSes for the previous logs, on yours it produces some actual stutter, though not a lot.

Overall though it looks like a lot less CS-related stutter than the previous 2 logs. Which doesn't necessarily mean less stutter, as I'm only seeing CS-related stuff here, and not even 100% of that. Relatively high CS blocking rates, relatively low thread creation rates.

A few final notes:
Stutter Remover creates/keeps per-thread data any time it detects a new thread, but does not detect thread deletion, and has a maximum number of threads it's willing to track, so if the program dynamically creates threads over time SR will eventually die... wasn't an issue in Oblivion or FO3 but it appears to be an issue in F:NV. The current version of SR will likely crash shortly after F:NVs creates its 128th thread. Which the 1st log would have reached that... not that many minutes after he quit, around 2.5 hours. The 2nd log would have reached that around 1.5 hours. And the 3rd log would have reached that around 4 hours.
At the least I'll double that limit in the next SR release. I may look at allowing SR to notice thread deletion, or increase the limit to larger amounts, but assuming it only gets doubled then SR will still have an issue producing an increasing chance of causing a crash in very long game sessions.

And, if you want more stutter reduction, you can probably change Renderer+0x080 from Mode 2 to Mode 5, though in prior gamebryo games some people saw crashes with that setting.
User avatar
John Moore
 
Posts: 3294
Joined: Sun Jun 10, 2007 8:18 am

Post » Sat May 28, 2011 12:32 pm

I have noticed more ctd's since I started using the stutter remover, but only after very long sessions of course. I think you're right about this thread overload thing. Anyway, http://sharebee.com/3e39e3a5
User avatar
Glu Glu
 
Posts: 3352
Joined: Sun Apr 01, 2007 5:39 am

Next

Return to Fallout: New Vegas