Chief Blur Buster wrote: ↑21 Apr 2021, 06:18
Kamen Rider Blade wrote: ↑21 Apr 2021, 02:50
Since 8 kHz is the official "Upper Limit" of USB Polling based on the smallest possible Micro-Frame Packet Time Interval allowed via USB standard.
Check out my proposal:
High Definition Mouse Extensions API
This optionally decouples USB poll from sensor rate, while relaying the whole sensor rate to PC. 20KHz accurately microsecond-timestamped coordinates transmitted in batches at lower poll is possible.
Kamen Rider Blade wrote: ↑21 Apr 2021, 02:50
But given what I analyzed, we have 28 possible Whole Integer Refresh Rates that align around the integer based Micro-Frame Packets. That's 24 more than is already specified by USB IF (Implementors Forum) and Spec.
I think introducing a
HD Mouse API is a MUCH easier battle, and latency consistency would be better with microsecond sensor-side timestamps. At the 125us timescales, latency consistency becomes a more pressured factor than reducing average latency even further. (Also latency consistency = less likely to microstutter).
It's a lower lying apple with bigger benefits to end users & easier to deploy than a USB IF modification.
It does not preclude USB IF modification too, as HD Mouse API does not assume the connection is USB-based, or even synchronous.
Razer also expressed potential interest in this type of front.
Thoughts? Since you sound technically knowledgeable from the sound of your posts, I'd love your comments about refining the HD Mouse API proposal. You can reply here or in that thread.
I love your TimeStamp concept for HD Mouse API, but the issue with it is Game Developer support and getting USB IF to add it to the spec as a future feature. And then, if USB-IF only makes it "Optional", the chances of adoption go down.
Also, will Windows & Linux adopt it?
The fact that you want to make it "Optional" is the real weakness, if it's "Optional", we see how support on "optional" features have been in many game titles. Does anybody remember PhysX? nVIDIA Hair Works?
Implementation wise, I think it's fine as is since you're just presenting mouse data with a Time Stamp so that the end developer can process it in temporal FIFO order. You kept it simple, which is optimum, but making it optional is the real weak spot IMO.
And getting USB-IF to try to force this new paradigm of mouse tracking won't be easy if you want to see any significant adoption rate. I bet they'll think the current paradigm is fine and won't understand our needs for it since they don't see latency as that significant of an issue.
We're the ones pushing for fixing "Latency" issues. Regular USB folks just really care about compatibility & bandwidth.
My idea is wonky in it's own way since it adds 24 more Refresh Rate options for a total of 28 options with 3 slots for User Customizeable Polling Rates based on Integer amounts of Micro-Frame Packets. But that's the rub. I'm just creating more Polling Rate options out of the existing ones for a total of 32 slots for "Default Polling Rate" choices.
My idea doesn't bring any changes to the Game Developer side since most of the chances will be at a USB Driver level.
Yeah, there might be some bugs that arise from it since I have a wide range of polling rates, but I'm going down a different rabbit hole for USB and for different reasons.
Power Savings on certain USB devices is one of those reasons, along with different Higher Polling Rate options than the stock 4 choices we have now.
I guess we both have our different causes to fight for in the face of USB Standards =D.