Windows 11 July 2023 Update: Reduces Game Stutter
Click here to post a comment for Windows 11 July 2023 Update: Reduces Game Stutter on our message forum
cpy2
So 1000Hz and above can enjoy better smoothness?
Timur Born
Astyanax
Timur Born
But?
Astyanax
Alessio1989
USB input devices with polling rate above 125Hz are a thing since over a decade (maybe 2s?), it's a shame that Microsoft still hasn't fix issues about this. Well it took 15 years to fix it into microsoft office.... Maybe we should not be surprised at all..
Timur Born
Astyanax
https://forums.guru3d.com/threads/input-lag-issue-usb-xhci-driver-inner-workings.447496/
USB is only polling based over the usb bus, beyond the bus at the controller to xapic, it is interrupt driven.
Positional updates are also implemented as an SWI (rather than wired).
So the drivers labelled USB*.sys operate as a message signal (polled) and are communicated through to the *hci.sys which then becomes a hardware interrupt, via either legacy pin (1-2.x) or MSI (3.x)
Windows 8 and later already added some major optimizations to the *hci drivers to minimize interrupt storms on particular device usages, for instance there are a few games that paired with an xbox controller using the native xinput stack, hit heavy cpu utilisation as vibration commands are not throttled (ie, the developer was stupid and constantly sent down zero'd actuator commands to the device and overloaded the cpu, in windows 7 this would demonstrate a fps hit and high System process usage on a usb 2 controller, and just low fps on a usb 3 controller.
The same app on windows 8+ does not experience this either issue.
Timur Born
But with data only arriving at 1000 Hz I would also expect interrupts to only happen at that period anyway (ignoring other USB devices). Either there is a new positional message or there is not?! And you cannot "coalesce" positional messages either, because that would cause corresponding jitter.
Astyanax
https://www.overclock.net/threads/usb-polling-precision.1550666/
A great write up for things is in this thread here Timur Born
VaultDweller
O.K hang on if they are doing interrupt moderation what is to stop a whole lot of messages getting bundled up and sent as one causing a noticeable delay between action and reaction? It does sound as if there is the possibility for mouse moments to be dropped in transit in order to reduce interrupts.
Astyanax
VaultDweller
But if you have a fixed poling rate how do you do this, fixed denotes that they only way to bundle these things up would either ignore so many polls or delay those poles being reported, ignoring polls effectively reduces the number of polls and would make the mouse less responsive. Coalescing the data and feeding it through in packets could result in actions and results being either delayed or completely out of sync.
In short it effectively sounds like Microsoft has unilaterally decided that everyone no matter how much they have spent to buy a gaming mouse to gain an advantage will be limited to the same experience - that of one of Microsofts desktop office mice...
With all that Microsoft is doing with OneUI it sounds like they are trying to force us eventually to OneHardware.
These sort of decisions are literally Microsoft cutting their own throat.
This was the response of a friend of mine.
"Nice of Microsoft to assume the PC gaming performance required to handle a 1000Hz polling rate is limited to that of a Surface laptop.
This is another reason why continually working towards improving the gaming experience in Linux is so important.
BTW, I’m thinking to replace Windows 10 on my other PC with a Linux distribution.
I’ll keep a version of Windows on the main PC only for certain titles that won’t run or run well on Linux. "
Timur Born
I did a rough comparison of ISR + DPC calls of Wdf01000.sys while moving a mouse at 1000 Hz before and after the update.
Even before the update the combined count of ISRs + DPCs is only a few hundred (around 300-400) per second for 1000 Hz mouse-movement.
After the update I don't see any considerable change in that number. If it is lower then not by an amount considerable enough to be easily measurable.
So whatever changed, it seems to be a different change than this. I also wonder what exactly is meant by "background listeners" which is emphasized so prominently in the changelog.
Timur Born
Post on the Blur Busters forum:
Alessio1989
what a shit fix :V
does this affect wndproc only or even if polling directly the HID device for raw data?
Timur Born
You'd have to ask the developer I guess. From what I understand the mouse is still polled at full rate and then the full rate messages are sent to the foreground gaming process. But "listeners" of "background" processes get the capped/coalesced number of messages instead.
Alessio1989
all this makes me regret DirectInput..
Timur Born
Well, many small messages in short time-frame have always been a problem for computers. Even the very slow MIDI protocol still suffers from it as do SSDs. Bandwidth isn't everything and that stuff has to be processed in time. So capping/coalescing mouse-input for background processes doesn't seem like the worst idea.
What I don't like is how high frequency mouse-polling seems to be more about fixing the symptoms of a problem (like jitter) instead of fixing the cause (how can *fixed* polling cause noticeable jitter in the first place?).