feat: ddrio-async, improve performance of IO bound ddrio implementations #266

Merged
icex2 merged 6 commits from ddrio-async into master 2023-11-03 17:46:12 +03:00
6 Commits
Author SHA1 Message Date
icex2 3ec3342d64 chore(doc): Fix release process notes
Update outdated references and improve some phrasing
2023-11-03 15:34:48 +01:00
icex2 993c2f709e chore: Housekeeping, remove dead link, fix description 2023-11-03 15:34:48 +01:00
icex2 b1d2a5a2d1 chore: Remove obsolete gitlab-ci yaml
Repository is not on gitlab anymore, left over
from migration
2023-11-03 15:34:48 +01:00
icex2 3eedb2cdc4 chore: Update changelog 2023-11-03 15:34:48 +01:00
icex2 c80617b515 doc: Add info/instructions regarding ddrio-async 2023-11-03 15:34:48 +01:00
icex2 485fcd1b5d feat: ddrio-async wrapper/shim driver for async IO
Wrapper/shim library to drive another ddrio in a dedicated
IO thread. Depending on the other ddrio backend used, this
can significantly improve performance while staying
compatible to the existing ddrio API interface

This turned out to be a good solution to solve performance
problems when running MAME with ddrio-p3io that is
(currently) implemented with synchronous IO calls that are
very costly: ~12 ms for a write over the ACIO protocol, ~4 ms
for a read using an IOCTL. As this already adds up to nearly
a full frame (60 fps) regarding latency, there isn't a lot
of time left to do other stuff in a synchronous update loop.
MAME's performance was unstable and dropped all the time below
100%. The result was a choppy gameplay experience.

Combining ddrio-async with ddrio-p3io, the combined backend
is able to drive inputs/outputs at a rate of ~250hz = ~4
updates per frame. This results in an average input latency
of ~4 ms which is as good as it can get with the p3io
hardware's performance limitations that I measured (see
the 4 ms for the IOCTL mentioned above).

This is more than good enough as as update frequency of
the 573 hardware is slightly less than that (I got told
something ~180 hz?).

tl;dr: Gameplay on MAME is great, smooth frame rate, IO feels
amazing and responsive.
2023-11-03 15:33:21 +01:00