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.
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
dlls += ddrio-async
|
||||
|
||||
ldflags_ddrio-async:= \
|
||||
|
||||
libs_ddrio-async := \
|
||||
util \
|
||||
|
||||
src_ddrio-async := \
|
||||
ddrio.c \
|
||||
Reference in New Issue
Block a user